Имя: Пароль:
1C
1С v8
ЗУП 2.5. Перехватить вывод результата в отчете "Расчетные листки"
0 Sun125
 
13.09.18
15:21
Конфигурация ЗУП2.5.
Нужно в отчете "Расчетные листки" перехватить итоговый результат отчета в виде таблицы.

ВнешниеНаборыДанных = Новый Структура;
    ВнешниеНаборыДанных.Вставить("НачисленияУдержания", НачисленияУдержания);
    
    // получим макет компоновки данных
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки   = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
    
    // создадим и инициализируем процессор компоновки данных
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);
    
    // очистим результирующий табличный документ
    Результат.Очистить();
    
    Если ВыводВФормуОтчета тогда
        ВыводЗаголовкаОтчета(Результат);
    КонецЕсли;
    
    // удалим отбор пустых строк начислений
    Настройки.Отбор.Элементы.Удалить(ГруппаОтбора);
    Если ОтборПоФизЛицу <> Неопределено тогда
        Настройки.Отбор.Элементы.Удалить(ОтборПоФизЛицу);
    КонецЕсли;
    
    // выведем отчет в табличный документ "Результат"
    ВывестиРезультатВТабличныйДокумент(ПроцессорКомпоновки, Результат, ВыводитьПоСтраницам);

Процедура ВывестиРезультатВТабличныйДокумент(ПроцессорКомпоновкиДанных, ТабличныйДокумент, ВыводитьПоСтраницам) Экспорт
    
    // Создадим и инициализируем процессор вывода результата
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ТабличныйДокумент);
    
    // Обозначим начало вывода
    ПроцессорВывода.НачатьВывод();
    #Если НЕ Сервер И НЕ ВнешнееСоединение Тогда
        Состояние(НСТР("ru='Если Вы хотите прервать вывод отчета, нажмите Ctrl+Break'"));
    #КонецЕсли
    
    // Основной цикл вывода отчета
    Счетчик = 0;
    Пока Истина Цикл
        
        
        // Получим следующий элемент результата компоновки
        ЭлементРезультата = ПроцессорКомпоновкиДанных.Следующий();
        
        // Получим следующий элемент результата компоновки
        Если ЭлементРезультата = Неопределено Тогда
            
            // Следующий элемент не получен - заканчиваем цикл вывода
            Прервать;
            
        Иначе
            
            // Элемент получен - выведем его при помощи процессора вывода
            ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
            
        КонецЕсли;
        
        #Если НЕ Сервер И НЕ ВнешнееСоединение Тогда
            ОбработкаПрерыванияПользователя();
        #КонецЕсли
        
    КонецЦикла;
    
    ПроцессорВывода.ЗакончитьВывод();
    
    ЗадатьИменаОбластямРазбитьТабличныйДокументПоСтраницам(ТабличныйДокумент, ВыводитьПоСтраницам);
    
КонецПроцедуры

Создаю процедуру:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    Сообщить("!!!");
    
КонецПроцедуры

Но, похоже, в процедуру не попадает.
Подскажите, пожалуйста, что не так делаю? как вытащить результат?
1 Sun125
 
13.09.18
15:31
(0) Мне нужно получить список сотрудников, по которым сформировались расчетные листки
2 Sun125
 
13.09.18
15:42
хоть прям с табличного документа получать данные...
может кто сталкивался?
3 Hans
 
13.09.18
15:46
Не попадает может потому что в виде фонового задания исполняется. Подключи в отладку фоновые задания.
4 piter3
 
13.09.18
15:46
(3) а чего в 2.5 уже
5 MUXACb
 
13.09.18
16:55
(0) Если нужны только сотрудники, то лучше перехватить внешний источник данных "НачисленияУдержания" в процедуре "СформироватьОтчет" модуля отчета
6 ptiz
 
13.09.18
17:21
(1) Анализируй ЭлементРезультата.ЗначенияПараметров при выводе - там есть сотрудники