Имя: Пароль:
1C
1C 7.7
v7: Можно проверку провести в запросе?
0 Масянька
 
01.11.12
15:20
День добрый!

Есть запрос:

   Если ДокументыРеализации = 1 Тогда
       ИмяДокумента = "ЗаявкаПокупателя";
   Иначе
       ИмяДокумента = "Реализация";
   КонецЕсли;
   
   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса = "//{{ЗАПРОС(ПредСписание)
   |ОбрабатыватьДокументы Проведенные;
   |Период с ДатаНачала по ДатаОкончания;
   |ТекДок            = Документ." + ИмяДокумента + ".ТекущийДокумент;
   |Номенклатура    = Документ." + ИмяДокумента + ".Номенклатура;
   |Контрагент    = Документ." + ИмяДокумента + ".Контрагент;
   |КолВо            = Документ." + ИмяДокумента + ".Количество;
   |СуммаПр        = Документ." + ИмяДокумента + ".Сумма;";
   
   Если (ВыводитьДокументы = 1) Тогда
       ТекстЗапроса = ТекстЗапроса + "
       |Группировка ТекДок;";
   КонецЕсли;
   
   ТекстЗапроса = ТекстЗапроса + "
   |Группировка Номенклатура Упорядочить По Номенклатура.Наименование без групп;
   |Функция ВсегоСумма = Сумма(СуммаПр);
   |Функция ВсегоКолВо    = Сумма(КолВо);
   |Условие (Контрагент в ВыбКонтрагент);
   |Функция КолВоЗаписей = Счётчик();";
   
   Если ТипНоменклатуры = 1 Тогда
       ВидНоменклатурыДляЗапроса = Перечисление.ВидыНоменклатуры.Прочее;
       ТекстЗапроса = ТекстЗапроса + "Условие (Номенклатура.ВидНоменклатуры = ВидНоменклатурыДляЗапроса);";
   ИначеЕсли ТипНоменклатуры = 2 Тогда
       ВидНоменклатурыДляЗапроса = Перечисление.ВидыНоменклатуры.Услуга;
       ТекстЗапроса = ТекстЗапроса + "Условие (Номенклатура.ВидНоменклатуры = ВидНоменклатурыДляЗапроса);";
   КонецЕсли;


Можно как-то запихнуть такую проверку в запрос:

Функция ПроверкаДатыРеализации(ТекДок)

   ПопадаетВПериод = 0;
   
   ДокПодчиненные = СоздатьОбъект("Документ");
   
   Если ДокПодчиненные.ВыбратьПодчиненныеДокументы(,,ТекДок) = 1 Тогда
       Пока (ДокПодчиненные.ПолучитьДокумент() = 1) Цикл
           Если (Найти(СокрЛП(ДокПодчиненные.Вид()), "Реализация") = 1) Тогда            // есть реализация
               ДатаРеализации = ДокПодчиненные.ДатаДок;
               Если (ДатаРеализации <= ДатаОкончания) Тогда
                   ПопадаетВПериод = 1;
               КонецЕсли;
           КонецЕсли;
       КонецЦикла;
   КонецЕсли;
   
   Возврат ПопадаетВПериод;
   
КонецФункции // ПроверкаДатыРеализации


ТиС 932
1 aka MIK
 
01.11.12
15:25
Можно, ставь условие

Условие (ПроверкаДатыРеализации(Запрос.ТекДок)=1)
2 Масянька
 
01.11.12
15:28
Огромное спасибо, умный человек!!!!!!

То бишь, в принципе, можно к любой функции обращаться в запросе?