Формирование унифицированной формы Т-13 «Табель учета рабочего времени», а также проведение и печать одноименного документа в конфигурациях «Зарплата и управление персоналом» часто вызывают серьезные задержки. На предприятиях со штатом от 100–150 сотрудников в одном подразделении процесс построения отчета может занимать десятки минут. При этом система активно нагружает дисковую подсистему и процессор, а пользователи сталкиваются с зависанием сеансов.
Проанализируем ситуацию комплексно: выясним архитектурные причины медленной работы алгоритмов табеля, рассмотрим различия между файловым и клиент-серверным режимами, разберем влияние настроек планов обмена и приведем пошаговые рекомендации по оптимизации программы и СУБД MS SQL Server.
Разберем, почему один и тот же отчет может выполняться с кардинально разной скоростью при вызове из разных мест программы. Нередко печать формы Т-13 непосредственно из документа занимает считанные секунды, тогда как отдельный отчет «Табель учета рабочего времени» по тому же подразделению формируется более 10 минут.
Причина кроется в алгоритме передачи отборов в тело запроса:
Для исключения этой задержки при использовании отчета проверьте источник данных в настройках отчета. Если в конфигурации доступен выбор режима, переключите его с расчета «По данным информационной базы» на чтение «По данным документов "Табель учета рабочего времени"». В этом случае отчет обратится к уже зафиксированным строкам в базе, минуя сложный сбор отклонений по виртуальным таблицам.
Одной из скрытых причин медленного проведения документов табеля и расчета графиков является механизм регистрации изменений для распределенных информационных баз (РИБ) и универсального обмена данными.
Рассмотрим порядок действий для проверки планов обмена:
ГрафикиРаботыПоВидамВремени.ПланыОбмена.ГрафикиРаботыПоВидамВремени включена авторегистрация во всех планах обмена, отключим ее (установим значение Запретить), если этот регистр не требуется непрерывно передавать в подчиненные узлы.При проведении табеля и перерасчете графиков система выполняет массовую запись движений. Если включена авторегистрация, 1С создает тысячи записей в служебных таблицах изменений (_ChangeRec), что приводит к резкому росту блокировок и замедлению транзакции.
Если в файловом режиме операция выполняется за 40–50 секунд, а в клиент-серверном на MS SQL Server — за 10–12 минут, корень проблемы заключается в деградации статистики СУБД и неоптимальных планах выполнения сложных пакетных запросов 1С.
Разберем по шагам регламентные процедуры, которые необходимо настроить на сервере СУБД:
Index Scan вместо Index Seek). Настроим ежедневное обновление статистики с параметром FULLSCAN.ALTER INDEX REORGANIZE, а выше 30% — ALTER INDEX REBUILD.
DBCC FREEPROCCACHE;
Запросы формирования табеля содержат множество вложенных пакетов и временных таблиц. Неправильная конфигурация сервера СУБД приводит к взаимным блокировкам потоков и просадке дисковой подсистемы.
Проанализируем ключевые параметры MS SQL для баз 1С:
CXPACKET. Установим параметр Max Degree of Parallelism = 1 в свойствах сервера СУБД (или настроим ограничение на уровне конкретной базы данных), чтобы заставить запрос выполняться в один поток без накладных расходов на синхронизацию.tempdb. Вынесем файлы tempdb на отдельный высокоскоростной накопитель (SSD/NVMe) и разобьем файл данных tempdb на несколько файлов одинакового размера (по количеству физических ядер процессора, но не более 8). Для версий SQL Server до 2016 включим флаги трассировки T1117 и T1118.rphost и операционной системы во избежание ухода процессов в файл подкачки (swapping).Если база данных эксплуатируется много лет, запросы к регистру СостояниеРаботниковОрганизаций и виртуальным таблицам расчетов замедляются из-за огромного объема неактуальных срезов и накопившихся записей перерасчетов.
Проверим состояние таблиц перерасчетов основных и дополнительных начислений. При регулярном изменении кадровых документов «задним числом» эти таблицы переполняются. Выполним обработку или удаление неактуальных записей перерасчетов через интерфейс программы либо административные обработки, после чего выполним стандартное «Тестирование и исправление информационной базы» с переиндексацией и сжатием таблиц.