Здоровья всем страждущим.
Решил сделать обработку, помогающую в создании нетиповых шаблонов документов Word для кадрового отдела.
Обработка показана на демо Зарплата и управление персоналом, редакция 3.1 (3.1.28.64), версия платформы 1С:Предприятие 8.3 (8.3.23.1912).
Работа с шаблонами Word реализована через ОбщийМодуль.УправлениеПечатью.
Также в этой обработке возможна печать документов по нескольким сотрудникам и нескольким документам одновременно.
Шаблон должен быть оформлен следующим образом:
Параметры для заполнения оформляются как: {v8 ИмяПараметра}.
Области оформляются как: {v8 Область.ИмяОбласти} - начало области; {/v8 Область.ИмяОбласти} - конец области.
У меня программно заложен поиск области с именем "Общая", соответственно без изменения кода следует в шаблонах указывать её. Области нижнего и верхнего колонтитулов в 1С находятся без указания в шаблоне.
Шаблоны необходимо добавить в справочник "Файлы". Реализован отбор файлов по имени папки "Шаблоны печати".
Если нужно чтобы в списке выбора были видны все файлы, необходимо закомментировать процедуру:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СделатьОтборПоПапкеФайлов("Шаблоны печати");
КонецПроцедуры
Обработку можно подключить к базе или открыть внешне.
Возможно выбрать открывать сформировавшиеся документы или сохранять на диск.
Пример работы для моего тестового шаблона:
Важно! Разработчиками не заложена возможность проверки имени параметров, указанных в шаблоне, на соответствие именам параметров для получения кадровых данных, поэтому написал данную проверку самостоятельно. Если внутри шаблона указан параметр, который не заложен для получения, выведется сообщение.
Список поддерживаемых параметров: Код, Наименование, Фамилия, Имя, Отчество, ФИОПолные, ФамилияИО, ИОФамилия, Инициалы, ДокументСерия , ДокументНомер, ДокументДатаВыдачи , ДокументКемВыдан , ДокументКодПодразделения , ДокументСтранаВыдачи, ТабельныйНомер, Организация, Подразделение, Должность, ДолжностьПоШтатномуРасписанию, РазрядКатегория, ВидДоговора, ОсновноеНачисление, ПоказательТарифнойСтавки, ОплатаТрудаПериодЗаписи, ОплатаТрудаРегистратор, ТарифнаяСтавка, ФОТ, Надбавка, КоличествоСтавок, НомерЛицевогоСчета, ЗарплатныйПроект, ЗарплатныйПроектДатаОткрытияЛицевогоСчета, ДатаПриема, ПриказОПриемеНомер, ГражданствоПериодРегистрации, Страна, ИННВСтранеГражданства, КоличествоДетей, КоличествоДетейДляТ2, КоличествоИждивенцев, КоличествоРодственников, ГрафикРаботы, АдресДляИнформированияПредставление, АдресМестаПроживанияПредставление, АдресПоПропискеПредставление, ДатаУвольнения, ПриказОбУвольнении, РуководительКадровойСлужбыФамилия, РуководительКадровойСлужбыИнициалы, РуководительКадровойСлужбыФИОРодительный, РуководительКадровойСлужбыДолжность, РуководительКадровойСлужбыДолжностьРодительный, РуководительКадровойСлужбыОснованиеПодписи, НомерДоговораКонтракта, ДатаДоговораКонтракта, ДатаНачалаДоговора, ДатаОкончанияДоговора , ТарифнаяСтавкаСтрокой, ИСН (Индивидуальная стимулирующая надбавка (процентом)), ИСНПериодНачало, ИСНПериодКонец, ПодразделениеДоВерхнего (Получить подразделение + подразделения верхнего уровня до конечного родителя), ДатаПолучения, НомерПриказа (Данные приказа на увольнение), Начислено, ДнейКомпенсацииУдержанияОтпуска, ОснованиеУвольнения.
Часть параметров при этом самописная. Например, ИСН - индивидуальная стимулирующая надбавка получается следующим образом:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних.Сотрудник КАК Сотрудник,
| ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних.Значение КАК ИСН,
| ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних.Период КАК ИСНПериодНачало,
| ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних.ДействуетДо, ДЕНЬ), СЕКУНДА, -1) КАК ИСНПериодКонец
|ИЗ
| РегистрСведений.ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников.СрезПоследних(
| КОНЕЦПЕРИОДА(&ДатаПолучения, ДЕНЬ),
| Сотрудник В (&Сотрудники)
| И Показатель = &ИСН) КАК ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних";
Запрос.УстановитьПараметр("ДатаПолучения", ДатаПолучения);
Запрос.УстановитьПараметр("Сотрудники", Сотрудники);
Запрос.УстановитьПараметр("ИСН", Справочники.ПоказателиРасчетаЗарплаты.НайтиПоНаименованию("Индивидуальная стимулирующая надбавка (процентом)"));
Результат = Запрос.Выполнить();
Для добавления в проверку новых параметров по которым заполняются кадровые данные, следует расширить Функцию "НеобходимыСведенияКадровыхДанных", для остальных - "НеобходимыСведенияПоОставшимсяПараметрам", а код заполнения параметров в процедуру "ДополнитьПоПараметрам".
Код открыт.
Проверено на следующих конфигурациях и релизах:
- Зарплата и управление персоналом, редакция 3.1, релизы 3.1.28.64