Имя: Пароль:
1C
 
Программно сформировать отчет Расчетный лист
0 Vvvvv
 
06.12.19
14:28
Требуется написать обработку, в которой формируется табличный документ с результатом отчета "Расчетный лист". В конфигурации ЗУП, отчет называется "АнализНачисленийИУдержаний", у этого отчета много вариантов отчета, один из них "Расчетный лист". У отчета есть как макет СКД, так и обычный макет.
Начал писать обработку, которая во внешней обработке выводить макет. Большая часть кода отрабатывает во внешних модулей. И большой вопрос заключается какие параметры передавать.
Передается такой параметр как ЭтотОбъект - с типом объекта отчета.
И при передаче этого параметра, у него заполнены компановщик настроек,пользовательские настройки, выбранные поля определены. В моей обработке, эти параметры почти пустые и их нужно откудато получить ?
Нагуглит такой объект "ХранилищеВариантовОтчетов" но как им пользоваться не понял?
мои обращения к этому объекту показывает результат неопределенно
1 dka80
 
06.12.19
14:39
НастройкиОтчета    = ЭтотОбъект.КомпоновщикНастроек.ПолучитьНастройки();
    ПараметрПериод     = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("НачалоПериода"));
    Сотрудник         = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля()[0].Значение;
    
    Отчет = Отчеты.РасчетныеЛисткиОрганизаций.Создать();
    НастройкиОтчета    = Отчет.КомпоновщикНастроек.ПолучитьНастройки();
    НачалоПериода     = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("НачалоПериода"));
    НачалоПериода.Значение = НачалоМесяца(ПараметрПериод.Значение.Дата);
    КонецПериода = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("КонецПериода"));
    КонецПериода.Значение = КонецМесяца(ПараметрПериод.Значение.Дата);
    ВидРасчетногоЛистка    = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВидРасчетногоЛистка"));
    ВидРасчетногоЛистка.Значение = "Подробно";
    
    ОтборСотрудник = Отчет.КомпоновщикНастроек.Настройки.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных("Сотрудник"));
    Для Каждого Отбор Из Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
        Если Отбор.ЛевоеЗначение     = ОтборСотрудник.Поле Тогда
            Отбор.Использование      = Истина;
            Отбор.ВидСравнения         = ВидСравненияКомпоновкиДанных.Равно;
            Отбор.ПравоеЗначение    = Сотрудник;
        КонецЕсли;
    КонецЦикла;
            
    ФормаОтчета = Отчет.ПолучитьФорму(, , Новый УникальныйИдентификатор());
    ФормаОтчета.СтандартныйПериод.ДатаНачала     =  НачалоМесяца(ПараметрПериод.Значение.Дата);
    ФормаОтчета.СтандартныйПериод.ДатаОкончания    = КонецМесяца(ПараметрПериод.Значение.Дата);
    ФормаОтчета.КомпоновщикНастроекПользователя.ЗагрузитьНастройки(Отчет.КомпоновщикНастроек.ПолучитьНастройки());
    ФормаОтчета.ЭтоОтработкаРасшифровки = Истина;
    ФормаОтчета.ОбновитьОтчет();
    ФормаОтчета.Открыть();
2 mmmarat
 
06.12.19
14:46
Создаем отчет, инициализируем.
ОтчетОбъект.ИнициализироватьОтчет();
получаем вариант "РасчетныйЛисток", получаем его настройки
НастройкиОтчета = ВариантОтчета.Настройки;
заполняем настройки варианта
В компоновщик настроек загружаем настройки
В пользовательские настройки в доп свойства вставляем ключ варианта.
ОтчетОбъект.СкомпоноватьРезультат(ДокументРезультат);

Это как направление мысли, чтобы реализовать задачу.
3 azt-yur
 
06.12.19
15:01
В документе Начисление зарплаты и взносов в форме есть кнопка Расчетный листок. Посмотри что она вызывает и делай также.
4 Vvvvv
 
06.12.19
15:05
Отлично. Добавил такие процедуры
НовыйОтчет = Отчеты.АнализНачисленийИУдержаний.Создать();
НовыйОтчет.ИнициализироватьОтчет("РасчетныйЛисток");
а далее типовая процедура ПриКомпоновкеРезультата, но уже в модуле обработки.
отчет формируется.
что осталось программно задать параметры
5 azt-yur
 
06.12.19
15:07
ОтчетРасчетныйЛисток = ЗарплатаКадрыОтчеты.ОтчетРасчетныйЛисток();
ДокументРезультат = Отчеты.АнализНачисленийИУдержаний.РасчетныйЛисток(
            ФизическиеЛица, Организация, Месяц, ОтчетРасчетныйЛисток);