Программное выполнение Отчета (СКД) средствами БСП:ВариантыОтчетов
Конфигурация 1С:ЗУП КОРП 3.1
Много доработок всяких, не моих, повлиять на исходный код не могу.
Исходная информация:
Отчет для формирования "расчетного листка" (взят копированием) из стандартного АнализНачисленийИУдержаний, помещен в расширение. Печатная форма своя.
Интерактивно все работает. Отчет выводит нужную печатную форму.
Рассылка отчетов для этого отчета тоже отрабатывает как надо и формирует нужную печатную форму.
Что надо:
Получить печатную форму "расчетного листка" чисто программным кодом.
Как делаю:
Отчет не формируется - пустой.
Шагал отладчиком как это делает "рассылка отчетов". И пытался эту логику использовать. Уже много раз переделывал свой код - не работает и все. К моменту когда в "ВариантыОтчетов.СформироватьОтчет()" доходит до строки:
смотрю свойства объекта (сравнивал с выполнением "рассылки"), все вроде одинаково...
Помогите, господа программеры, уже не первый день бьюсь, может уже глаз замылился чего-то не вижу.
Много доработок всяких, не моих, повлиять на исходный код не могу.
Исходная информация:
Отчет для формирования "расчетного листка" (взят копированием) из стандартного АнализНачисленийИУдержаний, помещен в расширение. Печатная форма своя.
Интерактивно все работает. Отчет выводит нужную печатную форму.
Рассылка отчетов для этого отчета тоже отрабатывает как надо и формирует нужную печатную форму.
Что надо:
Получить печатную форму "расчетного листка" чисто программным кодом.
Как делаю:
function ФормированиеОтчета2(Сотрудник, Организация, ПериодДата) экспорт
var ЭлементФизическоеЛицо, ЭлементОрганизация;
РезультатОтчета = Новый ТабличныйДокумент;
СсылкаОтчета = ОбщегоНазначения.ИдентификаторОбъектаМетаданных("Отчет.РасчетныйЛисток");
ВариантОтчета = ВариантыОтчетов.ВариантОтчета(СсылкаОтчета, "РасчетныйЛисток");
ПараметрыПодключения = ВариантыОтчетов.ПараметрыФормированияОтчета();
ПараметрыПодключения.СсылкаВарианта = ВариантОтчета;
ПараметрыПодключения.ИдентификаторФормы = ЭтаФорма.УникальныйИдентификатор;
Подключение = ВариантыОтчетов.ПодключитьОтчетИЗагрузитьНастройки(ПараметрыПодключения);
КомпоновщикНастроекКД = Подключение.Объект.КомпоновщикНастроек;
ТекНастройки = Подключение.НастройкиКД;
// 1) настройка отборов
// * физ.лицо
// * организация
ПолеФизическоеЛицо = Новый ПолеКомпоновкиДанных("ФизическоеЛицо");
ФлагФизическоеЛицо = Ложь;
ПолеОрганизация = Новый ПолеКомпоновкиДанных("Организация");
ФлагОрганизация = Ложь;
ПолеГруппа = Новый ПолеКомпоновкиДанных("Группа");
ФлагГруппа = Ложь;
// настроки отбора
for each Элем in ТекНастройки.Отбор.Элементы do
// * физ.лицо
if Элем.ЛевоеЗначение = ПолеФизическоеЛицо then
Элем.ПравоеЗначение = Сотрудник;
Элем.Использование = Истина;
ФлагФизическоеЛицо = Истина;
endif;
// * организация
if Элем.ЛевоеЗначение = ПолеОрганизация then
Элем.ПравоеЗначение = Организация;
Элем.Использование = Истина;
ФлагОрганизация = Истина;
endif;
// * группа
if Элем.ЛевоеЗначение = ПолеГруппа then
Элем.Использование = Истина;
ФлагГруппа = Истина;
endif;
if ФлагФизическоеЛицо И ФлагОрганизация И ФлагГруппа then
Прервать;
endif;
enddo;
// 2) установка параметров
// * период
Элем = ТекНастройки.ПараметрыДанных.Элементы.Найти("Период");
ПериодОтчета = Новый СтандартныйПериод;
ПериодОтчета.ДатаНачала = НачалоМесяца(ПериодДата);
ПериодОтчета.ДатаОкончания = КонецМесяца(ПериодДата);
Элем.Значение = ПериодОтчета;
Элем.Использование = Истина;
// * РазбиватьПоПодразделениям
Элем = ТекНастройки.ПараметрыДанных.Элементы.Найти("РазбиватьПоПодразделениям");
Элем.Значение = Ложь;
Элем.Использование = Истина;
КомпоновщикНастроекКД.ЗагрузитьНастройки(ТекНастройки);
ТекНастройки = Неопределено;
Об = Неопределено;
ПараметрыФормирования = ВариантыОтчетов.ПараметрыФормированияОтчета();
ПараметрыФормирования.Подключение = Подключение;
Результат = ВариантыОтчетов.СформироватьОтчет(ПараметрыФормирования, Ложь, Истина);
if Результат.Пустой then
Сообщить("Отчет пустой :(");
endif;
Возврат Результат.ТабличныйДокумент;
endfunction // ФормированиеОтчета2()
ПоказатьОтчет не формируется - пустой.
Шагал отладчиком как это делает "рассылка отчетов". И пытался эту логику использовать. Уже много раз переделывал свой код - не работает и все. К моменту когда в "ВариантыОтчетов.СформироватьОтчет()" доходит до строки:
ОтчетОбъект.СкомпоноватьРезультат(Результат.ТабличныйДокумент, Результат.Расшифровка);
смотрю свойства объекта (сравнивал с выполнением "рассылки"), все вроде одинаково...
Помогите, господа программеры, уже не первый день бьюсь, может уже глаз замылился чего-то не вижу.
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот