Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 10:34

Параметры в запросе

Автор Новенькая, 17 мар 2012, 23:36

0 Пользователей и 1 гость просматривают эту тему.

Новенькая

Здравствуйте! Помогите, пожалуйста, разобраться! Есть запрос:
           Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |   ХозрасчетныйОстатки.СуммаОстаток КАК СуммаВРублях,
                  |   ХозрасчетныйОстатки.ВалютнаяСуммаОстаток КАК СуммаВВалюте
                  |ИЗ
                  |   РегистрБухгалтерии.Хозрасчетный.Остатки(
                  |         &Период,
                  |         Счет = &Счет,
                  |         &ВидыСубконто,
                  |         Субконто1 В (&Субконто1)   
                  |            И Субконто2 В (&Субконто2)
                  |            И Субконто3 = &Субконто3) КАК ХозрасчетныйОстатки";
   
               
          СписокСубконто = Новый Массив;
   
   Для Каждого ВидСубконто Из Счет.ВидыСубконто Цикл
   СписокСубконто.Добавить(ВидСубконто.ВидСубконто);
   КонецЦикла;

   Запрос.УстановитьПараметр("Период", Дата);
   Запрос.УстановитьПараметр("Счет", Счет);
   Запрос.УстановитьПараметр("ВидыСубконто", СписокСубконто);
   Запрос.УстановитьПараметр("Субконто1", Субконто1);
   Запрос.УстановитьПараметр("Субконто2", Субконто2);
   Запрос.УстановитьПараметр("Субконто3", Субконто3);
   
   РезЗапроса = Запрос.Выполнить().Выбрать();

но он не выводит значение, если хотя бы 1 из 3 параметров субконто пустой.....как исключить условие, если параметр пустой???

pyrkin_vanya

Если параметр пустой то что? Что делать надо?

1Cnastroika

Можно к тексту запроса добавлять условие по субконто только, если субконто заполнено. Приблизительно так:

Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |   ХозрасчетныйОстатки.СуммаОстаток КАК СуммаВРублях,
                  |   ХозрасчетныйОстатки.ВалютнаяСуммаОстаток КАК СуммаВВалюте
                  |ИЗ
                  |   РегистрБухгалтерии.Хозрасчетный.Остатки(
                  |         &Период,
                  |         Счет = &Счет,
                  |         &ВидыСубконто,"
флДобавлен = Ложь;
Если ЗначениеЗаполнено(Субконто1) Тогда
    ТекстЗапроса = ТекстЗапроса + " Субконто1 В (&Субконто1)";
    флДобавлен = Истина;
КонецЕсли;

Если ЗначениеЗаполнено(Субконто2) Тогда
   Если флДобавлен = Истина Тогда
         ТекстЗапроса = ТекстЗапроса + " И ";
   КонецЕсли;

   ТекстЗапроса = ТекстЗапроса + " Субконто2 В (&Субконто2)";
    флДобавлен = Истина;
КонецЕсли;

Если ЗначениеЗаполнено(Субконто3) Тогда
   Если флДобавлен = Истина Тогда
         ТекстЗапроса = ТекстЗапроса + " И ";
   КонецЕсли;

   ТекстЗапроса = ТекстЗапроса + " Субконто3 = &Субконто3)";
КонецЕсли;

ТекстЗапроса = ТекстЗапроса + "  ) КАК ХозрасчетныйОстатки";

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск