Как исправить ошибку «Поле объекта не обнаружено (ФИОКассира)» при печати ПКО в 1С:УТ 11.4

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При работе в актуальных релизах конфигурации «1С:Управление торговлей 11.4» (а также в ERP 2.4 и КА 2.4) пользователи часто сталкиваются с неприятной ошибкой при попытке распечатать Приходный кассовый ордер (ПКО). Система прерывает работу с сообщением: {ОбщийМодуль.ПриходныйКассовыйОрдерЛокализация.Модуль(346)}: Поле объекта не обнаружено (ФИОКассира). Разберем подробно причины возникновения этой ситуации и пошагово выясним, как её устранить.

Анализ программного кода ошибки

Для начала проанализируем место возникновения проблемы. Ошибка происходит в общем модуле ПриходныйКассовыйОрдерЛокализация. Программа пытается передать в параметры макета печатной формы строковое представление фамилии и инициалов кассира. Код выглядит следующим образом:


// Фрагмент кода в общем модуле
ОбластьМакета.Параметры.ФИОКассира = ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(Выборка.Кассир, Выборка.ДатаДокумента);

Суть ошибки заключается в том, что в объекте Параметры текущей области макета отсутствует поле с именем ФИОКассира. Это означает, что программный код «ожидает» наличия этого параметра в печатной форме, но в самом макете (табличном документе) такого именованного поля нет.

Причина №1: Конфликт с расширениями конфигурации

Это самая распространенная причина. В современных версиях 1С активно используются расширения. Если в вашей базе установлено расширение, которое каким-либо образом модифицирует документ ПриходныйКассовыйОрдер или содержит его макет, возникает конфликт версий.

Рассмотрим механизм возникновения: после обновления основной конфигурации до нового релиза разработчики 1С изменили макет ПКО, добавив в него поле ФИОКассира для соответствия законодательству. Однако в расширении остался сохранен старый макет из предыдущей версии, где этого поля еще не было. При печати система берет макет из расширения, а код — из основной конфигурации.

Как исправить:

  1. Перейдем в раздел Администрирование — Печатные формы, отчеты и обработки — Расширения.
  2. Проверим, есть ли расширения, затрагивающие ПКО.
  3. Отключим расширение и проверим печать. Если ошибка исчезла — проблема в нем.
  4. В конфигураторе необходимо зайти в макет расширения и вручную добавить параметр ФИОКассира в соответствующую ячейку (обычно это область подписи кассира или квитанция) или обновить макет в расширении до актуального состояния из основной конфигурации.

Причина №2: Использование внешних печатных форм

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

Проанализируем ситуацию: если ваша ВПФ вызывает метод печати из ПриходныйКассовыйОрдерЛокализация, но сама содержит макет, созданный год назад, в нем гарантированно не будет параметра ФИОКассира. Система не сможет сопоставить данные, и вы увидите ошибку.

Решение: необходимо обновить внешнюю печатную форму в справочнике «Дополнительные отчеты и обработки». Программисту следует открыть макет ВПФ и переименовать или добавить параметр в ячейке, где выводится ФИО кассира.

Причина №3: Ошибка релиза или кэширование метаданных

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

Посмотрим, что можно сделать:

  1. Очистка кэша: удалим информационную базу из списка в стартере 1С и добавим её заново. Это принудительно очистит локальные метаданные.
  2. Проверка в конфигураторе: найдем документ ПриходныйКассовыйОрдер, откроем макет ПФ_MXL_ПриходныйКассовыйОрдер. Проверим область Подписи и область Квитанция. Убедимся, что параметр ФИОКассира присутствует. Если там указан старый параметр (например, просто Кассир), а код требует ФИОКассира, необходимо вручную переименовать параметр в свойствах ячейки макета.

Причина №4: Проблема заполнения данных физлица

Хотя ошибка явно указывает на отсутствие поля в макете, иногда корень проблемы кроется в данных. Если для кассира не заполнена история фамилий или само физическое лицо указано некорректно, функция ФизическиеЛицаУТ.ФамилияИнициалыФизЛица может возвращать пустой результат или вызывать сбои в структуре параметров.

Проверим следующие данные:

Технический итог для программиста

Если вы решили править конфигурацию вручную, обратите внимание на то, как формируется структура параметров в модуле менеджера или модуле локализации. При формировании области макета 1С использует метод ЗаполнитьЗначенияСвойств или прямое присвоение. Чтобы избежать падения системы, можно добавить проверку на наличие параметра в макете:


Если ОбластьМакета.Параметры.Найти("ФИОКассира") <> Неопределено Тогда
    ОбластьМакета.Параметры.ФИОКассира = ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(Выборка.Кассир, Выборка.ДатаДокумента);
КонецЕсли;

Однако правильнее будет привести макет в соответствие с кодом, так как отсутствие ФИО кассира в печатной форме может быть нарушением правил ведения кассовых операций.

← На главную