Как исправить ошибку «Поле не найдено ТаблицаСообщениеОснованиеКвитанции.ВерсияДанных» при обновлении УТ 10.3?

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

При переходе на новые релизы конфигурации 1С:Управление торговлей, редакция 10.3 (начиная с релиза 10.3.49.1 и выше) многие технические специалисты сталкиваются с критической ошибкой в процессе выполнения отложенных обработчиков обновления информационной базы. Эта проблема полностью прерывает процесс обновления и нарушает нормальную работу подсистемы ЕГАИС, приводя к потере сопоставлений номенклатуры и контрагентов.

Симптомы и текст ошибки

В режиме «1С:Предприятие» при запуске обновления выдается следующее аварийное сообщение:

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

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

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

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

Если ваша база данных была создана очень давно и долгое время развивалась как нетиповая (дописанная), в ее свойствах в Конфигураторе, скорее всего, установлен параметр Режим совместимости в значение Версия 8.1. При таком режиме совместимости:

  1. Платформа 1С эмулирует поведение старой версии 8.1.
  2. Физические таблицы базы данных в СУБД (MS SQL Server, PostgreSQL и др.) не содержат колонки ВерсияДанных.
  3. Любая попытка обратиться к этому полю через прямой запрос или встроенный язык завершается системной ошибкой СУБД «Поле не найдено».

Разработчики фирмы 1С при написании кода обновления ЕГАИС в релизе 10.3.49 исходили из современных системных требований, согласно которым режим совместимости с 8.1 более не поддерживается. Они задействовали поле ВерсияДанных в запросе перегрузки старых протоколов обмена ЕГАИС в новые справочники присоединенных файлов. База данных, запущенная в режиме совместимости с 8.1, физически не может выполнить этот запрос.

Способ 1. Изменение режима совместимости конфигурации (Рекомендуемый путь)

Этот способ является наиболее правильным и системным, так как он полностью приводит базу данных в соответствие с техническими требованиями современных релизов 1С:Управление торговлей 10.3. Разберем этот процесс по шагам:

  1. Создание резервной копии. Перед выполнением любых структурных изменений обязательно создайте полную резервную копию базы данных (файл .dt или средствами СУБД).
  2. Открытие свойств конфигурации. Запустите базу в режиме Конфигуратор. Откройте дерево метаданных, нажмите правой кнопкой мыши на самый верхний элемент (имя конфигурации) и выберите пункт Свойства.
  3. Изменение режима совместимости. В открывшейся панели свойств найдите раздел Совместимость и свойство Режим совместимости. Измените текущее значение Версия 8.1 на Версия 8.2.13 (или установите значение Не использовать, если вы работаете на современной платформе 8.3 и код вашей конфигурации полностью адаптирован).
  4. Применение изменений. Нажмите клавишу F7 или синюю кнопку на панели инструментов для обновления конфигурации базы данных. Платформа выполнит реструктуризацию таблиц СУБД и автоматически добавит поле ВерсияДанных во все необходимые таблицы.
  5. Запуск обновления. Запустите базу в режиме 1С:Предприятие. Отложенные обработчики обновления ЕГАИС успешно выполнят свои запросы без ошибок.

Способ 2. Временный обход для сильно измененных конфигураций

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

  1. В режиме Конфигуратор временно измените Режим совместимости на Версия 8.2.13.
  2. Выполните реструктуризацию (нажмите F7). Платформа создаст физические поля ВерсияДанных в таблицах СУБД.
  3. Запустите режим 1С:Предприятие и дождитесь, пока все регламентные процедуры и обработчики обновления ЕГАИС успешно завершат свою работу.
  4. Закройте пользовательский режим.
  5. Вернитесь в Конфигуратор и переключите Режим совместимости обратно в значение Версия 8.1, после чего примените изменения через F7.

При обратном переключении платформа не удаляет физические колонки ВерсияДанных из таблиц СУБД, но возвращает интерпретатор кода в режим работы 8.1. Это позволит успешно завершить обновление и сохранить работоспособность вашего старого нетипового кода.

Способ 3. Программная корректировка запроса обновления

Рассмотрим ситуацию, когда менять режим совместимости базы категорически запрещено внутренними регламентами компании. В этом случае мы можем напрямую отредактировать запрос обновления, исключив из него обращение к несуществующему полю.

Проанализируем шаги по изменению программного кода:

  1. В режиме Конфигуратор откройте глобальный поиск по конфигурации (сочетание клавиш Ctrl + Shift + F).
  2. В строке поиска введите следующий текст: ТаблицаСообщениеОснованиеКвитанции.ВерсияДанных.
  3. Поиск приведет вас к модулю менеджера регистра сведений УдалитьПротоколОбменаЕГАИС (или в связанный общий модуль ЕГАИС) к тексту запроса обновления.
  4. Найдите в запросе строку кода обращения к реквизиту:

ТаблицаСообщениеОснованиеКвитанции.ВерсияДанных КАК СообщениеОснованиеВерсияДанных,

Замените эту строку на конструкцию, которая возвращает пустое значение, не требуя обращения к физическому полю таблицы:

НЕОПРЕДЕЛЕНО КАК СообщениеОснованиеВерсияДанных,

Сохраните изменения в конфигурации базы данных и запустите процесс обновления в режиме предприятия. Запрос выполнится успешно, и данные ЕГАИС будут корректно обработаны.

Рекомендации по завершению обновления

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

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

← На главную