Почему время обновления базы 1С в отчете меньше реального времени и как рассчитать его правильно

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

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

Разберем структуру процесса обновления

Для начала проанализируем ситуацию и разделим процесс обновления на этапы. Когда мы говорим «я обновил базу», мы подразумеваем весь цикл действий, но система 1С разделяет их на технические и логические уровни. То, что видит пользователь в итоговом логе — это лишь «верхушка айсберга».

Рассмотрим основные этапы, которые проходит база данных:

  1. Сравнение и объединение конфигураций: Этот процесс происходит в Конфигураторе. Система анализирует метаданные, сопоставляет объекты и готовит файл обновления. На больших базах (например, ERP или УПП) этот этап может занимать от 30 минут до полутора часов только на «чтение» структуры.
  2. Сохранение конфигурации базы данных (F7): Здесь начинается самое интересное. Платформа сравнивает текущую основную конфигурацию с конфигурацией базы данных и определяет, какие таблицы в SQL (или в файле 1CD) нужно изменить.
  3. Реструктуризация: Если в новой версии добавлены реквизиты, изменены типы данных или созданы новые индексы, 1С инициирует физическое перестроение таблиц. Это «черная дыра» времени. Если база весит сотни гигабайт, реструктуризация может длиться часами, но она выполняется средствами СУБД, и прикладной код 1С её время не фиксирует.
  4. Первый запуск в режиме «Предприятие»: После обновления конфигурации запускается код Библиотеки Стандартных Подсистем (БСП). Именно на этом этапе выполняются «обработчики обновления».

Выясним причину: почему отчет БСП «врет»

Проанализируем ситуацию с точки зрения программного кода. Окно, в котором написано «Версия приложения успешно обновлена за N минут», формируется подсистемой «Обновление информационной базы» БСП. Посмотрим, что именно оно измеряет.

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

В это время не включается время ожидания блокировок, время работы фоновых заданий, не относящихся к обновлению напрямую, и, самое главное, время, затраченное в Конфигураторе. Таким образом, если вы потратили 4 часа на техническую часть и 20 минут на выполнение кода БСП, в отчете вы увидите именно 20 минут.

Проанализируем роль отложенного обновления

В современных конфигурациях (БУХ 3.0, ERP, КА 2) используется механизм отложенных обработчиков. Рассмотрим, как это влияет на итоговые цифры. Основная идея отложенного обновления — позволить пользователям начать работу как можно быстрее, пока данные пересчитываются в фоновом режиме.

Разберем по шагам, что происходит при первом запуске:

  1. Выполняются приоритетные обработчики (без которых работа невозможна). Именно их время обычно выводится в финальном сообщении.
  2. Пользователи пускаются в базу.
  3. Запускается фоновое задание «Отложенное обновление». Оно может работать в несколько потоков.

Если в системе настроено выполнение в 8 потоков, то суммарное «процессорное время» может быть огромным, но реальное время ожидания будет меньше. Однако система фиксации времени в БСП часто суммирует время работы потоков или, наоборот, берет только интервал самого длительного. В итоге цифра в журнале обновлений становится «средней температурой по больнице».

Где найти реальные данные о времени работы

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

1. Журнал регистрации

Это самый надежный источник. Проанализируем события в журнале:

Пример кода (условный), как можно программно вытащить эти данные для отчета:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	ЖурналРегистрации.Дата КАК Период,
    |	ЖурналРегистрации.Событие КАК Событие,
    |	ЖурналРегистрации.Комментарий КАК Комментарий
    |ИЗ
    |	ЖурналРегистрации КАК ЖурналРегистрации
    |ГДЕ
    |	ЖурналРегистрации.Событие ПОДОБНО ""%Обновление%""";
// Далее анализ интервалов между первым и последним событием

2. Технологический журнал (ТЖ)

Если обновление идет аномально долго (например, на этапе «сравнения»), проанализируем ТЖ. Нам интересны события DBMSSQL (или другой СУБД) и EXCP. Часто время тратится не на сам код 1С, а на ожидание ответа от дисковой подсистемы или на нехватку места в tempdb.

Как обосновать время заказчику?

Если заказчик задает вопрос: «Почему в счете 5 часов, а программа пишет 10 минут?», воспользуемся следующими аргументами:

  1. Разделение на этапы: Объясните, что программа фиксирует только логическое изменение данных, но не учитывает физическую подготовку структуры таблиц.
  2. Реструктуризация: Это низкоуровневая операция СУБД. Программа 1С «не знает», сколько времени SQL Server тратил на пересоздание индекса в таблице на 100 миллионов записей.
  3. Подготовительные работы: Создание резервной копии, проверка логической целостности (ТИИ) перед обновлением — эти операции обязательны, но они вообще не попадают ни в какие логи обновления.
  4. Сложность конфигурации: На кастомизированных базах этап сравнения и объединения выполняется вручную программистом. Это интеллектуальный труд, который платформа принципиально не может замерить автоматически.

Выясним причины замедления на конкретных примерах

Рассмотрим ситуацию: база БП 3.0 весит 14 Гб, расширений почти нет, но обновление идет крайне долго. Посмотрим на факторы, которые «крадут» время, но не отображаются в логах:

Итоги и рекомендации

Подведем итог нашему анализу. Время, которое пишет 1С в конце обновления — это время работы бизнес-логики БСП. Оно не является мерилом общей длительности работ.

Для корректного мониторинга мы рекомендуем:

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

← На главную