Почему не печатается трудовой договор и возникает ошибка «Поле объекта не обнаружено (Пол)» в узле РИБ?

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

При формировании кадровых печатных форм (например, трудового договора) из справочника СотрудникиОрганизаций в распределенной информационной базе (РИБ) нередко возникает исключение: «Не удалось сформировать внешнюю печатную форму! Поле объекта не обнаружено (Пол)». При этом в центральной базе печать может выполняться корректно, а в карточке сотрудника все реквизиты заполнены.

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

Причины возникновения ошибки

Проанализируем технические факторы, приводящие к данной ошибке:

  1. Несоответствие версий внешней печатной формы между узлами. Внешние печатные формы хранятся в виде двоичных данных в справочнике ВнешниеОбработки. Если данный справочник исключен из плана обмена РИБ или файл в узле не был обновлен, узел базы данных продолжает использовать устаревший программный код обработки, где логика получения реквизитов еще не была скорректирована.
  2. Особенности метаданных кадрового учета. В конфигурациях линейки УПП и ЗУП реквизит Пол отсутствует непосредственно в справочнике СотрудникиОрганизаций — он относится к справочнику ФизическиеЛица. Если запрос во внешней обработке обращается напрямую к свойству сотрудника без разыменования или не выбирает поле Физлицо.Пол, обращение к такому полю в выборке вызывает исключение.
  3. Склонение ФИО и вызовы общих модулей. При формировании печатной формы вызываются служебные функции склонения инициалов. В качестве параметров эти функции принимают структуру, обязательным полем которой является Пол. Если запрос внешней формы вернул выборку без данной колонки, ошибка возникает на этапе передачи параметров в функцию формирования ФИО.

Особенности отладки внешних печатных форм

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

Рассмотрим правильный алгоритм поиска проблемного места:

  1. Выгрузка внешней формы из базы. Откроем справочник ВнешниеОбработки в узле РИБ, найдем обработку трудового договора и сохраним ее файл (расширение .epf) на локальный диск.
  2. Открытие обработки через конфигуратор. В конфигураторе откроем сохраненный файл обработки через меню «Файл» — «Открыть».
  3. Установка точек останова. Точки останова необходимо ставить непосредственно в модуле объекта открытого файла .epf (в процедурах формирования табличного документа и выполнения запроса данных).
  4. Включение остановки по ошибке. В меню конфигуратора выберем «Отладка» — «Остановка по ошибке» и установим флаг «Останавливаться по ошибке», чтобы среда разработки автоматически остановила выполнение в момент сбоя.

Способы устранения проблемы

Разберем по шагам варианты решения проблемы в зависимости от исходной ситуации.

Вариант 1. Синхронизация внешней обработки из центральной базы

Если в центральной базе печать работает корректно, а в периферийном узле возникает ошибка, выполним обновление файла обработки в узле:

  1. В центральной информационной базе перейдем в справочник ВнешниеОбработки.
  2. Откроем элемент внешней печатной формы трудового договора и сохраним файл .epf на диск.
  3. В узле РИБ откроем этот же элемент справочника и загрузим актуальный файл из сохраненного источника.
  4. Запишем элемент справочника и проверим печать из карточки сотрудника.

Вариант 2. Корректировка запроса во внешней печатной форме

Если печатная форма разрабатывается или дорабатывается индивидуально, проверим текст запроса, формирующего данные для макета. Убедимся, что поле Пол получается через ссылку на физическое лицо:


ВЫБРАТЬ
    СотрудникиОрганизаций.Ссылка КАК Сотрудник,
    СотрудникиОрганизаций.Физлицо КАК Физлицо,
    СотрудникиОрганизаций.Физлицо.Пол КАК Пол,
    СотрудникиОрганизаций.ТекущееПодразделениеОрганизации КАК Подразделение,
    СотрудникиОрганизаций.ТекущаяДолжностьОрганизации КАК Должность
ИЗ
    Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
ГДЕ
    СотрудникиОрганизаций.Ссылка = &ТекущийСотрудник

При заполнении параметров для процедур склонения и вывода данных убедимся, что значение пола корректно передается в результирующую структуру:


ПараметрыФИО = Новый Структура;
ПараметрыФИО.Вставить("ФИО", Выборка.Физлицо.Наименование);
ПараметрыФИО.Вставить("Пол", Выборка.Пол);

После внесения изменений сохраним файл обработки, обновим его в справочнике внешних обработок и повторим печать документа.

← На главную