Условие в запросе
19.05.2011
15:17
#1
"Подскажите как правильно прописать условие чтобы выбирались проводки по интересуемымданным: СчетДт , СчетКт , контрагент-----выбираются пользователем на форме,
Запрос.Текст = "ВЫБРАТЬ
| ХозрасчетныйДвиженияССубконто.Период,
| ХозрасчетныйДвиженияССубконто.Регистратор КАК Документ,
| ХозрасчетныйДвиженияССубконто.НомерСтроки,
| ХозрасчетныйДвиженияССубконто.Активность,
| ХозрасчетныйДвиженияССубконто.СчетДт,
| ХозрасчетныйДвиженияССубконто.СубконтоДт1,
| ХозрасчетныйДвиженияССубконто.СчетКт,
| ХозрасчетныйДвиженияССубконто.СубконтоКт1,
| ХозрасчетныйДвиженияССубконто.Организация,
| ХозрасчетныйДвиженияССубконто.ВалютаДт,
| ХозрасчетныйДвиженияССубконто.ВалютаКт,
| ХозрасчетныйДвиженияССубконто.Сумма,
| ХозрасчетныйДвиженияССубконто.ВалютнаяСуммаДт,
| ХозрасчетныйДвиженияССубконто.ВалютнаяСуммаКт,
| ХозрасчетныйДвиженияССубконто.Содержание,
| ХозрасчетныйДвиженияССубконто.Регистратор.Контрагент
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(&Дата1, &Дата2, Организация В (&Организация), , ) КАК ХозрасчетныйДвиженияССубконто
|ГДЕ
| (ХозрасчетныйДвиженияССубконто.Регистратор.Контрагент = &Контрагент
| И (ХозрасчетныйДвиженияССубконто.СчетДт = &СчетДт
| ИЛИ ХозрасчетныйДвиженияССубконто.СчетКт = &СчетКт))";
Запрос.УстановитьПараметр("Дата1",НачалоДня(НачПериода));
Запрос.УстановитьПараметр("Дата2",КонецДня(КонПериода));
Запрос.УстановитьПараметр("Организация",Организация);
Запрос.УстановитьПараметр("СчетДт",СчДт);
Запрос.УстановитьПараметр("СчетКт",СчКт);
сформировала запросик, но в отчет выводятся проводки с другими счетами, смотрю через отладчик----если мы выбрали только счетКт, а СчетДт---у нас пустой , то пошли проводки с пустым СчетДт и проводки с выбранным нами СчетКт, надо прописать чтобы отчет формировался если хоть один из условий выбран."
Запрос.Текст = "ВЫБРАТЬ
| ХозрасчетныйДвиженияССубконто.Период,
| ХозрасчетныйДвиженияССубконто.Регистратор КАК Документ,
| ХозрасчетныйДвиженияССубконто.НомерСтроки,
| ХозрасчетныйДвиженияССубконто.Активность,
| ХозрасчетныйДвиженияССубконто.СчетДт,
| ХозрасчетныйДвиженияССубконто.СубконтоДт1,
| ХозрасчетныйДвиженияССубконто.СчетКт,
| ХозрасчетныйДвиженияССубконто.СубконтоКт1,
| ХозрасчетныйДвиженияССубконто.Организация,
| ХозрасчетныйДвиженияССубконто.ВалютаДт,
| ХозрасчетныйДвиженияССубконто.ВалютаКт,
| ХозрасчетныйДвиженияССубконто.Сумма,
| ХозрасчетныйДвиженияССубконто.ВалютнаяСуммаДт,
| ХозрасчетныйДвиженияССубконто.ВалютнаяСуммаКт,
| ХозрасчетныйДвиженияССубконто.Содержание,
| ХозрасчетныйДвиженияССубконто.Регистратор.Контрагент
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(&Дата1, &Дата2, Организация В (&Организация), , ) КАК ХозрасчетныйДвиженияССубконто
|ГДЕ
| (ХозрасчетныйДвиженияССубконто.Регистратор.Контрагент = &Контрагент
| И (ХозрасчетныйДвиженияССубконто.СчетДт = &СчетДт
| ИЛИ ХозрасчетныйДвиженияССубконто.СчетКт = &СчетКт))";
Запрос.УстановитьПараметр("Дата1",НачалоДня(НачПериода));
Запрос.УстановитьПараметр("Дата2",КонецДня(КонПериода));
Запрос.УстановитьПараметр("Организация",Организация);
Запрос.УстановитьПараметр("СчетДт",СчДт);
Запрос.УстановитьПараметр("СчетКт",СчКт);
сформировала запросик, но в отчет выводятся проводки с другими счетами, смотрю через отладчик----если мы выбрали только счетКт, а СчетДт---у нас пустой , то пошли проводки с пустым СчетДт и проводки с выбранным нами СчетКт, надо прописать чтобы отчет формировался если хоть один из условий выбран."
19.05.2011
16:00
#2
Либо формировать текст запроса программно, либо использовать конструкцию "Выбор Когда ... Тогда ...", что-то типа:
И (ВЫБОР
КОГДА &СчетДт = &ПустойСчет
ТОГДА ЛОЖЬ
ИНАЧЕ ХозрасчетныйДвиженияССубконто.СчетДт = &СчетДт
КОНЕЦ
ИЛИ ВЫБОР
КОГДА &СчетКт = &ПустойСчет
ТОГДА ЛОЖЬ
ИНАЧЕ ХозрасчетныйДвиженияССубконто.СчетКт = &СчетКт
КОНЕЦ)
19.05.2011
17:38
#3
"Спасибо, с таким условием все получилось, добавила Запрос.УстановитьПараметр("ПустойСчет", ПланыСчетов.Хозрасчетный.ПустаяСсылка());
Запрос.УстановитьПараметр("ПустойКонтрагент",Справочники.Контрагенты.ПустаяСсылка());
и все работает.
Встала новая закавырка, как в макете прописать период, если у меня на форме имеются 2 даты, НачПериода и КонПериода."
Запрос.УстановитьПараметр("ПустойКонтрагент",Справочники.Контрагенты.ПустаяСсылка());
и все работает.
Встала новая закавырка, как в макете прописать период, если у меня на форме имеются 2 даты, НачПериода и КонПериода."
19.05.2011
17:54
#4
"Судя по всему вы делаете отчет на основании Компоновщика. Если так, то я знаю 2 пути:
1. Грубый, но самостоятельный:
(наверняка можно красивше, но было лень разбираться)
2. Используя типовые модули:
&"
1. Грубый, но самостоятельный:
Для Каждого Парам Из ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы Цикл
Если Строка(Парам.Параметр) = "НачалоПериода" Тогда
Парам.Значение = НачалоПериода;
ИначеЕсли Строка(Парам.Параметр) = "КонецПериода" Тогда
Парам.Значение = КонецПериода;
КонецЕсли;
КонецЦикла;
(наверняка можно красивше, но было лень разбираться)
2. Используя типовые модули:
ТиповыеОтчеты.УстановитьПараметр(ЭтотОбъект.КомпоновщикНастроек, "НачалоПериода", НачалоПериода);
ТиповыеОтчеты.УстановитьПараметр(ЭтотОбъект.КомпоновщикНастроек, "КонецПериода", КонецПериода);
&"
Читают тему
(гостей: 1)