При формировании кадровых печатных форм (например, трудового договора) из справочника СотрудникиОрганизаций в распределенной информационной базе (РИБ) нередко возникает исключение: «Не удалось сформировать внешнюю печатную форму! Поле объекта не обнаружено (Пол)». При этом в центральной базе печать может выполняться корректно, а в карточке сотрудника все реквизиты заполнены.
Разберем детально, почему возникает такое поведение системы, как устроена структура хранения данных физических лиц и сотрудников в типовых конфигурациях на обычных формах (например, УПП 1.3), а также выясним, как правильно отладить и исправить внешнюю обработку печати.
Проанализируем технические факторы, приводящие к данной ошибке:
ВнешниеОбработки. Если данный справочник исключен из плана обмена РИБ или файл в узле не был обновлен, узел базы данных продолжает использовать устаревший программный код обработки, где логика получения реквизитов еще не была скорректирована.Пол отсутствует непосредственно в справочнике СотрудникиОрганизаций — он относится к справочнику ФизическиеЛица. Если запрос во внешней обработке обращается напрямую к свойству сотрудника без разыменования или не выбирает поле Физлицо.Пол, обращение к такому полю в выборке вызывает исключение.Пол. Если запрос внешней формы вернул выборку без данной колонки, ошибка возникает на этапе передачи параметров в функцию формирования ФИО.Частая проблема при попытке локализовать ошибку — точки останова в конфигурации не срабатывают при нажатии кнопки печати. Это происходит потому, что внешняя обработка загружается динамически из хранилища значений во временный файл и выполняется в отдельном контексте.
Рассмотрим правильный алгоритм поиска проблемного места:
ВнешниеОбработки в узле РИБ, найдем обработку трудового договора и сохраним ее файл (расширение .epf) на локальный диск..epf (в процедурах формирования табличного документа и выполнения запроса данных).Разберем по шагам варианты решения проблемы в зависимости от исходной ситуации.
Если в центральной базе печать работает корректно, а в периферийном узле возникает ошибка, выполним обновление файла обработки в узле:
ВнешниеОбработки..epf на диск.Если печатная форма разрабатывается или дорабатывается индивидуально, проверим текст запроса, формирующего данные для макета. Убедимся, что поле Пол получается через ссылку на физическое лицо:
ВЫБРАТЬ
СотрудникиОрганизаций.Ссылка КАК Сотрудник,
СотрудникиОрганизаций.Физлицо КАК Физлицо,
СотрудникиОрганизаций.Физлицо.Пол КАК Пол,
СотрудникиОрганизаций.ТекущееПодразделениеОрганизации КАК Подразделение,
СотрудникиОрганизаций.ТекущаяДолжностьОрганизации КАК Должность
ИЗ
Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
ГДЕ
СотрудникиОрганизаций.Ссылка = &ТекущийСотрудник
При заполнении параметров для процедур склонения и вывода данных убедимся, что значение пола корректно передается в результирующую структуру:
ПараметрыФИО = Новый Структура;
ПараметрыФИО.Вставить("ФИО", Выборка.Физлицо.Наименование);
ПараметрыФИО.Вставить("Пол", Выборка.Пол);
После внесения изменений сохраним файл обработки, обновим его в справочнике внешних обработок и повторим печать документа.