Как исправить ошибку «Поле не найдено "Работа.Организация.ГлавныйБухгалтер.ФИО"» при печати справки для пособия по безработице?

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

При оформлении увольнения сотрудников в программных продуктах на базе платформы 1С:Предприятие 8 (таких как «1С:Комплексная автоматизация» или «1С:Зарплата и управление персоналом») пользователи часто сталкиваются со следующей ошибкой при попытке сформировать документ «Справка для пособия по безработице»:


{ОбщийМодуль.ЗарплатаКадрыОтчеты.Модуль(294)}: Ошибка при вызове метода контекста (Выполнить)
    МакетКомпоновки = КомпоновщикМакета.Выполнить(ОбъектОтчета.СхемаКомпоновкиДанных,
по причине:
Ошибка компоновки макета
по причине:
Поле не найдено "Работа.Организация.ГлавныйБухгалтер.ФИО"

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

Выясняем техническую причину ошибки

Для того чтобы понять, почему система выдает подобное исключение, нам необходимо проанализировать логику работы подсистемы «Зарплата и кадры» в части формирования печатных форм. Справка о среднем заработке для пособия по безработице формируется с использованием механизма Схемы компоновки данных (СКД).

В более ранних релизах конфигураций структура метаданных для получения ответственных лиц организации в СКД предполагала обращение к реквизитам через организацию. Полный путь к полю выглядел следующим образом: Работа.Организация.ГлавныйБухгалтер.ФИО (или соответствующее поле расшифровки подписи).

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

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

Почему очистка локального кэша платформы не всегда решает проблему?

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

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

  1. Системные настройки отчетов и печатных форм конкретного пользователя.
  2. Сохраненные пользовательские настройки вариантов отчетов в справочнике ВариантыОтчетов.
  3. Измененные вручную макеты печатных форм.

В этом случае запуск программы на абсолютно новом компьютере или в файловом варианте с чистым локальным кэшем все равно приведет к ошибке, так как система считает некорректные настройки напрямую из СУБД. Ниже мы рассмотрим, как очистить эти настройки программно и интерактивно.

Способ 1. Сброс измененного макета печатной формы к стандартному

Это самый быстрый и безопасный способ исправления ошибки в режиме 1С:Предприятие без программирования. Разберем его по шагам:

  1. Перейдите в раздел Администрирование, затем выберите пункт Печатные формы, отчеты и обработки.
  2. Откройте гиперссылку Макеты печатных форм.
  3. В списке макетов найдите печатную форму с наименованием «Справка о среднем заработке за последние три месяца по последнему месту работы (службы)» (в системе она также может иметь идентификатор ПФ_MXL_СправкаОСреднемЗаработке2019).
  4. Обратите внимание на иконку и статус макета. Если макет был изменен пользователем или перенесен при обновлении как модифицированный, он будет отмечен особым символом (карандашом).
  5. Выделите данный макет в списке и нажмите кнопку Использовать стандартный макет (или удалите пользовательские изменения макета).

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

Способ 2. Удаление ненайденных полей из настроек СКД в режиме Предприятия

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

  1. Запустите формирование отчета «Справка о среднем заработке» (это можно сделать из карточки сотрудника или из документа «Увольнение»).
  2. Если отчет открывается в виде формы настройки перед формированием, нажмите кнопку Настройки... (или воспользуйтесь меню Еще -> Изменить вариант...).
  3. Перейдите на вкладку Поля (или Выбранные поля).
  4. Найдите в структуре полей ветку, содержащую Работа.Организация.ГлавныйБухгалтер или Работа.Организация.Руководитель.
  5. Снимите флажки с этих полей или полностью удалите их из списка выбранных полей с помощью кнопки «Удалить».
  6. Нажмите кнопку Завершить редактирование и сформируйте отчет.

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

Способ 3. Очистка сохраненных пользовательских настроек в базе данных

Чтобы окончательно решить проблему для всех пользователей системы, необходимо очистить сохраненные настройки этого отчета в базе данных. Для этого выполним следующие действия:

  1. Перейдите в раздел Администрирование -> Настройки пользователей и прав.
  2. Откройте пункт Персональные настройки пользователей -> Настройки отчетов.
  3. В появившемся списке найдите настройки, связанные со справкой о среднем заработке для пособия по безработице.
  4. Выделите некорректные настройки для всех пользователей (можно воспользоваться клавишей Shift или комбинацией Ctrl + A) и нажмите кнопку Очистить (или Удалить).

Дополнительно рекомендуется выполнить очистку кэша через запуск базы данных с параметром командной строки /ClearCache. Для этого в окне запуска 1С выберите вашу базу, нажмите «Изменить», перейдите на последнюю страницу настроек и в поле «Дополнительные параметры запуска» введите:

/ClearCache

Рекомендации для разработчиков: исправление кода в конфигурации

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


// Пример фрагмента кода в общем модуле ЗарплатаКадрыОтчеты
Процедура ИнициализироватьОтчет(ОбъектОтчета) Экспорт
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    Попытка
        // Выполняется компоновка схемы с текущими настройками
        МакетКомпоновки = КомпоновщикМакета.Выполнить(
            ОбъектОтчета.СхемаКомпоновкиДанных,
            ОбъектОтчета.КомпоновщикНастроек.ПолучитьНастройки(),
            ,
            ,
            Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")
        );
    Исключение
        // Здесь происходит перехват ошибки компоновки макета
        ЗаписьЖурналаРегистрации("ПечатьСправки", УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
        ВызватьИсключение;
    КонецПопытки;
КонецПроцедуры

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


// Пример сброса настроек СКД к стандартным в расширении
ОбъектОтчета.КомпоновщикНастроек.ЗагрузитьНастройки(ОбъектОтчета.СхемаКомпоновкиДанных.НастройкиПоУмолчанию);

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

Окончательное решение проблемы

Описанная ошибка была официально признана разработчиками 1С и полностью устранена в последующих релизах линеек программных продуктов:

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

← На главную