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

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

Формирование унифицированной формы Т-13 «Табель учета рабочего времени», а также проведение и печать одноименного документа в конфигурациях «Зарплата и управление персоналом» часто вызывают серьезные задержки. На предприятиях со штатом от 100–150 сотрудников в одном подразделении процесс построения отчета может занимать десятки минут. При этом система активно нагружает дисковую подсистему и процессор, а пользователи сталкиваются с зависанием сеансов.

Проанализируем ситуацию комплексно: выясним архитектурные причины медленной работы алгоритмов табеля, рассмотрим различия между файловым и клиент-серверным режимами, разберем влияние настроек планов обмена и приведем пошаговые рекомендации по оптимизации программы и СУБД MS SQL Server.

Разница между отчетом Т-13 и печатью из документа «Табель»

Разберем, почему один и тот же отчет может выполняться с кардинально разной скоростью при вызове из разных мест программы. Нередко печать формы Т-13 непосредственно из документа занимает считанные секунды, тогда как отдельный отчет «Табель учета рабочего времени» по тому же подразделению формируется более 10 минут.

Причина кроется в алгоритме передачи отборов в тело запроса:

  1. Печать из документа: в запрос передается готовый список физических лиц и сотрудников из табличной части конкретного документа через временную таблицу. Запрос сканирует кадровые регистры и отклонения только по строго ограниченному списку записей.
  2. Формирование через отчет: если отбор по подразделению наложен через пользовательскую панель или построитель отчета, во многих типовых версиях сначала выполняется тяжелый пакетный запрос по всей организации, сканирующий все кадровые срезы, графики и неявки, и лишь затем итоговая выборка фильтруется в оперативной памяти.

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

Отключение авторегистрации изменений в планах обмена

Одной из скрытых причин медленного проведения документов табеля и расчета графиков является механизм регистрации изменений для распределенных информационных баз (РИБ) и универсального обмена данными.

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

  1. Откроем конфигуратор и найдем периодический регистр сведений ГрафикиРаботыПоВидамВремени.
  2. Перейдем на закладку «Подсистемы» или откроем состав каждого плана обмена в ветке ПланыОбмена.
  3. Проверим свойство «Авторегистрация» для данного регистра сведений.
  4. Если для регистра ГрафикиРаботыПоВидамВремени включена авторегистрация во всех планах обмена, отключим ее (установим значение Запретить), если этот регистр не требуется непрерывно передавать в подчиненные узлы.

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

Регламентное обслуживание базы данных на MS SQL Server

Если в файловом режиме операция выполняется за 40–50 секунд, а в клиент-серверном на MS SQL Server — за 10–12 минут, корень проблемы заключается в деградации статистики СУБД и неоптимальных планах выполнения сложных пакетных запросов 1С.

Разберем по шагам регламентные процедуры, которые необходимо настроить на сервере СУБД:

  1. Обновление статистик (Update Statistics): оптимизатор MS SQL строит план выполнения запроса на основе статистики распределения данных. Если статистика устарела, сервер выбирает неэффективные методы соединения таблиц (например, Index Scan вместо Index Seek). Настроим ежедневное обновление статистики с параметром FULLSCAN.
  2. Реиндексация и реорганизация индексов: фрагментация таблиц кадровых регистров сведений и регистров расчета приводит к чрезмерному чтению диска. Для фрагментации от 10% до 30% выполним ALTER INDEX REORGANIZE, а выше 30% — ALTER INDEX REBUILD.
  3. Очистка процедурного кэша: после перестроения индексов и обновления статистик сбросим старые неоптимальные планы выполнения запросов командой: DBCC FREEPROCCACHE;

Тонкая настройка параметров экземпляра MS SQL Server

Запросы формирования табеля содержат множество вложенных пакетов и временных таблиц. Неправильная конфигурация сервера СУБД приводит к взаимным блокировкам потоков и просадке дисковой подсистемы.

Проанализируем ключевые параметры MS SQL для баз 1С:

  1. Параметр параллелизма (MAXDOP): по умолчанию SQL Server пытается распараллелить выполнение одного сложного запроса на все ядра процессора. Для запросов 1С со сложными соединениями это часто вызывает длительные ожидания типа CXPACKET. Установим параметр Max Degree of Parallelism = 1 в свойствах сервера СУБД (или настроим ограничение на уровне конкретной базы данных), чтобы заставить запрос выполняться в один поток без накладных расходов на синхронизацию.
  2. Настройка базы tempdb: временные таблицы отчета Т-13 активно используют системную базу tempdb. Вынесем файлы tempdb на отдельный высокоскоростной накопитель (SSD/NVMe) и разобьем файл данных tempdb на несколько файлов одинакового размера (по количеству физических ядер процессора, но не более 8). Для версий SQL Server до 2016 включим флаги трассировки T1117 и T1118.
  3. Ограничение памяти СУБД (Max Server Memory): если сервер 1С и MS SQL работают на одном физическом сервере, обязательно ограничим максимальный объем памяти для SQL Server, оставив достаточный объем ОЗУ для работы процессов rphost и операционной системы во избежание ухода процессов в файл подкачки (swapping).

Очистка таблиц перерасчетов и кадровой истории

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

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

← На главную