При переходе на новые релизы конфигурации 1С:Управление торговлей, редакция 10.3 (начиная с релиза 10.3.49.1 и выше) многие технические специалисты сталкиваются с критической ошибкой в процессе выполнения отложенных обработчиков обновления информационной базы. Эта проблема полностью прерывает процесс обновления и нарушает нормальную работу подсистемы ЕГАИС, приводя к потере сопоставлений номенклатуры и контрагентов.
В режиме «1С:Предприятие» при запуске обновления выдается следующее аварийное сообщение:
При вызове обработчика обновления: "ОбновлениеИнформационнойБазыЕГАИС.РегистрыСведенийУдалитьПротоколОбменаЕГАИСОбработатьДанныеДляПереходаНаНовуюВерсиюВходящиеСообщения" произошла ошибка: {РегистрСведений.УдалитьПротоколОбменаЕГАИС(462)}: Ошибка при вызове метода контекста (ВыполнитьПакет)... Поле не найдено "ТаблицаСообщениеОснованиеКвитанции.ВерсияДанных"
Давайте подробно разберем, почему возникает этот сбой, проанализируем его внутренние причины и рассмотрим три практических способа решения проблемы.
Для того чтобы понять природу ошибки, обратимся к особенностям платформы 1С:Предприятие. Системный реквизит ВерсияДанных является служебным полем, которое используется платформой для оптимистической блокировки объектов (справочников, документов и других ссылочных типов). Этот реквизит физически появился в таблицах СУБД начиная с версии платформы 8.2.13.
Если ваша база данных была создана очень давно и долгое время развивалась как нетиповая (дописанная), в ее свойствах в Конфигураторе, скорее всего, установлен параметр Режим совместимости в значение Версия 8.1. При таком режиме совместимости:
ВерсияДанных.Разработчики фирмы 1С при написании кода обновления ЕГАИС в релизе 10.3.49 исходили из современных системных требований, согласно которым режим совместимости с 8.1 более не поддерживается. Они задействовали поле ВерсияДанных в запросе перегрузки старых протоколов обмена ЕГАИС в новые справочники присоединенных файлов. База данных, запущенная в режиме совместимости с 8.1, физически не может выполнить этот запрос.
Этот способ является наиболее правильным и системным, так как он полностью приводит базу данных в соответствие с техническими требованиями современных релизов 1С:Управление торговлей 10.3. Разберем этот процесс по шагам:
Конфигуратор. Откройте дерево метаданных, нажмите правой кнопкой мыши на самый верхний элемент (имя конфигурации) и выберите пункт Свойства.Версия 8.1 на Версия 8.2.13 (или установите значение Не использовать, если вы работаете на современной платформе 8.3 и код вашей конфигурации полностью адаптирован).ВерсияДанных во все необходимые таблицы.1С:Предприятие. Отложенные обработчики обновления ЕГАИС успешно выполнят свои запросы без ошибок.Если ваша конфигурация содержит огромное количество нетипового кода, написанного под стандарты 1С 8.1, и вы опасаетесь, что постоянное переключение режима совместимости может нарушить логику работы старых доработок, мы можем применить обходной маневр:
Конфигуратор временно измените Режим совместимости на Версия 8.2.13.ВерсияДанных в таблицах СУБД.1С:Предприятие и дождитесь, пока все регламентные процедуры и обработчики обновления ЕГАИС успешно завершат свою работу.Конфигуратор и переключите Режим совместимости обратно в значение Версия 8.1, после чего примените изменения через F7.При обратном переключении платформа не удаляет физические колонки ВерсияДанных из таблиц СУБД, но возвращает интерпретатор кода в режим работы 8.1. Это позволит успешно завершить обновление и сохранить работоспособность вашего старого нетипового кода.
Рассмотрим ситуацию, когда менять режим совместимости базы категорически запрещено внутренними регламентами компании. В этом случае мы можем напрямую отредактировать запрос обновления, исключив из него обращение к несуществующему полю.
Проанализируем шаги по изменению программного кода:
Конфигуратор откройте глобальный поиск по конфигурации (сочетание клавиш Ctrl + Shift + F).ТаблицаСообщениеОснованиеКвитанции.ВерсияДанных.УдалитьПротоколОбменаЕГАИС (или в связанный общий модуль ЕГАИС) к тексту запроса обновления.
ТаблицаСообщениеОснованиеКвитанции.ВерсияДанных КАК СообщениеОснованиеВерсияДанных,
Замените эту строку на конструкцию, которая возвращает пустое значение, не требуя обращения к физическому полю таблицы:
НЕОПРЕДЕЛЕНО КАК СообщениеОснованиеВерсияДанных,
Сохраните изменения в конфигурации базы данных и запустите процесс обновления в режиме предприятия. Запрос выполнится успешно, и данные ЕГАИС будут корректно обработаны.
После того как вы применили один из предложенных способов и обновление завершилось без ошибок, мы рекомендуем выполнить следующие действия:
Следуя этим инструкциям, вы сможете успешно преодолеть технические сложности при обновлении вашей торговой системы и обеспечить стабильную работу с государственными информационными системами маркировки.