Как ускорить работу 1С:ЗУП 3.1 и устранить ошибки блокировок при одновременной работе?

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

Проблема производительности в 1С:Зарплата и Управление Персоналом 3.1 (ЗУП) является одной из самых актуальных для крупных организаций. Переход с версии 2.5 на 3.1 часто сопровождается жалобами пользователей на «тормоза» при открытии форм, записи документов и, что самое критичное, на блокировки при одновременном проведении документов. В данной статье мы подробно разберем комплекс мер — от настройки серверного оборудования до программных правок — которые помогут значительно ускорить систему.

Анализ серверной инфраструктуры и виртуализации

Первым делом проанализируем среду, в которой развернута база данных. Если вы используете виртуализацию (например, VMware или Hyper-V), важно помнить, что 1С и SQL-сервер крайне чувствительны к распределению ресурсов. Разберем основные моменты:

  1. Статическая память: Убедимся, что для виртуальной машины с сервером 1С и СУБД выделена статическая, а не динамическая память. Динамическое выделение ресурсов вызывает микро-задержки, которые в сумме приводят к ощутимому замедлению работы интерфейса.
  2. Частота процессора: Для 1С критически важна высокая тактовая частота одного ядра, а не общее количество ядер. Проверим, чтобы частота процессоров на сервере была максимально возможной (желательно выше 3.0 ГГц).
  3. Дисковая подсистема: Проанализируем нагрузку на диски. Использование SSD или NVMe накопителей для файлов базы данных и tempdb является обязательным условием для комфортной работы 10 и более пользователей.

Регламентные операции СУБД

Часто причиной внезапных замедлений становится неактуальная статистика или фрагментация индексов. Если регламентные задания в SQL-сервере не настроены, система начинает выбирать неоптимальные планы запросов. Выполним следующие шаги:

Обновление статистики: Это критически важная операция. Мы можем столкнуться с ситуацией, когда запрос, выполнявшийся 2 секунды, внезапно начинает исполняться 60 секунд. Попробуем выполнить принудительное обновление статистики командой:

EXEC sp_updatestats;

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

Тонкая настройка MS SQL Server для 1С

Рассмотрим параметры SQL-сервера, которые напрямую влияют на возникновение блокировок при одновременной работе бухгалтеров:

  1. MAXDOP (Maximum Degree of Parallelism): Для баз 1С рекомендуется устанавливать значение 1. Это гарантирует, что один запрос будет выполняться в рамках одного потока, что предотвращает специфические взаимоблокировки на уровне процессора.
  2. Cost Threshold for Parallelism: Если вы все же используете параллелизм, поднимем это значение до 50, чтобы мелкие запросы не дробились на потоки.
  3. Настройка tempdb: Выясним, разделен ли файл tempdb на несколько частей (по количеству ядер процессора, но не более 8). Это снижает конкуренцию за системные страницы при активной работе с временными таблицами.

Устранение программных ошибок в релизах ЗУП 3.1

Иногда причина «тормозов» кроется в конкретном программном коде. Например, в некоторых релизах ветки 3.1.7 была зафиксирована ошибка (код 30161250), связанная с некорректной работой запроса в модуле взаиморасчетов. Рассмотрим пример кода, который может вызывать длительное ожидание:


// Данная строка может выполняться до 60 секунд при неактуальной статистике
ВзаиморасчетыССотрудникамиРасширенный.ЗарегистрированаВыплаченнаяЗарплатаЗаПериод(Организация, ПериодВзаиморасчетов);

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

Оптимизация внутренних механизмов ЗУП 3.1

ЗУП 3.1 имеет ряд встроенных функций, которые создают фоновую нагрузку. Разберем, что можно отключить или настроить:

  1. Автоматический пересчет зарплаты: Зайдем в раздел Настройка — Расчет зарплаты и снимем флажок Выполнять автоматический пересчет документов при редактировании. Теперь система не будет пытаться пересчитать все начисления при каждом изменении кадрового приказа, что избавит нас от лишних блокировок.
  2. Регистр «Перерасчеты»: Проанализируем состояние регистра Зарплата к пересчету. Если в нем накопились тысячи записей за прошлые периоды, очистим их. Огромный список перерасчетов заставляет 1С выполнять тяжелые проверки при каждом проведении начисления зарплаты.
  3. Полнотекстовый поиск: Если пользователи не используют глобальный поиск в программе, отключим его в разделе Администрирование — Общие настройки. Это освободит ресурсы диска, которые тратятся на индексацию.

Работа с журналом регистрации и итогами

Проанализируем состояние системных данных. Если база работает в режиме SQL, но журнал регистрации (файл .lgd) разросся до десятков гигабайт, это может замедлять запись любых данных. Рассмотрим вариант сокращения журнала регистрации и выгрузки старых записей в архив.

Также проверим актуальность расчета итогов. Перейдем в Управление итогами и убедимся, что текущие итоги рассчитаны по конец предыдущего месяца. Если итоги не актуальны, 1С будет вынуждена рассчитывать остатки «на лету» по всем записям регистров, что крайне медленно.

Увеличение времени ожидания блокировки

Если ошибки типа «Конфликт блокировок при выполнении транзакции» все же возникают, а оптимизация кода пока невозможна, мы можем временно увеличить Время ожидания блокировки данных в свойствах базы через консоль администрирования серверов 1С. Установим значение в 40-60 секунд вместо стандартных 20. Это позволит документам «дождаться» освобождения таблиц другим пользователем, не прерывая работу ошибкой.

Резюме: Ускорение ЗУП 3.1 — это всегда итерационный процесс. Начнем с регламентов SQL (статистика и индексы), затем оптимизируем настройки самой конфигурации (отключение автопересчета) и только после этого перейдем к анализу программного кода и наращиванию мощностей сервера.

← На главную