Имя: Пароль:
1C
1С v8
УТ11: Непонятен Запрос "Выборка.Количество = 0"
0 GrayT
 
04.06.13
17:32
Вот кусок типовой УТ11.0
Функция СформироватьВременнуюТаблицуНачальныеГраницыРасчетовСКлиентами(МенеджерВременныхТаблиц, АналитикаУчетаПоПартнерам)
   
   ТекстЗапроса = "
   //|ВЫБРАТЬ
   //|    ПроведениеПоРасчетамСКлиентами.Период КАК Период,
   //|    ПроведениеПоРасчетамСКлиентами.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам
   //|ПОМЕСТИТЬ ДанныеПоследовательности
   //|ИЗ
   //|    Последовательность.ПроведениеПоРасчетамСКлиентами КАК ПроведениеПоРасчетамСКлиентами
   //|ГДЕ
   //|    &НеИспользоватьОтборПоАналитикеУчетаПоПартнерам
   //|        ИЛИ ПроведениеПоРасчетамСКлиентами.АналитикаУчетаПоПартнерам В (&АналитикаУчетаПоПартнерам)
   //|
   //|ОБЪЕДИНИТЬ ВСЕ
   //|
   //|ВЫБРАТЬ
   //|    ПроведениеПоРасчетамСКлиентамиГраница.Период КАК Период,
   //|    ПроведениеПоРасчетамСКлиентамиГраница.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам
   //|ИЗ
   //|    Последовательность.ПроведениеПоРасчетамСКлиентами.Граница КАК ПроведениеПоРасчетамСКлиентамиГраница
   //|
   //|    ЛЕВОЕ СОЕДИНЕНИЕ
   //|        Последовательность.ПроведениеПоРасчетамСКлиентами КАК ПроведениеПоРасчетамСКлиентами
   //|    ПО
   //|        ПроведениеПоРасчетамСКлиентамиГраница.АналитикаУчетаПоПартнерам = ПроведениеПоРасчетамСКлиентами.АналитикаУчетаПоПартнерам
   //|
   //|ГДЕ
   //|    ПроведениеПоРасчетамСКлиентами.АналитикаУчетаПоПартнерам ЕСТЬ NULL
   //|    И (&НеИспользоватьОтборПоАналитикеУчетаПоПартнерам
   //|        ИЛИ ПроведениеПоРасчетамСКлиентамиГраница.АналитикаУчетаПоПартнерам В (&АналитикаУчетаПоПартнерам))
   //|
   //
   |ВЫБРАТЬ
   |    ПроведениеПоРасчетамСКлиентами.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
   |    МИНИМУМ(ПроведениеПоРасчетамСКлиентами.Период) КАК Период
   |ПОМЕСТИТЬ НачальныеДвижения
   |ИЗ
   |    Последовательность.ПроведениеПоРасчетамСКлиентами КАК ПроведениеПоРасчетамСКлиентами
   |ГДЕ
   |    &НеИспользоватьОтборПоАналитикеУчетаПоПартнерам
   |        ИЛИ ПроведениеПоРасчетамСКлиентами.АналитикаУчетаПоПартнерам В (&АналитикаУчетаПоПартнерам)
   |
   |СГРУППИРОВАТЬ ПО
   |    ПроведениеПоРасчетамСКлиентами.АналитикаУчетаПоПартнерам
   |;
   |///////////////////////////////////////////////////////////////////////////////
   |    
   |ВЫБРАТЬ
   |    Границы.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
   |    МАКСИМУМ(Границы.Период) КАК Период,
   |    МАКСИМУМ(РасчетыСКлиентами.Период) КАК ПериодОсновная
   |    
   |ПОМЕСТИТЬ НачальныеГраницы
   |    
   |ИЗ
   |    (
   |        ВЫБРАТЬ
   |            НачальныеДвижения.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
   |            ЕСТЬNULL(ПроведениеПоРасчетамСКлиентамиГраницы.Период, НачальныеДвижения.Период) КАК Период
   |        ИЗ
   |            НачальныеДвижения КАК НачальныеДвижения
   |
   |        ЛЕВОЕ СОЕДИНЕНИЕ
   |            Последовательность.ПроведениеПоРасчетамСКлиентами.Границы КАК ПроведениеПоРасчетамСКлиентамиГраницы
   |                ПО НачальныеДвижения.АналитикаУчетаПоПартнерам = ПроведениеПоРасчетамСКлиентамиГраницы.АналитикаУчетаПоПартнерам
   |    ) КАК Границы
   |        
   |    ЛЕВОЕ СОЕДИНЕНИЕ
   |        РегистрНакопления.РасчетыСКлиентами КАК РасчетыСКлиентами
   |    ПО
   |        Границы.АналитикаУчетаПоПартнерам = РасчетыСКлиентами.АналитикаУчетаПоПартнерам
   |        И РасчетыСКлиентами.Активность
   |
   |СГРУППИРОВАТЬ ПО
   |    Границы.АналитикаУчетаПоПартнерам
   |
   |ИМЕЮЩИЕ
   |    МАКСИМУМ(Границы.Период) <= МАКСИМУМ(РасчетыСКлиентами.Период)
   |    
   |ИНДЕКСИРОВАТЬ ПО
   |    АналитикаУчетаПоПартнерам
   |";
   
   Запрос = Новый Запрос;
   Запрос.Текст = ТекстЗапроса;
   Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
   
   Запрос.УстановитьПараметр("НеИспользоватьОтборПоАналитикеУчетаПоПартнерам", АналитикаУчетаПоПартнерам = Неопределено);        
   Запрос.УстановитьПараметр("АналитикаУчетаПоПартнерам", АналитикаУчетаПоПартнерам);        
   
   РезультатЗапроса = Запрос.Выполнить();
   
   Выборка = РезультатЗапроса.Выбрать();
   Выборка.Следующий();

   Возврат НЕ (Выборка.Количество = 0);
   
КонецФункции // СформироватьВременнуюТаблицуНачальныеГраницыРасчетовСКлиентами()

Ни как не могу понять Откуда "Выборка.Количество" взялось. Это ведь не метод определения количество в выборке.
Поясните, плиз
1 GrayT
 
04.06.13
17:34
+ Т.е. если перерасчет ГП по АналитикеПартнера делать не нужно Количество() исправно возвращает 1, а Количество =0... Откуда это количество нарисовалось???
2 GrayT
 
04.06.13
18:47
Нашел еще пару мест где используется такая конструкция. Видимо связано с использованием временных таблиц, но где об этом прочитать поподробнее?
3 Fragster
 
гуру
04.06.13
18:57
если это результат запроса создания временной таблицы - то получится таблица с 1 коолнкой "количество" и 1 строкой, в которой будет количество строк, помещенных во временную таблицу
4 GrayT
 
04.06.13
19:01
Ну в принципе, уже догадался... вот только не нашел описания этого свойства ни где :(
Спасибо.