Как устранить 100% нагрузку на процессор от фонового задания «Выполняется распределение расчетов с клиентами»?

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

В современных конфигурациях 1С, таких как Управление торговлей 11, ERP 2 или Комплексная автоматизация 2, пользователи часто сталкиваются с проблемой резкого снижения производительности сервера. Процессор (ЦП) нагружается на 100%, а в списке фоновых заданий отображается процесс Выполняется распределение расчетов с клиентами. Давайте разберем по шагам, почему это происходит и как оптимизировать работу системы.

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

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

Когда менеджер проводит платежное поручение или отгрузку, либо когда бухгалтер открывает отчет Ведомость по расчетам с клиентами, система инициирует фоновое задание. Его цель — распределить суммы по документам согласно методу ФИФО. Если данных много или в цепочке документов есть ошибки, этот процесс становится «тяжелым» и забирает все ресурсы сервера.

Решение №1: Отключение автоматического запуска при формировании отчетов

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

  1. Перейдем в раздел НСИ и администрирование.
  2. Найдем пункт Настройка НСИ и разделов, далее выберем подраздел Казначейство и взаиморасчеты.
  3. В открывшемся окне найдем группу Взаиморасчеты.
  4. Обратим внимание на настройку Режим распределения взаиморасчетов.
  5. Нам необходимо снять флаг «Выполнять распределение расчетов при формировании отчетов».

После снятия этого флага пользователи смогут формировать отчеты мгновенно. Однако стоит учитывать, что данные в отчетах могут быть неактуальными (не распределенными), пока не отработает регламентное задание.

Решение №2: Настройка регламентного задания по расписанию

Вместо того чтобы заставлять сервер «потеть» каждый раз при записи документа или открытии отчета, мы можем перенести эту нагрузку на время, когда сервер менее загружен. Для этого выясним причину частых запусков и настроим расписание.

Нам нужно убедиться, что включено регламентное задание Распределение расчетов с клиентами (или аналогичное для поставщиков). Рассмотрим алгоритм действий:

  1. Откроем Обслуживание в разделе Администрирование.
  2. Перейдем в Регламентные и фоновые задания.
  3. Найдем в списке задание с наименованием Распределение расчетов.
  4. Настроим расписание. Например, вместо запуска каждую минуту, установим интервал раз в 15-30 минут или настроим запуск в обеденный перерыв и ночное время.

Это позволит серверу распределять ресурсы более равномерно, избегая пиковых нагрузок в моменты активной работы пользователей.

Решение №3: Поиск «глубокой ретроспективы» и ошибок в данных

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

Разберем, как найти такие проблемные места:

Решение №4: Техническая оптимизация SQL-сервера

Если вы используете клиент-серверный вариант работы, высокая загрузка ЦП часто связана с тем, что оптимизатор SQL-сервера строит неэффективный план запроса. Это происходит из-за неактуальной статистики в таблицах регистров взаиморасчетов.

Рекомендуем выполнить обновление статистики (UPDATE STATISTICS) для основных таблиц, участвующих в расчете. В базе данных SQL это обычно таблицы с именами, похожими на _AccumRgED21532 (расчеты с клиентами) и _AccumRgED21545 (расчеты с поставщиками).

Пример SQL-команда для обслуживания базы (выполняется системным администратором):


UPDATE STATISTICS _AccumRgED21532;
UPDATE STATISTICS _AccumRgED21545;

Это поможет СУБД быстрее обрабатывать сложные запросы по распределению ФИФО, что напрямую снизит нагрузку на процессоры серверного оборудования.

Решение №5: Обновление платформы и конфигурации

Важно помнить, что механизмы онлайн-расчетов постоянно совершенствуются. В версиях платформы ниже 8.3.14 и релизах конфигурации УТ 11.4.5 алгоритмы содержали ряд узких мест. В более поздних выпусках (начиная с 11.4.13) разработчики 1С существенно оптимизировали этот узел, добавив использование временных таблиц и снизив количество обращений к базе данных.

Посмотрим на ситуацию со стороны системных ресурсов: если у вас 25 пользователей на Intel Xeon E3-1226 v3 с 32GB ОЗУ, этого железа вполне достаточно для комфортной работы, если программные механизмы настроены верно. 100% нагрузка в данном случае — это сигнал о программном «зацикливании» или избыточности вычислений, а не о нехватке мощности.

Итог совместной работы

Мы выяснили, что для устранения проблемы 100% загрузки ЦП фоновым заданием распределения расчетов, необходимо действовать комплексно:

  1. Снять нагрузку с интерфейса: отключить запуск распределения при открытии отчетов.
  2. Перейти на регламент: настроить запуск задания в периоды низкой активности.
  3. Очистить данные: найти и устранить ошибки в регистрах за старые периоды.
  4. Обслуживать СУБД: регулярно обновлять статистику SQL.

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

← На главную