Переход между релизами конфигурации «1С:Управление торговлей 11» (особенно внутри веток 11.3 и 11.4) — это сложный процесс, который затрагивает не только обновление метаданных, но и масштабную реструктуризацию накопленных в базе данных. В этой статье мы подробно разберем две критические проблемы, с которыми часто сталкиваются администраторы и программисты 1С при обновлении: зацикливание отложенного обработчика данных по заказам клиентов и ошибки выполнения регламентных заданий, заблокированных функциональными опциями.
При выполнении дополнительных (отложенных) процедур обработки данных на шаге обновления реквизита Назначение или пересчета взаиморасчетов система может выдать следующую ошибку:
Процедура "Документы.ЗаказКлиента.ОбработатьДанныеДляПереходаНаНовуюВерсию" обработки данных завершилась с ошибкой: {ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(4328)}: Произошло зацикливание процедуры обработки данных. Выполнение прервано. ВызватьИсключение ТекстИсключения;
При этом в Журнале регистрации фиксируется список документов (например, 181 документ), которые не удалось обработать, но детальная причина сбоя не расшифровывается.
Проанализируем ситуацию и выясним причину. Механизм отложенного обновления БСП (Библиотеки стандартных подсистем) обрабатывает данные порциями (пакетами). Для этого создается временный служебный план обмена, на узлах которого регистрируются объекты, требующие обработки. Если в процессе обработки конкретного документа возникает критическая ошибка (например, из-за некорректных данных или блокировок), транзакция по всей порции документов откатывается. Алгоритм пытается обработать эту же порцию снова и снова. После превышения лимита попыток БСП фиксирует зацикливание и аварийно завершает работу.
Рассмотрим подробнее четыре эффективных метода решения этой проблемы.
Этот способ позволяет временно «пропустить» проблемные документы, завершить обновление базы в штатном режиме, а затем разобраться с ошибками в документах вручную. Разберем этот процесс по шагам:
ОбновлениеИнформационнойБазы или имеет схожее служебное наименование).Заказ клиента, на которых спотыкается обновление.e1cib/app/Обработка.РезультатыОбновленияПрограммы.Часто причиной зацикливания является логическая или физическая целостность таблиц базы данных СУБД (например, сбой индекса таблицы заказов или наличие битых ссылок в реквизитах документов). Для предварительного выявления и исправления таких дефектов в объектах базы подойдёт обработка для поиска пустых реквизитов и битых ссылок.
Выполним тестирование и исправление (ТиИ) базы данных перед повторным запуском обновления:
Реиндексация таблиц информационной базы (позволяет вылечить сбой индексов);Проверка логической целостности информационной базы;Проверка ссылочной целостности информационной базы.Если документов немного, или нам крайне важно понять, какая именно ошибка мешает проведению обновления в коде, мы можем прибегнуть к отладке.
Проанализируем ситуацию с помощью отладчика:
ОбработатьДанныеДляПереходаНаНовуюВерсию модуля менеджера документа ЗаказКлиента.Если мы обнаружили критическую ошибку в самом коде типового обработчика 1С (что нередко бывает в переходных релизах), а исправить данные быстро невозможно, мы можем применить временный программный обход. Для этого в процедуре обработки данных пропишем оператор возврата в самом начале:
Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт
// Временный обход зацикливания для успешного завершения обновления базы
Возврат;
// Далее идет оригинальный код обработчика, который временно не будет выполняться
...
КонецПроцедуры
После завершения общего обновления конфигурации эту модификацию обязательно нужно удалить, вернуть оригинальный код и обработать незавершенные документы вручную (перезаписать или перепровести их), чтобы новые служебные реквизиты заполнились корректно.
Если проблемных документов (например, те самые 181 заказ) не слишком много, и они блокируют обновление всей рабочей базы, мы можем временно исключить их из базы данных, а затем вернуть назад.
Разберем этот алгоритм:
Заказ клиента во внешний файл. При выгрузке снимем флаг «Выгружать сгенерированные объекты» (чтобы не тянуть за собой всю историю связанных движений, если это не требуется).Другая распространенная проблема после обновления конфигурации — появление в Журнале регистрации постоянных ошибок, связанных с регламентными заданиями. Чаще всего страдают задания Обновление данных о доступности товаров для внешних пользователей и Обновление индекса ППД.
Выясним причину этой ошибки. Причина кроется в логическом несоответствии настроек системы: в расписании регламентных заданий включена активность конкретного задания, однако функциональная опция (настройка программы), за которую отвечает это регламентное задание, в пользовательском интерфейсе выключена. Для быстрого поиска нужных настроек и связанных с ними параметров можно применить обработку для навигации по функциональным опциям и константам.
Разберем способы решения для каждого случая.
Это регламентное задание отвечает за оперативную выгрузку остатков товаров для клиентов, которые используют личный кабинет (самообслуживание) на вашем веб-сайте или подключаются к базе напрямую как внешние пользователи.
Если вы не используете функционал самообслуживания внешних пользователей:
Обновление данных о доступности товаров для внешних пользователей.Если вы используете этот функционал или планируете его задействовать:
Полнотекстовый поиск позволяет быстро находить данные по ключевым словам через поисковую строку вверху экрана 1С. Если эта опция выключена, а регламентные задания по индексации продолжают выполняться по расписанию, Журнал регистрации будет переполнен ошибками.
Для исправления ситуации выполним следующие действия:
Полнотекстовый поиск данных. Чтобы полностью убрать ошибки из журнала, перейдите в список регламентных заданий и отключите задания Обновление индекса ППД и Слияние индекса ППД.Полнотекстовый поиск данных. Нажмите кнопку «Очистить индекс», а затем выполните его первоначальное заполнение кнопкой «Обновить индекс». После этого регламентные задания будут выполняться в штатном режиме.Важно помнить, что стабильность процедур обновления напрямую зависит от версии технологической платформы 1С:Предприятие. Использование устаревших или признанных нестабильными релизов (например, 8.3.13.1513) часто приводит к неявным ошибкам при выполнении фоновых заданий обновления, когда транзакции аварийно завершаются без детального описания причин в Журнале регистрации.
Настоятельно рекомендуется использовать версию платформы не ниже рекомендованной производителем для текущего релиза конфигурации (для актуальных версий УТ 11 это платформы линеек 8.3.18, 8.3.21 и выше).
Также перед запуском процесса отложенного обновления обязательно очистите локальный кэш конфигурации на рабочем компьютере, где запускается обновление, а в случае клиент-серверной базы данных — перезапустите службу Агент сервера 1С:Предприятия, чтобы исключить влияние старых схем метаданных из кэша сервера.