Как изменить макет печатной формы извещения в 1С:ЗУП и почему адрес по прописке выводится пустым?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом
← На главную

При работе с кадровыми отчетами и печатными формами в программе 1С:Зарплата и Управление Персоналом (ЗУП) 3.1 часто возникает необходимость адаптировать поставляемые макеты под требования внутренних регламентов или контролирующих органов. Одной из популярных задач является изменение вывода контактной информации в печатной форме «Извещение о приеме или увольнении» (используется для отчетности в военкоматы). По умолчанию в этой форме часто выводится фактический адрес проживания сотрудника, однако кадровикам требуется выводить адрес по прописке (регистрации).

Пользователи часто сталкиваются с проблемой: при обычном переименовании параметра в макете печатной формы (например, замене адреса проживания на адрес по прописке) ячейка в сформированном документе остается абсолютно пустой. В этой статье мы подробно разберем, почему так происходит, как функционирует механизм компоновки данных и какими способами можно решить эту задачу без изменения конфигурации.

Почему поле в макете выводится пустым? Выясняем причину

Для того чтобы понять природу этой проблемы, проанализируем архитектуру печатных форм в современных конфигурациях 1С на базе управляемых форм. Большинство отчетов и печатных документов используют Систему компоновки данных (СКД) в сочетании с механизмами Библиотеки стандартных подсистем (БСП).

Когда мы редактируем поставляемый макет печатной формы через пользовательский интерфейс (раздел Администрирование — Печатные формы, отчеты и обработки — Макеты печатных форм), мы работаем исключительно с визуальным представлением данных. Шаблон макета содержит именованные параметры, например, АдресПроживанияПредставление. Если мы просто вручную переименуем этот параметр в АдресПоПропискеПредставление, система не начнет автоматически выводить нужные данные.

Причина кроется в следующем: макет является лишь получателем данных, которые ему передает схема компоновки (запрос к базе данных). Если в самом запросе СКД поле «Адрес по прописке» не выбрано или этот параметр не передается в результирующую выборку, то заполнить ячейку макета системе будет просто нечем. В итоге ячейка инициализируется значением Неопределено или пустой строкой, что пользователь и видит на экране.

Способ 1. Пошаговая настройка через изменение варианта отчета (СКД)

Самый надежный и корректный способ решить проблему без привлечения программистов и без снятия конфигурации с поддержки — это принудительное добавление нужного поля в выборку СКД через расширенные настройки отчета. Рассмотрим этот процесс по шагам.

  1. Открываем нужный кадровый отчет. Переходим в раздел Кадры, далее выбираем Кадровые отчеты и находим отчет «Извещение о приеме или увольнении» (группа отчетов «Отчетность для военкоматов»).
  2. Переходим в режим изменения варианта. На панели управления отчетом нажимаем кнопку Еще, затем выбираем пункт Прочее и открываем окно Изменить вариант отчета....
  3. Добавляем поле в выборку. В открывшемся окне настройки СКД обратите внимание на структуру отчета и вкладку Выбранные поля в нижней части формы:
    • В левом дереве доступных полей находим ветку, отвечающую за сведения о сотруднике или физическом лице. Обычно путь выглядит так: Физическое лицо —> Адрес по прописке.
    • Раскрываем эту группу и находим поле Представление (оно содержит уже готовую текстовую строку адреса). Полный путь к полю в системе будет выглядеть как Физическое лицо.Адрес по прописке.Представление.
    • Перетаскиваем это поле с помощью мыши или кнопки со стрелкой в правую колонку — в список Выбранные поля.
  4. Связываем макет с новым полем. Теперь, когда поле гарантированно выбирается запросом отчета, переходим в пользовательский макет печатной формы и в соответствующей ячейке прописываем точное имя параметра, совпадающее с именем добавленного поля в СКД (например, АдресПоПропискеПредставление). Стоит отметить, что в некоторых печатных формах содержится несколько макетов (например, для разных ведомств или разных форматов выгрузки), поэтому изменить параметр нужно во всех используемых шаблонах макета.
  5. Сохраняем настройки. Нажимаем кнопку Завершить редактирование в окне изменения варианта. Чтобы настройки не сбросились при следующем открытии или обновлении программы, сохраняем измененный вариант отчета через Еще — Варианты отчета — Сохранить вариант отчет как..., задав ему понятное имя.

Способ 2. Использование новой штатной настройки воинского учета

Разработчики фирмы «1С» регулярно обновляют функционал программных продуктов под меняющееся законодательство. В последних релизах 1С:ЗУП 3.1 появился специализированный механизм, который позволяет решить проблему с адресами для военных комиссариатов глобально, вообще не прибегая к редактированию макетов и вариантов СКД.

Проанализируем, как включить эту опцию:

  1. Переходим в раздел меню Настройка.
  2. Выбираем пункт Кадровый учет.
  3. Находим гиперссылку или подраздел Воинский учет.
  4. В открывшемся окне настроек устанавливаем флажок напротив опции «Заполнять только адрес по прописке в документах электронного обмена».

Как это работает на практике? При активации данной настройки внутренние алгоритмы программы автоматически перенаправляют потоки получения данных. Во все печатные формы, извещения, листки сообщения и файлы выгрузки для военкоматов программа начнет принудительно подставлять адрес по прописке (регистрации) вместо фактического адреса проживания сотрудника. Это избавляет пользователя от ручного труда и необходимости поддерживать нетиповые макеты при обновлениях конфигурации.

Особенности настройки в версии 1С:ЗУП КОРП

Если в вашей организации используется корпоративная версия программы — 1С:ЗУП КОРП, у вас есть доступ к расширенному инструменту под названием «Настраиваемые печатные формы».

Этот инструмент представляет собой удобный интерактивный конструктор макетов. Вы можете перетаскивать реквизиты сотрудника прямо на форму документа в режиме визуального редактирования. Однако при работе с ним важно помнить ключевое правило: данные в базе должны физически существовать.

Если у сотрудника в его личной карточке (раздел Личные данные — группа Адреса, телефоны) заполнен только «Адрес проживания», а поле «Адрес по прописке» оставлено пустым, то даже при идеально настроенном макете и правильных параметрах СКД печатная форма все равно выведет пустоту в соответствующей графе. Всегда проверяйте полноту заполнения персональных данных в карточках физических лиц перед выводом отчетов.

Для разработчиков: пример программного анализа полей СКД

Если вы хотите автоматизировать контроль наличия нужных полей программным методом или создаете внешнюю печатную форму, рассмотрим пример кода, который позволяет проверить, какие поля доступны в компоновщике настроек отчета. Это поможет избежать вывода пустых областей в нетиповых отчетах.


// Пример проверки наличия поля в настройках компоновщика данных
Функция ПроверитьНаличиеПоляВыборки(КомпоновщикНастроек, ИмяПоля) Экспорт
    
    Для Каждого ЭлементВыбора Из КомпоновщикНастроек.Настройки.Выбор.Элементы Цикл
        Если ТипЗнч(ЭлементВыбора) = Тип("ВыбранноеПолеКомпоновкиДанных") Тогда
            Если Строка(ЭлементВыбора.Поле) = ИмяПоля Тогда
                Возврат Истина;
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    
    Возврат Ложь;
    
КонецФункции

Данный метод позволяет динамически анализировать состав полей компоновщика. Если функция возвращает Ложь для поля "ФизическоеЛицо.АдресПоПропискеПредставление", вы можете программно добавить его в коллекцию выбранных полей перед формированием отчета, чтобы гарантировать корректное заполнение вашего макета.

Таким образом, мы детально разобрали все возможные варианты решения проблемы — от простых пользовательских манипуляций с вариантами отчета СКД до автоматических глобальных настроек системы и программных проверок. Выберите оптимальный способ в зависимости от используемого релиза программы и ваших задач.

← На главную