Как понять, что переход с версии ПРОФ на КОРП в 1С:Бухгалтерия 3.0 выполняется корректно, и что делать при зависании на 11%

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

Переход с конфигурации «Бухгалтерия предприятия» версии ПРОФ на КОРП — это не просто формальное обновление номера версии. Это глубокая техническая трансформация структуры данных вашей базы. Часто системные администраторы и программисты сталкиваются с тем, что обновление «замирает» на отметке 11% или 12%. В этой статье мы подробно разберем, что происходит «под капотом» программы в этот момент, как диагностировать состояние процесса и как бороться с возникающими ошибками блокировок.

Почему обновление зависает именно на 11%

Проанализируем архитектурные различия между версиями ПРОФ и КОРП. Основное отличие КОРП — наличие сквозного учета по подразделениям на большинстве счетов бухгалтерского учета. Когда в режиме «1С:Предприятие» запускается обработчик обновления, на этапе 11% система начинает масштабную реструктуризацию Плана счетов.

В этот момент выполняются следующие действия:

  1. Добавление измерения «Подразделение»: На счета 20, 26, 44, 60, 62, 71 и многие другие добавляется обязательный разрез учета.
  2. Пересчет итогов: 1С дает команду СУБД (например, Microsoft SQL Server) перестроить таблицы итогов регистров бухгалтерии. Если в базе накоплены данные за много лет, этот процесс может занимать от нескольких часов до суток.
  3. Фоновые задания: Система запускает цепочку фоновых заданий для заполнения параметров работы программы.

Рассмотрим ситуацию, когда индикатор прогресса не движется. Это не всегда означает «зависание». Рассмотрим способы проверки активности процесса.

Способ 1: Анализ Журнала регистрации

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

Как отмечалось в обсуждении, сообщения вида:

Функциональность программы. На счете 71 отключен учет по подразделениям

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

Способ 2: Мониторинг на стороне SQL-сервера

Если визуальный индикатор в 1С стоит на месте, проанализируем нагрузку на сервере баз данных. Откроем SQL Server Management Studio (SSMS) и воспользуемся «Монитором активности» (Activity Monitor). Если процесс sqlservr.exe активно потребляет ресурсы процессора и совершает операции чтения/записи (I/O), значит, база данных занята перестроением индексов и таблиц. Прерывать процесс в этот момент категорически нельзя, так как это приведет к разрушению целостности базы данных.

Разбор ошибки блокировки в регистре ПараметрыРаботыПрограммы

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


{РегистрСведений.ПараметрыРаботыПрограммы.МодульМенеджера(1159)}: Ошибка при вызове метода контекста (Записать)
    НаборЗаписей.Записать();
по причине:
Конфликт блокировок при выполнении транзакции:
Ошибка блокировки области данных
по причине:
Ошибка разделенного доступа к базе данных
База данных заблокирована: компьютер: BUH, пользователь: Администратор, сеанс: 51

Выясним причину этой ситуации. При переходе на КОРП платформа пытается одновременно выполнить несколько действий:

Как этого избежать:

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

  1. В консоли администрирования кластера серверов 1С установить галочку «Блокировка регламентных заданий включена».
  2. Если база файловая, использовать параметры запуска или специальные обработки для блокировки заданий.

Однако, как показывает практика, иногда обновление «спотыкается» именно о включенную блокировку, если какой-то внутренний механизм БСП (Библиотеки стандартных подсистем) пытается запустить обязательное фоновое задание. Если вы раз за разом получаете ошибку на 11%, попробуйте на время прохождения этого этапа разрешить выполнение регламентных заданий, но убедитесь, что в базе нет никого, кроме вашего сеанса обновления.

Ошибка Microsoft SQL Server: Unspecified error (80004005)

Иногда процесс прерывается ошибкой HRESULT=80004005 с разрывом соединения. Проанализируем, почему это происходит именно при переходе на КОРП:

1. Тайм-аут соединения: Операция добавления колонок в огромные таблицы проводок занимает больше времени, чем разрешено настройками SQL-сервера или параметром SessionTimeout в 1С. Увеличьте время ожидания выполнения запроса в настройках СУБД.

2. Переполнение лога транзакций (.LDF): При реструктуризации плана счетов объем лога может вырасти в несколько раз. Убедитесь, что на диске достаточно места и для файла базы данных, и для лога транзакций. Рекомендуется перевести модель восстановления базы в Simple на время обновления.

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

Выясним, как понять, что критический этап пройден. Часто после долгого ожидания на 11% счетчик мгновенно прыгает до 89% или даже 100%. Это означает, что самые тяжелые операции по изменению структуры таблиц завершены, и остались лишь косметические изменения констант.

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

Подведем итог: переход с ПРОФ на КОРП — это длительный процесс, требующий терпения. Главное — обеспечить стабильность работы сервера, отсутствие лишних сеансов и достаточный объем дискового пространства для временных файлов SQL-сервера.

← На главную