Почему 1С:УПП зависает на несколько часов каждый месяц при входе в программу?

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

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

1. Диагностика выполняемых процессов через журнал регистрации

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

  1. Откроем информационную базу после завершения длительного процесса или запустим второй сеанс в режиме просмотра.
  2. Перейдем в главное меню: Сервис → Журнал регистрации (или Администрирование → Журнал регистрации).
  3. Установим фильтр по периоду на время зависания сеанса и отберем события с типами Фоновое задание, Регламентное задание, а также транзакции с изменениями метаданных.
  4. Проанализируем зафиксированные события: в колонке метаданных отобразятся точные наименования выполняемых заданий (например, слияние индексов, расчет себестоимости, закрытие месяца или пересчет итогов).

2. Настройка расписания регламентных заданий через «Консоль заданий»

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

Для управления расписанием заданий воспользуемся специальным инструментом — обработкой КонсольЗаданий.epf:

  1. Откроем внешнюю обработку Консоль заданий в режиме 1С:Предприятие.
  2. В списке регламентных заданий найдем задачи с ежемесячным или ежедневным расписанием (например, СлияниеИндексовППД, ОбновлениеИндексовППД, ИзвлечениеТекста).
  3. Откроем свойства тяжелого регламентного задания и изменим его расписание, перенеся выполнение на ночные часы или нерабочие дни.
  4. Если используется файловый вариант базы данных, организуем выделенный фоновый сеанс на сервере для выполнения регламентных процедур без участия пользователей.

3. Автоматический сдвиг границы итогов регистров

В платформе 1С:Предприятие итоги по регистрам накопления и регистрам бухгалтерии рассчитываются с периодичностью в один календарный месяц. При наступлении нового месяца и первой попытке сформировать отчет по остаткам или провести документ система инициирует процедуру сдвига границы рассчитанных итогов на новый период.

На базах с большим объемом движений такой пересчет «на лету» в пользовательском сеансе может длиться несколько часов. Чтобы предотвратить внезапные зависания, настроим пересчет итогов на опережение:

  1. В конце текущего месяца (например, 28–30 числа) перейдем в меню Операции → Управление итогами.
  2. Выберем все регистры накопления и бухгалтерии.
  3. Установим границу рассчитанных итогов на 1–2 месяца вперед относительно текущей даты и нажмем кнопку Установить.
  4. Для автоматизации процесса создадим регламентную процедуру, выполняющую метод УстановитьПериодРассчитанныхИтогов() по расписанию в нерабочее время.

Пример программной установки границы итогов для регистра накопления:


Граница = КонецМесяца(ТекущаяДата());
РегистрыНакопления.ТоварыНаСкладах.УстановитьПериодРассчитанныхИтогов(Граница);

4. Оптимизация полнотекстового поиска

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

  1. Перейдем в меню Операции → Управление полнотекстовым поиском.
  2. Нажмем кнопку Отключить или очистим существующий индекс.
  3. Если поиск необходим, отключим автоматическое фоновое обновление и настроим регламентный запуск слияния индексов строго во внерабочее время.

5. Точная локализация зависания через замер производительности

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

Разберем, как зафиксировать проблемный участок кода с помощью отладчика:

  1. Запустим конфигуратор и перейдем в меню Отладка → Замер производительности.
  2. Запустим сеанс 1С:Предприятия в режиме отладки.
  3. После завершения зависания и полной загрузки главного окна вернемся в конфигуратор и остановим замер.
  4. Отсортируем строки полученного отчета по колонке Время (%) — в самом верху таблицы отобразится метод или запрос, вызвавший многочасовую задержку.
← На главную