При переходе на актуальные релизы ветки 10.3.70.х конфигурации «Управление торговлей» пользователи часто сталкиваются с неприятной ситуацией: при попытке записи или проведения документов поступления и реализации система выдает критическую ошибку, связанную с модулем ЕГАИС. Примечательно, что проблема проявляется даже в тех организациях, где учет алкогольной продукции полностью отключен в настройках параметров учета. Рассмотрим подробно причины возникновения этих ошибок и разберем по шагам способы их устранения.
Проанализируем ситуацию. В последних обновлениях разработчики 1С существенно переработали механизмы интеграции с системой ЕГАИС. Основная причина сбоев заключается в том, что в конфигурации задействованы так называемые Подписки на события. Эти объекты метаданных срабатывают автоматически при записи любого документа определенного типа (например, ДокументОбъект.ПоступлениеТоваровУслуг), независимо от функциональных опций или флажков в интерфейсе.
Если в процессе обновления произошло некорректное объединение метаданных или возник программный дефект в самом релизе, подписка пытается вызвать процедуру, которой либо не существует, либо она имеет неверное количество параметров. Выясним, какие именно ошибки встречаются чаще всего.
Одной из наиболее странных ошибок является сообщение о невозможности вызова метода с удвоенным названием, например, ЕгаисПередЗаписьюДокументаИБЕгаисПередЗаписьюДокументаИБ. Это явный признак того, что при обновлении через «Сравнение/Объединение» свойство «Обработчик» в подписке на событие было повреждено.
Разберем по шагам, как это исправить в режиме Конфигуратор:
ЕгаисПередЗаписьюДокументаИБ (или похожую, относящуюся к ЕГАИС).ИнтеграцияЕГАИС (или ИнтеграцияЕГАИСУТ).ПередЗаписьюДокументаИБ.После этого необходимо сохранить конфигурацию и обновить конфигурацию базы данных (F7). Проверим работоспособность: попробуем перезаписать любой старый документ поступления.
Вторая распространенная проблема возникает непосредственно в момент первого запуска системы после обновления. Ошибка указывает на метод Справочники.КлассификаторОрганизацийЕГАИС.ОбработатьДанныеДляПереходаНаНовуюВерсию. Это происходит потому, что обработчик обновления ИБ вызывает функцию с устаревшим набором аргументов.
Посмотрим на пример того, как может выглядеть некорректный вызов в коде:
// Ошибочный вызов в процедуре обновления
Справочники.КлассификаторОрганизацийЕГАИС.ОбработатьДанныеДляПереходаНаНовуюВерсию();
Если в новом релизе определение функции требует передачи структуры параметров, а вызов остался старым, система прервет выполнение. Чтобы устранить это, нам необходимо проверить модуль менеджера справочника КлассификаторОрганизацийЕГАИС. Посмотрим на сигнатуру функции:
Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(ПараметрыОбновления) Экспорт
// Логика обработки...
КонецПроцедуры
Если мы видим, что параметр ПараметрыОбновления является обязательным, а при вызове он не передается, это указывает на ошибку в типовом коде обновления. В таком случае рекомендуется либо дождаться исправительного патча от вендора (релиз 10.3.71.x и выше), либо временно закомментировать этот вызов в процедуре обновления, если классификатор ЕГАИС вами не используется.
Иногда ошибка «Недостаточно фактических параметров» является фантомной и вызвана тем, что платформа 1С использует старые скомпилированные версии модулей из локального кэша. Проанализируем ситуацию: если в коде все выглядит верно, но ошибка сохраняется, выполним следующие действия:
Это позволит восстановить внутренние связи объектов, которые могли нарушиться при частичном обновлении метаданных.
Если ваша конфигурация «Управление торговлей 10.3» имеет хотя бы одно изменение (как упоминалось в теме — дописка в номенклатуре), стандартное обновление через файл .cfu может быть затруднено. Рассмотрим правильный алгоритм совместной работы с обновлением, чтобы избежать подобных проблем в будущем:
Во-первых, всегда используйте механизм сравнения и объединения с полной конфигурацией (.cf) нового релиза, а не только с файлом обновления. При объединении внимательно следите за разделом Общие -> Подписки на события. Никогда не заменяйте их полностью, если не уверены, что обработчики в общих модулях соответствуют новым требованиям.
Во-вторых, после объединения метаданных в конфигураторе, обязательно запустите систему в режиме «Предприятие» от имени пользователя с полными правами. Дождитесь окончания всех регламентных процедур обновления. Если выполнение процедур прервалось ошибкой, их статус можно проверить в регистре сведений РезультатыОбновленияПрограммы.
В-третьих, в релизе 10.3.70.2 был зафиксирован баг, когда проверка статусов ЕГАИС вызывалась безусловно. Если обновление до 10.3.71.x невозможно, программисту следует добавить в начало процедур-обработчиков подписок проверку на использование алкоголя:
Если Не Константы.ИспользоватьАлкогольнуюПродукцию.Получить() Тогда
Возврат;
КонецЕсли;
Этот нехитрый прием позволит полностью изолировать вашу систему от ошибок в модуле ЕГАИС, если данный функционал вам не требуется.
Таким образом, мы выяснили, что основными причинами ошибок после обновления являются некорректно настроенные Подписки на события и несоответствие параметров в процедурах обновления. Следуя приведенным инструкциям, вы сможете восстановить работоспособность документов поступления и обеспечить стабильную работу системы.