0

Не могу программно сформировать типовой отчет

#1С 8.2

Пытаюсь из внешней обработки программно сформировать типовой отчет и вывести результат в таблицу значений. Но каждый раз возвращается пустая таблица. Что я делаю не так?

Конфигурация: Зарплата и кадры образовательного учреждения, редакция 1.0

Собственно сам код процедуры:

Процедура КнопкаВыгрузка(Элемент)
   СтандартнаяОбработка = Ложь;

   Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
   Диалог.Заголовок = "Выберите файл для сохранения данных";
   Диалог.МножественныйВыбор = Ложь;
   Диалог.Фильтр = "TXT (*.txt)|*.txt";
   Если Диалог.Выбрать() Тогда
       ФайлСохранения = Диалог.ПолноеИмяФайла;

       Текст = Новый ЗаписьТекста(ФайлСохранения, КодировкаТекста.UTF8);

       РасчетныеЛисткиОрганизаций = Отчеты.РасчетныеЛисткиОрганизаций.Создать();
       СхемаКомпоновки = РасчетныеЛисткиОрганизаций.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
       КомпоновщикНастроек = РасчетныеЛисткиОрганизаций.КомпоновщикНастроек;
       КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновки));
       КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновки.НастройкиПоУмолчанию);

       Элементы = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы;

       ПараметрГруппировка = Элементы.Найти("Группировать");
       ПараметрГруппировка.Значение = Ложь;
       ПараметрГруппировка.Использование = Истина;
       ПараметрВид = Элементы.Найти("ВидРасчетногоЛистка");
       ПараметрВид.Значение = "Подробно";
       ПараметрВид.Использование = Истина;
       ПараметрНачалоПериода = Элементы.Найти("НачалоПериода");
       ПараметрНачалоПериода.Значение = НачПериода;
       ПараметрНачалоПериода.Использование = Истина;
       ПараметрКонецПериода = Элементы.Найти("КонецПериода");
       ПараметрКонецПериода.Значение = КонПериода;
       ПараметрКонецПериода.Использование = Истина;

       ТЗ_СуммаНаРуки             = Данные_СуммаНаРуки(НачПериода, КонПериода);
       ТЗ_СведенийОДоходе         = Данные_СведенийОДоходе(НачПериода, КонПериода);
       ТЗ_ЛичныйВычет             = Данные_ЛичныйВычет(НачПериода, КонПериода);
       ТЗ_ИмущественныйВычет    = Данные_ИмущественныйВычет(НачПериода, КонПериода);
       ТЗ_ФИОРаботников        = Данные_ФИОРаботников(НачПериода, КонПериода);

       Для Каждого Отделы из ОтчетОбъект.Подразделения Цикл
           Для Каждого Строка из ОтчетОбъект.Сотрудники Цикл
               Если Строка.Ключ = Отделы.Ключ и Строка.Пометка Тогда
                   ВнешниеНаборыДанных = Новый Структура;

                   ФизЛица = Новый Массив;
                   ФизЛица.Добавить(Строка.Сотрудник.Физлицо);

                   ТЗ_НачисленияУдержания  = Данные_НачисленияУдержания();
                   ТЗ_РаботникиОрганизации = Данные_РаботникиОрганизации(НачПериода, КонПериода, ФизЛица);

                   ВнешниеНаборыДанных.Вставить("РаботникиОрганизации", ТЗ_РаботникиОрганизации);
                   ВнешниеНаборыДанных.Вставить("НачисленияУдержания", ТЗ_НачисленияУдержания);
                   ВнешниеНаборыДанных.Вставить("ИмущественныйВычет", ТЗ_ИмущественныйВычет);
                   ВнешниеНаборыДанных.Вставить("СведенийОДоходе",  ТЗ_СведенийОДоходе);
                   ВнешниеНаборыДанных.Вставить("ФИОРаботников",  ТЗ_ФИОРаботников);
                   ВнешниеНаборыДанных.Вставить("СуммаНаРуки",  ТЗ_СуммаНаРуки);
                   ВнешниеНаборыДанных.Вставить("ЛичныйВычет", ТЗ_ЛичныйВычет);

                   ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
                   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
                   МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновки, КомпоновщикНастроек.Настройки, ДанныеРасшифровки, ,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));

                   ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
                   ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных, ВнешниеНаборыДанных,ДанныеРасшифровки,Истина);

                   ДанныеТЗ = Новый ТаблицаЗначений;

                   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
                   ПроцессорВывода.УстановитьОбъект(ДанныеТЗ);
                   ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

                   Для Каждого стр из ДанныеТЗ Цикл
                       Текст.ЗаписатьСтроку("Организация: " + СокрЛП(Строка(стр.Организация)));
                       Текст.ЗаписатьСтроку("Работник: " + СокрЛП(Строка(стр.Работник)));
                       Текст.ЗаписатьСтроку("К выплате: " + Формат(стр.СуммаНаРуки, "ЧГ=0"));
                   КонецЦикла;
               КонецЕсли;
           КонецЦикла;
       КонецЦикла;

       Текст.Закрыть();
   КонецЕсли;
КонецПроцедуры
 957 3
Добавленоdemiurg429 дней назад
Последняя активность425 дней назад


Добавить комментарий

demiurg написал:429 дней назад0

Переделал процедуру. Теперь вопрос, как вытащить данные? У меня выводится только колонка “РасчетныеЛисткиОрганизаций” с содержимым первой колонки табличного документа. Код:

Процедура КнопкаВыгрузка(Элемент) Экспорт
    СтандартнаяОбработка = Ложь;

    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
    Диалог.Заголовок = "Выберите файл для сохранения данных";
    Диалог.МножественныйВыбор = Ложь;
    Диалог.Фильтр = "TXT (*.txt)|*.txt";
    Если Диалог.Выбрать() Тогда
        ФайлСохранения = Диалог.ПолноеИмяФайла;

        Текст = Новый ЗаписьТекста(ФайлСохранения, КодировкаТекста.UTF8);

        Для Каждого Отделы из ОтчетОбъект.Подразделения Цикл
            Для Каждого Строка из ОтчетОбъект.Сотрудники Цикл
                Если Строка.Ключ = Отделы.Ключ и Строка.Пометка Тогда
                    ОтчетРасчетныеЛисткиОрганизаций = Отчеты.РасчетныеЛисткиОрганизаций.Создать();

                    ТиповыеОтчеты.УстановитьПараметр(ОтчетРасчетныеЛисткиОрганизаций.КомпоновщикНастроек,  "НачалоПериода", НачПериода);
                    ТиповыеОтчеты.УстановитьПараметр(ОтчетРасчетныеЛисткиОрганизаций.КомпоновщикНастроек,  "КонецПериода", КонПериода);
                    ТиповыеОтчеты.УстановитьПараметр(ОтчетРасчетныеЛисткиОрганизаций.КомпоновщикНастроек,  "Группировать", ложь);
                    ТиповыеОтчеты.УстановитьПараметр(ОтчетРасчетныеЛисткиОрганизаций.КомпоновщикНастроек,  "ВидРасчетногоЛистка", "Подробно");
                    ТиповыеОтчеты.ДобавитьОтбор(ОтчетРасчетныеЛисткиОрганизаций.КомпоновщикНастроек, "ФизЛицо", Строка.Сотрудник.ФизЛицо);

                    РасчетныеЛисткиОрганизацийОтчет = Новый ТабличныйДокумент;
                    ОтчетРасчетныеЛисткиОрганизаций.СформироватьОтчет(РасчетныеЛисткиОрганизацийОтчет);

                    Построитель = Новый ПостроительЗапроса;
                    Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(РасчетныеЛисткиОрганизацийОтчет.Область(1,1,РасчетныеЛисткиОрганизацийОтчет.ВысотаТаблицы, 17));
                    ТЗ = Построитель.Результат.Выгрузить();

                    Для Каждого стр из ТЗ Цикл
                        Сообщить(стр.РасчетныеЛисткиОрганизации);
                        //Текст.ЗаписатьСтроку("Организация: " + СокрЛП(Строка(стр.Организация)));
                        //Текст.ЗаписатьСтроку("Работник: " + СокрЛП(Строка(стр.Работник)));
                        //Текст.ЗаписатьСтроку("К выплате: " + Формат(стр.СуммаНаРуки, "ЧГ=0"));
                    КонецЦикла;

                КонецЕсли;
            КонецЦикла;
        КонецЦикла;

        Текст.Закрыть();
    КонецЕсли;
КонецПроцедуры

Ответить

Кирилл написал:428 дней назад0

Тут только в отладке смотреть какие параметры заполняются и т.д….

Зачем вы опять пытаетесь использовать типовой отчет? Выдерните запрос и используйте его. Так, по крайней мере, легче будет отладить и код будет универсальнее

Ответить

Задать вопрос!

Наш канал на Youtube

Изучаете 1С? Скачайте 200 видео по 1С бесплатно:

Похожее

Проблема при создании новый элементов справочника

В обработке создаю новый элементы справочника номенклатура, и в конце обработки ...

Ошибка при отправке интернет-писем

Конфигурация пустая. Требуется прописать модуль получения и отправки писем. Все ...

Не выводится внешний отчёт с управляемой формой.

Всем доброго дня! Подскажите, пожалуйста, пытаюсь добавить в Розницу 2.1 внешний...

Почтовый менеджер, заполнение текста письма по шаблону

Используем 1С CRM 2.0. В почтовом менеджере при создании (ответе и пересылке) пи...

Новый регистр сведений 1С 8.2 или добавить в существующий

Всем добрый день! Нужна помощь, совет, в общем все! Появилась необходимость со...

Новое

1С: Бухгалтерию 8.2 дёшево

Программа 1С: Бухгалетрия 8.2 По поводу приобретения программы обращайтесь на по...

Курсы

Добрый день! Осталось 2 ключа для активации курса “Профессиональный учёт в 1С:З...

"Наряд на хозтранспорт и спецтехнику" Путевые листы

Здравствуйте, Форумчане, прошу вашего совета. В организации такая ситуация: ест...

Создание обработки

Помогите с задачей. Суть такова - нужно создать внешнею обработку которая будет ...

Заполнение раздела 3 Расчет налоговой базы Книги доходов и расходов

Добрый день! Меня зовут Наталья. Про заполнение Кудир в КА очень все хорошо пишу...