Как исправить критические ошибки и зависания при обновлении 1С: Комплексная автоматизация до версии 2.5.7.226?

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

Переход с ветки 2.4 на 2.5 в конфигурациях «1С:Комплексная автоматизация» и «1С:ERP» является одним из самых масштабных обновлений за последние годы. Версия 2.5.7.226 привносит кардинальные изменения в архитектуру учета — в частности, меняются механизмы учета НДС и взаиморасчетов. Рассмотрим подробнее, с какими трудностями сталкиваются специалисты при обновлении, и разберем по шагам, как устранить наиболее критические ошибки.

Ошибка транзакции в обработчике «Сверка взаиморасчетов»

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

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


// В процедуре ОбработатьДанныеДляПереходаНаНовуюВерсию
// ... (фрагмент кода вокруг строки 6865)
Если Не ГотовКЗаполнению Тогда
    ЗафиксироватьТранзакцию; // Добавляем фиксацию перед переходом к следующей итерации
    Продолжить;
КонецЕсли;
// ...

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

Бесконечный цикл в процедуре заполнения оперативных взаиморасчетов

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

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


Пока Индексы.ИндексОплаты + Индексы.ИндексОтгрузкиПоставки < ЗаписейОбработать Цикл
    // В определенных условиях (например, при наличии нулевых сумм или битых аналитик) 
    // алгоритм не может сопоставить записи, и условие выхода никогда не достигается.
КонецЦикла;

Для решения этой проблемы рассмотрим два пути. Во-первых, если ситуация критическая и требует немедленного вмешательства в режиме отладки, программисты иногда вручную корректируют значения в структуре Индексы, чтобы завершить цикл. Однако правильным системным решением будет установка официального исправления (патча) от 1С или очистка записей с нулевыми остатками в регистрах взаиморасчетов перед запуском обновления. Также стоит обратить внимание на типовую обработку «Заполнение регистров взаиморасчетов», которую необходимо запустить после завершения всех этапов обновления.

Проблема исчезновения данных в управленческом учете и актах сверки

Часто после перехода на 2.5.7 бухгалтеры сообщают, что данные до определенного периода (например, до конца 3 квартала 2021 года) исчезли из ведомостей и актов сверки. На самом деле данные не удалены, но они перестали отображаться из-за введения новой сущности — Объект расчетов.

Проанализируем ситуацию: в версии 2.5 учет строится вокруг справочника ОбъектыРасчетов. Если постобработчики не завершили свою работу или в старых данных были ошибки (например, отрицательные остатки по конкретным накладным при общем нулевом балансе по договору), связи не создаются. Чтобы восстановить видимость данных, выполним следующие действия:

  1. Убедимся, что все 454 постобработчика (или их актуальное количество в вашем релизе) завершены успешно. Проверить это можно в форме «Обслуживание» — «Обновление программы» — «Результаты обновления».
  2. Проверим наличие пустых записей в справочнике ОбъектыРасчетов. Если таковые имеются, их необходимо переформировать, используя типовые механизмы пересчета взаиморасчетов.
  3. В случае, если данные «отсекаются» по дате, велика вероятность, что постобработка коснулась только открытых периодов. Потребуется запуск групповой обработки документов для актуализации движений по новым регистрам.

Изменение структуры НДС и справочников хранения

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

Кроме того, в новой версии значительно расширено количество регистров, отвечающих за места хранения. Это часто приводит к «отвалу» самописных отчетов и внешних печатных форм. Если ваши отчеты перестали показывать остатки, проанализируйте изменения в метаданных: многие данные переехали из старых регистров накопления в новые, более детализированные. Перевод прав доступа также требует внимания — из-за новых объектов метаданных типовые роли могли измениться, и пользователям потребуется перенастройка профилей групп доступа.

Рекомендации по технической подготовке серверной части

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

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

← На главную