При оформлении увольнения сотрудников в программных продуктах на базе платформы 1С:Предприятие 8 (таких как «1С:Комплексная автоматизация» или «1С:Зарплата и управление персоналом») пользователи часто сталкиваются со следующей ошибкой при попытке сформировать документ «Справка для пособия по безработице»:
{ОбщийМодуль.ЗарплатаКадрыОтчеты.Модуль(294)}: Ошибка при вызове метода контекста (Выполнить)
МакетКомпоновки = КомпоновщикМакета.Выполнить(ОбъектОтчета.СхемаКомпоновкиДанных,
по причине:
Ошибка компоновки макета
по причине:
Поле не найдено "Работа.Организация.ГлавныйБухгалтер.ФИО"
Эта проблема официально зарегистрирована фирмой 1С под кодом 00-00220637. В этой статье мы подробно разберем техническую причину возникновения этой неполадки, выясним, почему обычная очистка кэша платформы помогает далеко не всегда, и рассмотрим по шагам несколько эффективных способов решения этой проблемы.
Для того чтобы понять, почему система выдает подобное исключение, нам необходимо проанализировать логику работы подсистемы «Зарплата и кадры» в части формирования печатных форм. Справка о среднем заработке для пособия по безработице формируется с использованием механизма Схемы компоновки данных (СКД).
В более ранних релизах конфигураций структура метаданных для получения ответственных лиц организации в СКД предполагала обращение к реквизитам через организацию. Полный путь к полю выглядел следующим образом: Работа.Организация.ГлавныйБухгалтер.ФИО (или соответствующее поле расшифровки подписи).
В ходе планового обновления и оптимизации кода разработчики 1С изменили структуру схемы компоновки. Данные об ответственных лицах (руководителе и главном бухгалтере) были вынесены напрямую в родительскую ветку структуры. В новых версиях метаданных правильный путь выглядит так: Работа.ГлавныйБухгалтер.РасшифровкаПодписи (или просто Работа.ГлавныйБухгалтер).
Когда программа пытается сформировать печатную форму на основе устаревших настроек, компоновщик макета пытается обратиться к уже несуществующему в схеме пути Работа.Организация.ГлавныйБухгалтер, что неминуемо приводит к аварийному завершению работы метода Выполнить() объекта КомпоновщикМакета.
Многие специалисты в первую очередь рекомендуют очистить локальный кэш платформы на компьютере пользователя (каталоги внутри папки AppData). Действительно, в некоторых случаях платформа кэширует старые схемы компоновки данных локально, и физическое удаление файлов кэша помогает обновить структуру метаданных в сеансе.
Однако, если база данных была обновлена с предыдущих релизов, старые настройки СКД для этой печатной формы могли записаться непосредственно в таблицы самой базы данных. Это могут быть:
ВариантыОтчетов.В этом случае запуск программы на абсолютно новом компьютере или в файловом варианте с чистым локальным кэшем все равно приведет к ошибке, так как система считает некорректные настройки напрямую из СУБД. Ниже мы рассмотрим, как очистить эти настройки программно и интерактивно.
Это самый быстрый и безопасный способ исправления ошибки в режиме 1С:Предприятие без программирования. Разберем его по шагам:
ПФ_MXL_СправкаОСреднемЗаработке2019).После выполнения этих действий система вернется к использованию жестко зашитого в конфигурацию макета СКД, где пути к полям подписантов уже синхронизированы с новыми метаданными.
Если вам нужно срочно выдать справку увольняющемуся сотруднику, а времени на детальный разбор базы нет, можно применить временный обходной путь. Мы можем вручную исключить битые поля из компоновщика настроек:
Работа.Организация.ГлавныйБухгалтер или Работа.Организация.Руководитель.При таком подходе печатная форма сформируется без системных ошибок. Единственный нюанс — поля ФИО главного бухгалтера и руководителя организации останутся незаполненными в печатной форме. Их можно будет легко вписать вручную прямо на экране перед отправкой документа на печать.
Чтобы окончательно решить проблему для всех пользователей системы, необходимо очистить сохраненные настройки этого отчета в базе данных. Для этого выполним следующие действия:
Shift или комбинацией Ctrl + A) и нажмите кнопку Очистить (или Удалить).Дополнительно рекомендуется выполнить очистку кэша через запуск базы данных с параметром командной строки /ClearCache. Для этого в окне запуска 1С выберите вашу базу, нажмите «Изменить», перейдите на последнюю страницу настроек и в поле «Дополнительные параметры запуска» введите:
/ClearCache
Если вы являетесь администратором или программистом 1С и вышеописанные меры не помогают из-за особенностей доработки вашей конфигурации, обратите внимание на общий модуль ЗарплатаКадрыОтчеты. Рассмотрим пример того, как выполняется вызов компоновщика в коде конфигурации:
// Пример фрагмента кода в общем модуле ЗарплатаКадрыОтчеты
Процедура ИнициализироватьОтчет(ОбъектОтчета) Экспорт
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Попытка
// Выполняется компоновка схемы с текущими настройками
МакетКомпоновки = КомпоновщикМакета.Выполнить(
ОбъектОтчета.СхемаКомпоновкиДанных,
ОбъектОтчета.КомпоновщикНастроек.ПолучитьНастройки(),
,
,
Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")
);
Исключение
// Здесь происходит перехват ошибки компоновки макета
ЗаписьЖурналаРегистрации("ПечатьСправки", УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
В случае внесения изменений через механизм расширений, вы можете перехватить процедуру формирования макета Перед или Вместо оригинального вызова и принудительно очистить настройки компоновщика программным путем, выполнив сброс структуры настроек к настройкам по умолчанию:
// Пример сброса настроек СКД к стандартным в расширении
ОбъектОтчета.КомпоновщикНастроек.ЗагрузитьНастройки(ОбъектОтчета.СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
Это гарантирует, что при формировании отчета будут применены только актуальные поля из схемы компоновки данных, поставляемой с последним обновлением конфигурации, а все устаревшие пути к реквизитам подписантов будут проигнорированы.
Описанная ошибка была официально признана разработчиками 1С и полностью устранена в последующих релизах линеек программных продуктов:
Наиболее надежным и правильным решением в долгосрочной перспективе является своевременное обновление вашей конфигурации до актуального релиза. Это позволит не только избавиться от ошибок компоновки макетов печатных форм, но и гарантирует соответствие всех формируемых документов действующему законодательству РФ.