Имя: Пароль:
1C
1С v8
Как узнать пустой ли результат запроса в программно создаваемом СКД с выводом в Табличный документ
0 luter-89
 
05.10.16
16:31
Как узнать пустой ли результат запроса в программно создаваемом СКД с выводом в Табличный документ?
1 luter-89
 
05.10.16
16:37
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД,Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    
    ТаблицаЗначений = Новый ТаблицаЗначений;
    
    ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    
    Если ТаблицаЗначений.Количество() > 0 Тогда
        
        КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
        МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД,Настройки);
        
        ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
        ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
        
        ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
        
        ТабличныйДокумент = Новый ТабличныйДокумент;
        
        ПроцессорВывода.УстановитьДокумент(ТабличныйДокумент);
        ПроцессорВывода.Вывести(ПроцессорКомпоновки);
2 luter-89
 
05.10.16
16:37
Как то избыточно, может есть еще варианты?
3 luter-89
 
05.10.16
16:55
ПроцессорВыводаРезультатаКД.ВывестиЭлемент(ЭлементРезультатаКД);
            
       // Определить не пустой результат

        Если Результат.Пустой Тогда
            Для Каждого ЗначениеПараметраМакетаКД Из ЭлементРезультатаКД.ЗначенияПараметров Цикл
                Если ЗначениеЗаполнено(ЗначениеПараметраМакетаКД.Значение) Тогда
                    ПроцессорВыводаРезультатаКД.ЗакончитьВывод();
                    Результат.Пустой = Ложь;
                    Возврат Результат;
                КонецЕсли;
            КонецЦикла;
        КонецЕсли;
            
   // Получает следующий элемент результата компоновки.

    ЭлементРезультатаКД = ПроцессорКД.Следующий();
4 luter-89
 
05.10.16
16:55
Вопрос закрыт
Независимо от того, куда вы едете — это в гору и против ветра!