При оформлении выплаты заработной платы через банк бухгалтерии часто требуется расширенный состав данных в печатной форме (например, в «Списке перечислений» документа Ведомость в банк). Типовой макет содержит только ФИО сотрудника, номер лицевого счета и сумму, однако для идентификации физлиц банку может потребоваться дата рождения. Разберем особенности получения этих данных в конфигурации 1С:Зарплата и управление персоналом 3.1 и рассмотрим все варианты реализации доработки: от создания внешней печатной формы до использования расширений и прямого изменения метаданных.
Прежде чем приступать к изменению макетов и алгоритмов вывода, проанализируем, где именно хранятся нужные сведения. В табличной части документа выплаты содержится ссылка на справочник Сотрудники. Однако реквизит ДатаРождения принадлежит не самому сотруднику, а связанному объекту — справочнику ФизическиеЛица.
Следовательно, в тексте запроса, подготавливающего данные для вывода в табличный документ, обращение к дате рождения выполняется через реквизит физического лица:
ВЫБРАТЬ
ВедомостьВБанкСостав.Сотрудник КАК Сотрудник,
ВедомостьВБанкСостав.Сотрудник.ФизическоеЛицо.ДатаРождения КАК ДатаРождения,
ВедомостьВБанкСостав.НомерЛицевогоСчета КАК НомерЛицевогоСчета,
ВедомостьВБанкСостав.КВыплате КАК Сумма
ИЗ
Документ.ВедомостьНаВыплатуЗарплатыВБанк.Состав КАК ВедомостьВБанкСостав
ГДЕ
ВедомостьВБанкСостав.Ссылка В(&МассивОбъектов)
Также возможно использование левого соединения с таблицей Справочник.ФизическиеЛица, если в типовом запросе уже выбирается ссылка на физлицо.
Создание внешней печатной формы позволяет оставить конфигурацию на полной поддержке поставщика. Печатная форма подключается через справочник Дополнительные отчеты и обработки.
Важно помнить: внешние печатные формы всегда разрабатываются как внешние обработки с расширением *.epf (а не внешние отчеты *.erf).
Разберем по шагам создание такой обработки:
ДатаРождения.СведенияОВнешнейОбработке(), регламентированную Библиотекой Стандартных Подсистем (БСП):
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ИнициализироватьСтруктуруРегистрации();
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
ПараметрыРегистрации.Версия = "1.0";
ПараметрыРегистрации.БезопасныйРежим = Ложь;
ПараметрыРегистрации.Назначение.Добавить("Документ.ВедомостьНаВыплатуЗарплатыВБанк");
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = НСтр("ru = 'Список перечислений (с датой рождения)'");
Команда.Идентификатор = "СписокПеречисленийСДатойРождения";
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
Команда.ПоказыватьОповещение = Истина;
Возврат ПараметрыРегистрации;
КонецФункции
Печать(), которая сформирует ТабличныйДокумент:
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ПечатнаяФорма = УправлениеПечатью.СформироватьПечатнуюФорму(
КоллекцияПечатныхФорм,
"СписокПеречисленийСДатойРождения",
"Список перечислений (с датой рождения)"
);
Если ПечатнаяФорма <> Неопределено Тогда
ПечатнаяФорма.ТабличныйДокумент = СформироватьПечатныйДокумент(МассивОбъектов, ОбъектыПечати);
КонецЕсли;
КонецПроцедуры
Обратите внимание на безопасный режим: если при формировании печатной формы в коде используются привилегированные модули расчета ЗУП 3.1 или прямое обращение к общим процедурам, требующим полных прав, в функции СведенияОВнешнейОбработке() необходимо отключить безопасный режим (БезопасныйРежим = Ложь) или настроить соответствующие разрешения.
Наиболее современный и удобный способ доработки печатных форм в среде 1С:Предприятие 8.3 — использование механизма расширений конфигурации. В отличие от ВПФ, расширение не требует создания отдельных файлов на диске и полностью встраивается в типовую подсистему печати.
Порядок действий при использовании расширения:
&Вместо или &ИзменениеИКонтроля, дописываем получение даты рождения в текст запроса и заполняем параметр области строки макета.Преимущество этого метода заключается в том, что основная конфигурация остается на типовой поддержке поставщика, а само расширение автоматически переносится и сохраняет работоспособность при регулярных обновлениях ЗУП 3.1.
Если конфигурация уже снята с поддержки или находится на выборочной поддержке с возможностью изменения, доработку можно выполнить непосредственно в метаданных.
Алгоритм действий:
ВедомостьНаВыплатуЗарплатыВБанк и добавляем новую колонку в области ШапкаТаблицы и Строка.ДатаРождения и задаем формат вывода даты (например, ДФ=dd.MM.yyyy).Сотрудник.ФизическоеЛицо.ДатаРождения.
ОбластьСтрока.Параметры.Заполнить(ВыборкаПоСтрокам);
// Если требуется явное форматирование:
ОбластьСтрока.Параметры.ДатаРождения = Формат(ВыборкаПоСтрокам.ДатаРождения, "ДФ=dd.MM.yyyy");
ТабличныйДокумент.Вывести(ОбластьСтрока);
Важно: При таком подходе при каждом последующем обновлении конфигурации через Сравнить и объединить с конфигурацией поставщика потребуется вручную контролировать изменения модуля менеджера и макета, чтобы не затереть доработку типовым релизом.
В режиме «1С:Предприятие» в разделе Администрирование — Печатные формы, отчеты и обработки — Макеты печатных форм администратор может отредактировать оформление макета (изменить ширину колонок, шрифты, границы, статический текст). Однако добавить принципиально новые данные, которых нет в выборке типового запроса формирования документа, этим инструментом невозможно. Для вывода даты рождения обязательно требуется модификация программного кода выборки данных одним из описанных выше способов.