Проблема производительности в 1С:Зарплата и Управление Персоналом 3.1 (ЗУП) является одной из самых актуальных для крупных организаций. Переход с версии 2.5 на 3.1 часто сопровождается жалобами пользователей на «тормоза» при открытии форм, записи документов и, что самое критичное, на блокировки при одновременном проведении документов. В данной статье мы подробно разберем комплекс мер — от настройки серверного оборудования до программных правок — которые помогут значительно ускорить систему.
Первым делом проанализируем среду, в которой развернута база данных. Если вы используете виртуализацию (например, VMware или Hyper-V), важно помнить, что 1С и SQL-сервер крайне чувствительны к распределению ресурсов. Разберем основные моменты:
tempdb является обязательным условием для комфортной работы 10 и более пользователей.Часто причиной внезапных замедлений становится неактуальная статистика или фрагментация индексов. Если регламентные задания в SQL-сервере не настроены, система начинает выбирать неоптимальные планы запросов. Выполним следующие шаги:
Обновление статистики: Это критически важная операция. Мы можем столкнуться с ситуацией, когда запрос, выполнявшийся 2 секунды, внезапно начинает исполняться 60 секунд. Попробуем выполнить принудительное обновление статистики командой:
EXEC sp_updatestats;
Реиндексация таблиц: Регулярная перестройка индексов позволяет ускорить поиск данных и запись новых документов. Проанализируем уровень фрагментации и настроим еженедельное или ежедневное обслуживание.
Рассмотрим параметры SQL-сервера, которые напрямую влияют на возникновение блокировок при одновременной работе бухгалтеров:
1. Это гарантирует, что один запрос будет выполняться в рамках одного потока, что предотвращает специфические взаимоблокировки на уровне процессора.tempdb на несколько частей (по количеству ядер процессора, но не более 8). Это снижает конкуренцию за системные страницы при активной работе с временными таблицами.Иногда причина «тормозов» кроется в конкретном программном коде. Например, в некоторых релизах ветки 3.1.7 была зафиксирована ошибка (код 30161250), связанная с некорректной работой запроса в модуле взаиморасчетов. Рассмотрим пример кода, который может вызывать длительное ожидание:
// Данная строка может выполняться до 60 секунд при неактуальной статистике
ВзаиморасчетыССотрудникамиРасширенный.ЗарегистрированаВыплаченнаяЗарплатаЗаПериод(Организация, ПериодВзаиморасчетов);
Если вы столкнулись с подобным, проанализируем возможность обновления на более актуальный релиз, где этот запрос переписан оптимизированным способом. Как показывает практика, обновление конфигурации часто снимает вопросы производительности, которые не решались настройкой «железа».
ЗУП 3.1 имеет ряд встроенных функций, которые создают фоновую нагрузку. Разберем, что можно отключить или настроить:
Выполнять автоматический пересчет документов при редактировании. Теперь система не будет пытаться пересчитать все начисления при каждом изменении кадрового приказа, что избавит нас от лишних блокировок.Зарплата к пересчету. Если в нем накопились тысячи записей за прошлые периоды, очистим их. Огромный список перерасчетов заставляет 1С выполнять тяжелые проверки при каждом проведении начисления зарплаты.Проанализируем состояние системных данных. Если база работает в режиме SQL, но журнал регистрации (файл .lgd) разросся до десятков гигабайт, это может замедлять запись любых данных. Рассмотрим вариант сокращения журнала регистрации и выгрузки старых записей в архив.
Также проверим актуальность расчета итогов. Перейдем в Управление итогами и убедимся, что текущие итоги рассчитаны по конец предыдущего месяца. Если итоги не актуальны, 1С будет вынуждена рассчитывать остатки «на лету» по всем записям регистров, что крайне медленно.
Если ошибки типа «Конфликт блокировок при выполнении транзакции» все же возникают, а оптимизация кода пока невозможна, мы можем временно увеличить Время ожидания блокировки данных в свойствах базы через консоль администрирования серверов 1С. Установим значение в 40-60 секунд вместо стандартных 20. Это позволит документам «дождаться» освобождения таблиц другим пользователем, не прерывая работу ошибкой.
Резюме: Ускорение ЗУП 3.1 — это всегда итерационный процесс. Начнем с регламентов SQL (статистика и индексы), затем оптимизируем настройки самой конфигурации (отключение автопересчета) и только после этого перейдем к анализу программного кода и наращиванию мощностей сервера.