Как исправить ошибки при неудачном обновлении 1С:Розница 2.2 до версии 2.2.7.40

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

Переход программного продукта 1С:Розница с ветки 2.2.6 на 2.2.7 является одним из самых сложных этапов в истории развития конфигурации. Это связано не просто с добавлением нового функционала, а с глобальной реструктуризацией базы данных. Разработчики подготовили систему к требованиям 54-ФЗ и форматам фискальных данных (ФФД) 1.05 и 1.1, что потребовало изменения архитектуры хранения информации о платежах.

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

Выясним причину ошибки: почему «пропадают» таблицы

Основная сложность заключается в том, что в версии 2.2.7 произошло объединение нескольких табличных частей документов (таких как ОтчетОРозничныхПродажах) в одну универсальную таблицу Оплаты. Ранее в документе существовали отдельные вкладки для наличной оплаты и оплаты картами. Теперь же всё хранится в единой структуре.

Ошибка «отсутствие табличной части ОплатаПлатежнымиКартами» возникает в тот момент, когда метаданные конфигурации уже обновились и старая таблица была удалена, но фоновые обработчики обновления всё еще пытаются обратиться к ней по старому имени. Рассмотрим основные факторы, провоцирующие этот сбой:

Проанализируем проблему зависания обновления на 16-м этапе

Процесс обновления 1С состоит из двух частей: обновления метаданных в конфигураторе и выполнения отложенных обработчиков в пользовательском режиме. Часто обновление «затыкается» на этапе 16 из 29 (или близких к нему). Посмотрим, что происходит в этот момент.

На данном этапе система выполняет перенос записей об эквайринговых операциях. Если в базе накоплено большое количество документов с некорректно заполненными видами оплат (например, пустая ссылка на эквайринговый терминал или нулевая сумма при отмеченном флаге оплаты картой), стандартный обработчик может войти в бесконечный цикл или аварийно завершиться. В такой ситуации пользователь видит, что процесс «висит», а в журнале регистрации множатся ошибки доступа к данным.

Шаг 1: Подготовка и проверка целостности

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

  1. Проверка физической целостности: Запустим утилиту chdbfl.exe, которая находится в папке bin установленной платформы 1С. Это критически важно для файловых баз. Проанализируем лог: если найдены ошибки в таблицах, связанных с оплатами, исправляем их.
  2. Тестирование и исправление (ТиИ): В конфигураторе запустим «Администрирование» — «Тестирование и исправление». Обязательно выберем пункты «Реиндексация таблиц» и «Проверка логической целостности». При обнаружении битых ссылок установим режим «Очищать ссылки» или «Создавать объекты».
  3. Отключение расширений: Перед запуском обновления полностью отключим (или удалим из списка) все расширения конфигурации. После успешного перехода их можно будет адаптировать и вернуть.

Шаг 2: Выбор правильной платформы

Опыт показывает, что для стабильного перехода на Розницу 2.2.7.40 версии 8.3.10 может быть недостаточно, несмотря на минимальные системные требования. Рассмотрим рекомендуемый вариант:

Попробуем использовать платформу версии 8.3.12.1529 или выше. В этих версиях исправлено множество ошибок, связанных с динамическим обновлением метаданных и реструктуризацией тяжелых таблиц. Если база работает в клиент-серверном варианте, убедимся, что версия сервера совпадает с версией клиента.

Шаг 3: Стратегия «Мелких шагов»

Если обновление с 2.2.6.22 сразу на 2.2.7.40 дает сбой, применим тактику последовательных переходов. Разберем этот путь по шагам:

  1. Обновимся до финального релиза ветки 2.2.6 (например, 2.2.6.33).
  2. Зайдем в пользовательский режим и дождемся завершения всех фоновых процедур обновления. Проверим статус в форме «Сведения об обновлении» (через меню «Все функции» — «Справочники»).
  3. Только после полной очистки очереди обновлений в 2.2.6, приступим к переходу на 2.2.7.23 (первый релиз новой ветки).
  4. Снова запустим пользовательский режим и дадим системе «переварить» изменения структуры оплат.
  5. Финальным шагом обновимся до 2.2.7.40.

Шаг 4: Ручное управление обработчиками обновления

Если обновление все же зависло на 16-м этапе, мы можем вмешаться в процесс программно. Рассмотрим, как это сделать через справочник ОбновлениеИнформационнойБазы.

Перейдем в «Функции для технического специалиста» (ранее «Все функции») и найдем справочник «Обновление информационной базы». В нем отображается список всех процедур. Если мы видим процедуру со статусом «Ошибка» или «Выполняется» (при фактическом отсутствии активности), мы можем проанализировать журнал регистрации, исправить данные в документах, вызывающих сбой, и запустить процедуру повторно.

В крайних случаях, если данные в конкретном обработчике не являются критичными (например, старая аналитика, которая не используется), программисты иногда принудительно устанавливают статус «Выполнено» для «зависшей» строки. Внимание: это действие может привести к потере части данных в отчетах, поэтому используйте его только как крайнюю меру.

Шаг 5: Что делать, если в «битой» базе уже работали?

Часто бывает так: обновились с ошибками, но магазин продолжил работу, принимал накладные ЕГАИС и торговал. Теперь в базе есть новые документы, но сама она работает некорректно. Разберем алгоритм «грамотного отката»:

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

Этот метод позволяет сохранить GUID-ы объектов и восстановить работоспособность системы без потери данных, введенных в период «кривого» обновления.

Особенности сопоставления ЕГАИС в 2.2.7.40

Рассмотрим еще один нюанс: в версии 2.2.7 произошли изменения в механизме сопоставления алкогольной продукции. Если после обновления «слетело» сопоставление производителей или поставщиков, проанализируем справочник ПроизводителиИИмпортерыАлкогольнойПродукции. Часто проблема кроется в дублях контрагентов. Перед обновлением рекомендуется запустить стандартную обработку «Поиск и удаление дублей» для всех справочников, связанных с алкоголем.

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


Выборка = Справочники.ОбновлениеИнформационнойБазы.Выбрать();
Пока Выборка.Следующий() Цикл
    Если Выборка.Статус = Перечисления.СтатусыОбработчиковОбновления.Ошибка Тогда
        Сообщить("Ошибка в обработчике: " + Выборка.ИмяПроцедуры);
    КонецЕсли;
КонецЦикла;

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

← На главную