Доброе время суток всем!
Необходимо реализовать внешний отчёт. При выборе сотрудника и указания периода рисуется собственный макет(справка о зарплате за 3 месяца)(макет приложил). Макет нарисовал с шаблонами и параметрами.
Вопрос:
Как правильно реализовать заполнение моего макета на основании заданных параметров ?!
Не смог найти нигде информации о том как программно это выводить.
Я так понял в основной системе компоновки данных берём регистр,оттуда тянем сотрудника и период для указания этих параметров.
Хотелось бы просто делать запросы и заполнять параметры, но не знаю кода Компоновки...
На данном этапе остановился только на этом:
Необходимо реализовать внешний отчёт. При выборе сотрудника и указания периода рисуется собственный макет(справка о зарплате за 3 месяца)(макет приложил). Макет нарисовал с шаблонами и параметрами.
Вопрос:
Как правильно реализовать заполнение моего макета на основании заданных параметров ?!
Не смог найти нигде информации о том как программно это выводить.
Я так понял в основной системе компоновки данных берём регистр,оттуда тянем сотрудника и период для указания этих параметров.
Хотелось бы просто делать запросы и заполнять параметры, но не знаю кода Компоновки...
На данном этапе остановился только на этом:
#Область СведенияОбОбработке
////////////////////////Сведения о внешней обработке/////////////////////////////////////
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;
ПараметрыРегистрации.Вставить("Вид", "ДополнительныйОтчет");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", "Справка о зарплате");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("Информация", "Отчет 'Справка о зарплате за последние три месяца'");
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд, "Справка о зарплате", "Справка о зарплате за последние три месяца", "ОткрытиеФормы", Ложь, "");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
////////////////////////Сведения о внешней обработке/////////////////////////////////////
#КонецОбласти
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
//ДокументРезультат.Очистить();
ДокументРезультат.ТолькоПросмотр = Истина;
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ДокументРезультат.ПолеСправа = 0;
ДокументРезультат.ПолеСнизу = 0;
ДокументРезультат.ПолеСправа = 0;
ДокументРезультат.АвтоМасштаб = Истина;
ДокументРезультат.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗП";
СвойМакетОформления =
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
КонецПроцедуры
ПоказатьПрикрепленные файлы:
По теме из базы знаний
- События по сотрудникам (внешний отчёт для ЗУП ред 2.5)
- Отчет по выплатам в периоде для ЗУП 3.1
- Журнал учета выдачи расчетных листков. ЗУП 2.5. ЗУП КОРП 2.5
- Контроль для 6-НДФЛ по документу "Начисление отпуска сотрудникам организации". ЗУП
- Отчет по заработной плате (по всем видам начислений и удержаний). ЗУП 2.5
Найденные решения
(3) Интересует вот это, правильно ли :
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДокументРезультат.Очистить();
ДокументРезультат.ТолькоПросмотр = Истина;
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ДокументРезультат.ПолеСправа = 0;
ДокументРезультат.ПолеСнизу = 0;
ДокументРезультат.ПолеСправа = 0;
ДокументРезультат.АвтоМасштаб = Истина;
ДокументРезультат.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗП";
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
ЗначениеПараметраПериод = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДатаНачала"));
Если ДатаНачалаНП = '00010101' Тогда
ДатаНачалаНП = Дата(ТекущаяДата());
КонецЕсли;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , , Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ТаблицаЗначений = Новый ТаблицаЗначений;
ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
СформироватьМакет(ДокументРезультат, ТаблицаЗначений);
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) Получается в основной СКД достаточно этого для моих требовании ?:
А уже дальше работаю с сотрудником,организацией и заполняю параметры макета ?
ВЫБРАТЬ
КадроваяИсторияСотрудниковСрезПоследних.Сотрудник КАК Сотрудник,
КадроваяИсторияСотрудниковСрезПоследних.Период КАК Период,
КадроваяИсторияСотрудниковСрезПоследних.Организация КАК Организация
ИЗ
РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(, ) КАК КадроваяИсторияСотрудниковСрезПоследних
ГДЕ
КадроваяИсторияСотрудниковСрезПоследних.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
А уже дальше работаю с сотрудником,организацией и заполняю параметры макета ?
(3) Интересует вот это, правильно ли :
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДокументРезультат.Очистить();
ДокументРезультат.ТолькоПросмотр = Истина;
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ДокументРезультат.ПолеСправа = 0;
ДокументРезультат.ПолеСнизу = 0;
ДокументРезультат.ПолеСправа = 0;
ДокументРезультат.АвтоМасштаб = Истина;
ДокументРезультат.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗП";
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
ЗначениеПараметраПериод = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДатаНачала"));
Если ДатаНачалаНП = '00010101' Тогда
ДатаНачалаНП = Дата(ТекущаяДата());
КонецЕсли;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , , Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ТаблицаЗначений = Новый ТаблицаЗначений;
ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
СформироватьМакет(ДокументРезультат, ТаблицаЗначений);
КонецПроцедуры
Показать
(11) Извините, почему в отчёт выводится "СтрокаТаблицыЗначении",необходимо число и название организации:
КадровыеДанныеСотрудников = КадровыйУчет.КадровыеДанныеСотрудников(Истина,
общегоНазначенияКлиентСервер.ЗначениеВМассиве(Сотрудник),
"ДатаПриема,Организация", ТекущаяДата());
ДанныеОрганизации.Вставить("ДатаПриема",КадровыеДанныеСотрудников[0]);
ДанныеОрганизации.Вставить("ОрганизацияАктуальная",КадровыеДанныеСотрудников[1]);
(13) Уже сделал так, то же самое же получается ?:
КадровыеДанныеСотрудников = КадровыйУчет.КадровыеДанныеСотрудников(Истина,
общегоНазначенияКлиентСервер.ЗначениеВМассиве(Сотрудник),
"ДатаПриема,Организация", ТекущаяДата());
ДТ = КадровыеДанныеСотрудников[0]["ДатаПриема"];
ДанныеОрганизации.Вставить("ДатаПриема",Формат(ДТ,"ДЛФ=DD"));
ДанныеОрганизации.Вставить("ОрганизацияАктуальная",КадровыеДанныеСотрудников[0]["Организация"]);
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот