Напишу по пунктам, что нужно сделать. Делал на ЗУП (3.1.13.146), при необходимости можно подкорректировать)
1) создаём расширение конфигурации:
2) переносим в расширение справочник физические лица и добавляем туда макет справки(будем использовать word) :
3) вносим изменения в модуль менеджера справочника:
/// --> Пономарев 08.04.2020
&После("ДобавитьКомандыПечати")
Процедура ДобавитьКомандыПечатиРассылкаДокументов(КомандыПечати) Экспорт
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "СправкаПропуск";
КомандаПечати.Представление = НСтр("ru = 'Справка-пропуск на время карантина COVID-19'");
КомандаПечати.Картинка = БиблиотекаКартинок.ФорматWord2007;
КонецПроцедуры
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ДанныеОбъекта = Новый Структура();
ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "СправкаПропуск");
Если ПечатнаяФорма <> Неопределено Тогда
ИмяМакета = "СправкаПропуск";
ОфисныеДокументы = Новый Соответствие;
ДвоичныеДанные = УправлениеПечатью.МакетПечатнойФормы("Справочник.ФизическиеЛица.ПФ_DOC_СправкаПропуск_ru");
ОбластьЗаявление = Новый Структура;
ОбластьЗаявление.Вставить("ИмяОбласти", "Заявление");
ОбластьЗаявление.Вставить("ТипОбласти", "Общая");
ОбластьЗаявлениеКонец = Новый Структура;
ОбластьЗаявлениеКонец.Вставить("ИмяОбласти", "ЗаявлениеКонец");
ОбластьЗаявлениеКонец.Вставить("ТипОбласти", "Общая");
ОбластьСоглашение = Новый Структура;
ОбластьСоглашение.Вставить("ИмяОбласти", "Соглашение");
ОбластьСоглашение.Вставить("ТипОбласти", "Общая");
ОбластьСоглашениеКонец = Новый Структура;
ОбластьСоглашениеКонец.Вставить("ИмяОбласти", "СоглашениеКонец");
ОбластьСоглашениеКонец.Вставить("ТипОбласти", "Общая");
Макет = УправлениеПечатью.ИнициализироватьМакетОфисногоДокумента(ДвоичныеДанные, Неопределено, ИмяМакета);
ПечатнаяФормаДокумента = УправлениеПечатью.ИнициализироватьПечатнуюФорму(Неопределено, Макет.НастройкиСтраницыМакета, Макет);
ДанныеОбъекта.Вставить("Дата", Формат(ТекущаяДата(), "ДЛФ=ДД")); /// <-- Пономарев 08.04.2020
//Получение сотрудников
ПараметрыПолучения = КадровыйУчет.ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛиц();
ПараметрыПолучения.СписокФизическихЛиц = МассивОбъектов;
ТаблицаСотрудников = КадровыйУчет.СотрудникиОрганизации(Истина, ПараметрыПолучения);
КоличествоСотрудников = ТаблицаСотрудников.Количество();
СчетчикСотрудников = 0;
Если КоличествоСотрудников > 0 Тогда
МассивСотрудников = ТаблицаСотрудников.ВыгрузитьКолонку("Сотрудник");
КадровыеДанные = КадровыйУчет.КадровыеДанныеСотрудников(Истина, МассивСотрудников, "ТекущаяОрганизация, ФИО, ФамилияИО, ДокументПредставление, ДатаДоговораКонтракта, НомерДоговораКонтракта");
Для Каждого Сотрудник Из КадровыеДанные Цикл
СчетчикСотрудников = СчетчикСотрудников + 1;
//сотрудник
ДанныеОбъекта.Вставить("ФИО", Сотрудник.ФИО);
ДанныеОбъекта.Вставить("ФамилияИнициалы", Сотрудник.ФамилияИО);
ДанныеОбъекта.Вставить("ФИОВРодительномПадеже", СклонениеПредставленийОбъектов.ПросклонятьФИО(Сотрудник.ФИО, 2));
ДанныеОбъекта.Вставить("ПаспортныеДанные", Сотрудник.ДокументПредставление);
ДанныеОбъекта.Вставить("АдресФактический", "");
ДанныеОбъекта.Вставить("Телефон", "");
ДанныеОбъекта.Вставить("АдресЭлектроннойПочты", "");
СотрудникТаблицаКИ = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(Сотрудник.ФизическоеЛицо, , ТекущаяДатаСеанса(), Ложь);
НайденнаяСтрокаМобильныйТелефон = СотрудникТаблицаКИ.Найти(ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ВидыКонтактнойИнформации.ТелефонМобильныйФизическиеЛица"), "Вид");
Если НайденнаяСтрокаМобильныйТелефон <> Неопределено Тогда
ДанныеОбъекта.Телефон = НайденнаяСтрокаМобильныйТелефон.Представление;
КонецЕсли;
НайденнаяСтрокаЭлектроннаяПочта = СотрудникТаблицаКИ.Найти(ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ВидыКонтактнойИнформации.EMailФизическиеЛица"), "Вид");
Если НайденнаяСтрокаЭлектроннаяПочта <> Неопределено Тогда
ДанныеОбъекта.АдресЭлектроннойПочты = НайденнаяСтрокаЭлектроннаяПочта.Представление;
КонецЕсли;
НайденнаяСтрокаАдрес = СотрудникТаблицаКИ.Найти(ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ВидыКонтактнойИнформации.АдресМестаПроживанияФизическиеЛица"), "Вид");
Если НайденнаяСтрокаАдрес <> Неопределено Тогда
ДанныеОбъекта.АдресФактический = НайденнаяСтрокаАдрес.Представление;
КонецЕсли;
//трудовой договор
ДанныеОбъекта.Вставить("ДатаТрудовогоДоговораСтрокой", Формат(Сотрудник.ДатаДоговораКонтракта, "ДЛФ=D"));
Если ЗначениеЗаполнено(Сотрудник.НомерДоговораКонтракта) Тогда
ДанныеОбъекта.Вставить("НомерТрудовогоДоговораСтрокой", " № "+ Сотрудник.НомерДоговораКонтракта);
Иначе
ДанныеОбъекта.Вставить("НомерТрудовогоДоговораСтрокой", "");
КонецЕсли;
//организация
ДанныеОбъекта.Вставить("Организация", Сотрудник.ТекущаяОрганизация);
ПолноеНаименованиеОрганизации = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Сотрудник.ТекущаяОрганизация, "НаименованиеПолное");
ДанныеОбъекта.Вставить("ПолноеНаименованиеОрганизации", ПолноеНаименованиеОрганизации);
ДанныеОбъекта.Вставить("ОрганизацияВРодительномПадеже", СклонениеПредставленийОбъектов.ПросклонятьПредставление(ПолноеНаименованиеОрганизации, 2));
ДанныеОбъекта.Вставить("АдресОрганизации", "");
ДанныеОбъекта.Вставить("ТелефонОрганизации", "");
ДанныеОбъекта.Вставить("АдресЭлектроннойПочтыОрганизации", "");
ОрганизацияТаблицаКИ = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(Сотрудник.ТекущаяОрганизация, , ТекущаяДатаСеанса(), Ложь);
НайденнаяСтрокаТелефон = ОрганизацияТаблицаКИ.Найти(ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ВидыКонтактнойИнформации.ТелефонОрганизации"), "Вид");
Если НайденнаяСтрокаТелефон <> Неопределено Тогда
ДанныеОбъекта.ТелефонОрганизации = НайденнаяСтрокаТелефон.Представление;
КонецЕсли;
НайденнаяСтрокаЭлектроннаяПочта = ОрганизацияТаблицаКИ.Найти(ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ВидыКонтактнойИнформации.EmailОрганизации"), "Вид");
Если НайденнаяСтрокаЭлектроннаяПочта <> Неопределено Тогда
ДанныеОбъекта.АдресЭлектроннойПочтыОрганизации = НайденнаяСтрокаЭлектроннаяПочта.Представление;
КонецЕсли;
НайденнаяСтрокаАдрес = ОрганизацияТаблицаКИ.Найти(ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ВидыКонтактнойИнформации.ЮрАдресОрганизации"), "Вид");
Если НайденнаяСтрокаАдрес <> Неопределено Тогда
ДанныеОбъекта.АдресОрганизации = НайденнаяСтрокаАдрес.Представление;
КонецЕсли;
//руководитель
СтруктураСведений = СведенияОбОтветственныхЛицах.СведенияОбОтветственныхЛицах(Сотрудник.ТекущаяОрганизация, "Руководитель, ДолжностьРуководителя, ДолжностьРуководителяСтрокой", ТекущаяДатаСеанса());
ДанныеОбъекта.Вставить("ФамилияИнициалыРуководителя", "");
ДанныеОбъекта.Вставить("ФИОРуководителяВРодительномПадеже", "");
ДанныеОбъекта.Вставить("ФамилияИнициалыРуководителяВДательномПадеже", "");
ДанныеОбъекта.Вставить("ДолжностьРуководителя", "");
ДанныеОбъекта.Вставить("ДолжностьРуководителяВРодительномПадеже", "");
ДанныеОбъекта.Вставить("ДолжностьРуководителяВДательномПадеже", "");
Если СтруктураСведений.Свойство("Руководитель") Тогда
ДанныеОбъекта.ФамилияИнициалыРуководителя = ФизическиеЛицаКлиентСервер.ФамилияИнициалы(Строка(СтруктураСведений.Руководитель));
ДанныеОбъекта.ФИОРуководителяВРодительномПадеже = СклонениеПредставленийОбъектов.ПросклонятьФИО(Строка(СтруктураСведений.Руководитель), 2);
ДанныеОбъекта.ФамилияИнициалыРуководителяВДательномПадеже = СклонениеПредставленийОбъектов.ПросклонятьФИО(Строка(СтруктураСведений.Руководитель), 3);
КонецЕсли;
Если СтруктураСведений.Свойство("ДолжностьРуководителя") Тогда
ДанныеОбъекта.ДолжностьРуководителя = СтруктураСведений.ДолжностьРуководителяСтрокой;
ДанныеОбъекта.ДолжностьРуководителяВРодительномПадеже = СклонениеПредставленийОбъектов.ПросклонятьПредставление(СтруктураСведений.ДолжностьРуководителяСтрокой, 2, СтруктураСведений.ДолжностьРуководителя);
ДанныеОбъекта.ДолжностьРуководителяВДательномПадеже = СклонениеПредставленийОбъектов.ПросклонятьПредставление(СтруктураСведений.ДолжностьРуководителяСтрокой, 3, СтруктураСведений.ДолжностьРуководителя);
КонецЕсли;
Область = УправлениеПечатью.ОбластьМакета(Макет, ОбластьЗаявление);
УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФормаДокумента, Область, ДанныеОбъекта, Ложь);
Область = УправлениеПечатью.ОбластьМакета(Макет, ОбластьЗаявлениеКонец);
УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФормаДокумента, Область, ДанныеОбъекта, Ложь);
Область = УправлениеПечатью.ОбластьМакета(Макет, ОбластьСоглашение);
УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФормаДокумента, Область, ДанныеОбъекта, Ложь);
Если СчетчикСотрудников <> КоличествоСотрудников Тогда
Область = УправлениеПечатью.ОбластьМакета(Макет, ОбластьСоглашениеКонец);
УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФормаДокумента, Область, ДанныеОбъекта, Ложь);
КонецЕсли;
КонецЦикла;
КонецЕсли;
АдресХранилищаОфисныйДокумент = УправлениеПечатью.СформироватьДокумент(ПечатнаяФормаДокумента);
УправлениеПечатью.ОчиститьСсылки(ПечатнаяФормаДокумента, Ложь);
УправлениеПечатью.ОчиститьСсылки(Макет);
ОфисныеДокументы.Вставить(АдресХранилищаОфисныйДокумент, НСтр("ru = 'Справка-пропуск на время карантина COVID-19'"));
ПечатнаяФорма.СинонимМакета = НСтр("ru = 'Справка-пропуск на время карантина COVID-19 (документ Microsoft Word)'");
ПечатнаяФорма.ОфисныеДокументы = ОфисныеДокументы;
КонецЕсли;
КонецПроцедуры
/// <-- Пономарев 08.04.2020
4) обновляем и запускаем 1С
В прикреплённых файлах
- расширение(делал для последнего ЗУП (3.1.13.146), при необходимости можно подкорректировать)
Всё это можно использовать как шаблон.
UPD 19.04.2020
По просьбе, добавлено расширение для Ставропольского края. (Кому нужно, вставьте свою шапку в макете.)
UPD
У кого уже подключено расширение Пропуска от 1с, то обновите расширение на новое, прикреплённое ко второму комментарию или от сюда https://yadi.sk/d/jF0LROtIlkbRWQ