При работе с кадровыми отчетами и печатными формами в программе 1С:Зарплата и Управление Персоналом (ЗУП) 3.1 часто возникает необходимость адаптировать поставляемые макеты под требования внутренних регламентов или контролирующих органов. Одной из популярных задач является изменение вывода контактной информации в печатной форме «Извещение о приеме или увольнении» (используется для отчетности в военкоматы). По умолчанию в этой форме часто выводится фактический адрес проживания сотрудника, однако кадровикам требуется выводить адрес по прописке (регистрации).
Пользователи часто сталкиваются с проблемой: при обычном переименовании параметра в макете печатной формы (например, замене адреса проживания на адрес по прописке) ячейка в сформированном документе остается абсолютно пустой. В этой статье мы подробно разберем, почему так происходит, как функционирует механизм компоновки данных и какими способами можно решить эту задачу без изменения конфигурации.
Для того чтобы понять природу этой проблемы, проанализируем архитектуру печатных форм в современных конфигурациях 1С на базе управляемых форм. Большинство отчетов и печатных документов используют Систему компоновки данных (СКД) в сочетании с механизмами Библиотеки стандартных подсистем (БСП).
Когда мы редактируем поставляемый макет печатной формы через пользовательский интерфейс (раздел Администрирование — Печатные формы, отчеты и обработки — Макеты печатных форм), мы работаем исключительно с визуальным представлением данных. Шаблон макета содержит именованные параметры, например, АдресПроживанияПредставление. Если мы просто вручную переименуем этот параметр в АдресПоПропискеПредставление, система не начнет автоматически выводить нужные данные.
Причина кроется в следующем: макет является лишь получателем данных, которые ему передает схема компоновки (запрос к базе данных). Если в самом запросе СКД поле «Адрес по прописке» не выбрано или этот параметр не передается в результирующую выборку, то заполнить ячейку макета системе будет просто нечем. В итоге ячейка инициализируется значением Неопределено или пустой строкой, что пользователь и видит на экране.
Самый надежный и корректный способ решить проблему без привлечения программистов и без снятия конфигурации с поддержки — это принудительное добавление нужного поля в выборку СКД через расширенные настройки отчета. Рассмотрим этот процесс по шагам.
Физическое лицо —> Адрес по прописке.Представление (оно содержит уже готовую текстовую строку адреса). Полный путь к полю в системе будет выглядеть как Физическое лицо.Адрес по прописке.Представление.АдресПоПропискеПредставление). Стоит отметить, что в некоторых печатных формах содержится несколько макетов (например, для разных ведомств или разных форматов выгрузки), поэтому изменить параметр нужно во всех используемых шаблонах макета.Разработчики фирмы «1С» регулярно обновляют функционал программных продуктов под меняющееся законодательство. В последних релизах 1С:ЗУП 3.1 появился специализированный механизм, который позволяет решить проблему с адресами для военных комиссариатов глобально, вообще не прибегая к редактированию макетов и вариантов СКД.
Проанализируем, как включить эту опцию:
Как это работает на практике? При активации данной настройки внутренние алгоритмы программы автоматически перенаправляют потоки получения данных. Во все печатные формы, извещения, листки сообщения и файлы выгрузки для военкоматов программа начнет принудительно подставлять адрес по прописке (регистрации) вместо фактического адреса проживания сотрудника. Это избавляет пользователя от ручного труда и необходимости поддерживать нетиповые макеты при обновлениях конфигурации.
Если в вашей организации используется корпоративная версия программы — 1С:ЗУП КОРП, у вас есть доступ к расширенному инструменту под названием «Настраиваемые печатные формы».
Этот инструмент представляет собой удобный интерактивный конструктор макетов. Вы можете перетаскивать реквизиты сотрудника прямо на форму документа в режиме визуального редактирования. Однако при работе с ним важно помнить ключевое правило: данные в базе должны физически существовать.
Если у сотрудника в его личной карточке (раздел Личные данные — группа Адреса, телефоны) заполнен только «Адрес проживания», а поле «Адрес по прописке» оставлено пустым, то даже при идеально настроенном макете и правильных параметрах СКД печатная форма все равно выведет пустоту в соответствующей графе. Всегда проверяйте полноту заполнения персональных данных в карточках физических лиц перед выводом отчетов.
Если вы хотите автоматизировать контроль наличия нужных полей программным методом или создаете внешнюю печатную форму, рассмотрим пример кода, который позволяет проверить, какие поля доступны в компоновщике настроек отчета. Это поможет избежать вывода пустых областей в нетиповых отчетах.
// Пример проверки наличия поля в настройках компоновщика данных
Функция ПроверитьНаличиеПоляВыборки(КомпоновщикНастроек, ИмяПоля) Экспорт
Для Каждого ЭлементВыбора Из КомпоновщикНастроек.Настройки.Выбор.Элементы Цикл
Если ТипЗнч(ЭлементВыбора) = Тип("ВыбранноеПолеКомпоновкиДанных") Тогда
Если Строка(ЭлементВыбора.Поле) = ИмяПоля Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Ложь;
КонецФункции
Данный метод позволяет динамически анализировать состав полей компоновщика. Если функция возвращает Ложь для поля "ФизическоеЛицо.АдресПоПропискеПредставление", вы можете программно добавить его в коллекцию выбранных полей перед формированием отчета, чтобы гарантировать корректное заполнение вашего макета.
Таким образом, мы детально разобрали все возможные варианты решения проблемы — от простых пользовательских манипуляций с вариантами отчета СКД до автоматических глобальных настроек системы и программных проверок. Выберите оптимальный способ в зависимости от используемого релиза программы и ваших задач.