Обновление 1С:Бухгалтерии 3.0 на SQL: выбор платформы, ошибки расширений и завершение отложенных обработчиков

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

Обновление информационных баз, которые длительное время не обслуживались, — это всегда вызов для администратора и программиста 1С. Когда мы имеем дело с переходом через множество релизов (например, с платформы 8.3.18 сразу на 8.3.22 или 8.3.23), стандартная процедура обновления может преподнести сюрпризы. Чтобы облегчить этот процесс, особенно если вы планируете работы на вечернее время, можно использовать Помощник оператора обновления КБД, который упрощает рутинные действия. В этом материале мы подробно разберем процесс "большого скачка" обновления для конфигурации "Бухгалтерия предприятия 3.0", работающей в клиент-серверном варианте (MS SQL).

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

Этап 1: Выбор технологической платформы для обновления

Первый вопрос, с которым мы сталкиваемся: какую версию платформы выбрать? Если текущий релиз — 8.3.18, то современные конфигурации БП 3.0 на нем просто не запустятся из-за требований к режиму совместимости.

Рассмотрим варианты, доступные на текущий момент:

  1. Версия 8.3.21: На данный момент считается уже устаревающей веткой, хотя и стабильной. Для долгосрочной перспективы она подходит меньше.
  2. Версия 8.3.22: Эта ветка переведена фирмой 1С в режим длительной поддержки (LTS). Это "золотая середина" для корпоративного сектора, где важна максимальная стабильность.
  3. Версия 8.3.23: Актуальная рабочая ветка. Многие современные механизмы (работа с JSON, HTTP-сервисами, расширениями конфигурации) здесь оптимизированы лучше.
  4. Версия 8.3.24/25: Новейшие релизы. Ставить их на продуктивную среду ("боевую" базу) рекомендуется с осторожностью.

Для стабильной работы SQL-базы на 25 пользователей мы рекомендуем остановиться на ветке 8.3.22 (например, релиз 8.3.22.2283 или новее) или 8.3.23, учитывая все тонкости миграции высоконагруженных SQL-баз. Критически важно использовать 64-битную версию сервера приложений (Server 1C x64). При реструктуризации таблиц во время обновления адресного пространства 32-битного процесса rphost может не хватить, что приведет к аварийному завершению обновления.

Этап 2: Проблема совместимости расширений

Одной из самых частых проблем при обновлении типовых конфигураций с подключенными расширениями является ошибка "Метод не найден". Рассмотрим реальный пример ошибки, возникающей при старте обновленной базы:


Ошибка при вызове метода контекста (СоздатьНаборЗаписей)
{РегистрСведений.ПараметрыРаботыПрограммы.МодульМенеджера(1313)}:
НаборЗаписей = МенеджерРегистра.СоздатьНаборЗаписей();
При подписке АвтономнаяРаботаПроверитьВозможностьЗаписиОбщихДанныхНаборЗаписей на событие ПередЗаписью произошла ошибка. 
Метод обработчика события АвтономнаяРаботаПроверитьВозможностьЗаписиОбщихДанныхНаборЗаписей не найден.

Давайте разберем, почему это происходит. При обновлении типовой конфигурации обновляется и "Библиотека Стандартных Подсистем" (БСП). Разработчики 1С могут переименовывать общие модули, менять количество параметров в процедурах или удалять устаревшие методы. Чтобы быстро сориентироваться в изменениях, полезно использовать Справочник по методам БСП, который содержит примеры актуального использования функций.

Ваше расширение, написанное год назад, пытается "подписаться" на событие (например, ПередЗаписью) и вызвать процедуру, которой в новой версии конфигурации больше не существует или она называется иначе. В данном примере проблема кроется в подсистеме автономной работы.

Как решить эту проблему:

  1. Зайдите в Конфигуратор.
  2. Откройте список расширений: Конфигурация — Расширения конфигурации.
  3. Перед первым запуском обновленной базы в пользовательском режиме снимите галки Активно у всех расширений.
  4. Запустите базу в режиме "1С:Предприятие". Если запуск прошел успешно, значит проблема именно в коде расширений.
  5. Далее необходимо поочередно включать расширения и адаптировать их код под новые реалии БСП. Для автоматизации этого процесса и выявления проблемных мест рекомендуется провести анализ расширений на наличие ошибок, что позволит быстро найти некорректные вызовы экспортных процедур.

Этап 3: Зависание отложенного обновления данных

После успешного входа в программу мы можем столкнуться с сообщением о блокировке работы с определенными документами или разделами, например, ЭДО.

Система выдает предупреждение:


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

Это означает, что структурное обновление базы завершено, но данные в регистрах еще не приведены в соответствие с новой логикой. Этот процесс выполняется фоновыми заданиями. Однако иногда процесс "зависает". Для решения этой проблемы можно использовать специальное средство для принудительного выполнения отложенного обновления информационной базы, которое особенно эффективно для БП 3.0.

Причины зависания:

Решение проблемы:

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

  1. Проверка блокировки регламентных заданий. Откройте консоль администрирования серверов 1С (или обработку "Консоль заданий"). Убедитесь, что для данной информационной базы снята галка "Блокировка регламентных заданий".
  2. Принудительный запуск обновления. Если задания не стартуют сами, мы можем инициировать их запуск через параметры командной строки. Для этого нужно запустить клиент 1С с ключом /C ЗапуститьОбновлениеИнформационнойБазы.

Пример строки запуска (можно прописать в ярлыке или выполнить через командную строку):


"C:\Program Files\1cv8\8.3.22.xxxx\bin\1cv8.exe" ENTERPRISE /S "ServerName\BaseName" /N "Admin" /P "Password" /C ЗапуститьОбновлениеИнформационнойБазы

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

Этап 4: Особенности обслуживания SQL после обновления

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

1. Обновление статистики и индексов
В процессе обновления 1С производит массовую реструктуризацию таблиц (изменение типов полей, добавление колонок). Если в процессе возникают сбои СУБД, вам может потребоваться информация о структуре хранения базы данных, чтобы понять, какая именно таблица вызывает проблему. Сразу после завершения обновления обязательно выполните на SQL Server команду EXEC sp_updatestats;.

2. Контроль журнала транзакций
При переходе через много релизов размер файла журнала транзакций (.ldf) может вырасти многократно. Чтобы оценить масштабы изменений, можно предварительно выполнить расчет размера таблиц базы данных, что поможет в выборе стратегии обслуживания. Убедитесь, что на диске с логами достаточно места.

3. Очистка серверного кэша
При смене платформы настоятельно рекомендуется остановить службу агента сервера 1С и очистить папку с временными файлами кластера. Старый кэш метаданных может конфликтовать с новой версией платформы, вызывая странные ошибки "Вылет процесса rphost".

Заключение

Обновление "застоявшейся" базы БП 3.0 — процедура выполнимая, если подходить к ней системно. Подведем итог алгоритма действий:

  1. Устанавливаем современную платформу (8.3.22/23) x64.
  2. Отключаем расширения перед первым запуском, предварительно проверив их через анализ конфигураций на наличие ошибок.
  3. Проверяем, разрешены ли регламентные задания на сервере.
  4. При зависании обработки данных используем ключ запуска /C или специализированную обработку для обновления.
  5. Обслуживаем SQL (статистика, индексы) и контролируем размер таблиц после завершения всех процедур.
← На главную