Почему расчетный листок в 1С:ЗУП 3.1 формируется слишком долго и как это ускорить?

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

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

Анализ программного кода и использование замера производительности

Первым делом проанализируем ситуацию с точки зрения кода. Даже если отчет считается «типовым», в него могли быть внесены незначительные изменения, которые критически влияют на скорость. Для этого в режиме «Конфигуратор» или через «Отладку» в режиме предприятия запустим Замер производительности.

Разберем по шагам, как это сделать:

  1. Запустим формирование расчетного листка в режиме отладки.
  2. Включим замер производительности непосредственно перед нажатием кнопки «Сформировать».
  3. Дождемся окончания процесса и остановим замер.
  4. Проанализируем колонку «Чистое время»: она покажет, какие процедуры или запросы занимают основную часть времени, что позволяет сделать консоль запросов.

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

Влияние аппаратных настроек и BIOS на производительность

Проанализируем ситуацию, когда на тестовой машине отчет работает быстрее, чем на мощном сервере. Часто причиной «замедления» являются настройки энергосбережения. Современные серверные процессоры стремятся экономить энергию, снижая частоту ядер в моменты простоя или низкой нагрузки. Однако 1С — это система, требующая мгновенного отклика (Burst load).

Проверим следующие настройки оборудования:

Сетевые протоколы: Shared Memory против TCP/IP

Выясним причину разницы в скорости между тестовым и рабочим сервером. В сообщениях форума упоминается, что на тестовой машине сервер приложений и SQL стоят вместе, и там отчет формируется быстрее (7 секунд против 12). Это объясняется использованием протокола Shared Memory.

Когда 1С и SQL-сервер находятся на одном физическом или виртуальном сервере, данные передаются через общую память, что практически исключает сетевые задержки. На рабочей системе взаимодействие идет через протокол TCP/IP, который вносит свои коррективы:

Глубокое обслуживание SQL-сервера

Если код типовой и железо настроено верно, проанализируем состояние базы данных на уровне SQL. Расчетный листок обращается к тяжелым регистрам: Начисления, Удержания, Данные состояний сотрудников.

Рекомендуется выполнить следующие действия:

  1. Обновление статистик: Если статистики устарели, SQL-оптимизатор может выбрать неэффективный план запроса (например, сканирование всей таблицы вместо поиска по индексу). Выполним команду:
    
    UPDATE STATISTICS [ИмяТаблицы];
    
  2. Очистка процедурного кэша: Иногда SQL «запоминает» плохой план выполнения. Попробуем сбросить его командой:
    
    DBCC FREEPROCCACHE;
    
  3. Настройка MAXDOP: Для баз данных 1С рекомендуется устанавливать Max Degree of Parallelism в значение 1. Это предотвращает избыточное распараллеливание простых запросов, которое в условиях 1С часто приводит к взаимным блокировкам и очередям.

Специфические причины в ЗУП 3.1: Регистр «Перерасчеты»

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

Рассмотрим порядок действий для оптимизации:

Настройка рабочих процессов (rphost) и антивируса

Напоследок проанализируем настройки сервера приложений 1С. Если на сервере работает один процесс rphost, в который «набились» сотни пользователей, производительность тяжелых отчетов будет падать из-за конкуренции за ресурсы внутри процесса.

Посмотрим на настройки в консоли администрирования:

Таким образом, для решения проблемы медленного формирования расчетного листка необходим комплексный подход: от ревизии доработанного кода до тонкой настройки сетевых протоколов и параметров SQL-сервера.

← На главную