Внедрение и эксплуатация тяжелых конфигураций, таких как 1С:ERP Управление предприятием, часто сопровождаются проблемами с производительностью. Пользователи могут сталкиваться со сбоями из-за конфликтов блокировок, длительной обработкой проверок или многоминутным открытием документов с обширными табличными частями. Проанализируем ключевые причины возникновения системных задержек и разберем по шагам комплекс мер по аппаратной, системной и программной оптимизации.
Рассмотрим типовую ситуацию: база данных 1С:ERP работает в клиент-серверном режиме на СУБД MS SQL Server, обслуживая около 50 активных пользователей. При этом открытие формы документа (например, Производство без заказа) с несколькими тысячами строк в табличной части занимает до 15–20 минут, а в процессе работы возникают блокировки. Проанализируем, с чем связаны такие симптомы:
Для обеспечения комфортной работы 1С:ERP требуется правильно сформировать аппаратный контур сервера приложений и сервера СУБД.
Разберем основные требования к физическому железу и настройкам гипервизора:
tempdb.rphost) для подключенных пользователей.Даже при наличии управляемых блокировок в конфигурации 1С:ERP СУБД требует специализированной тонкой настройки для исключения конфликтов доступа и эффективной работы с памятью.
Рассмотрим ключевые параметры настройки MS SQL Server:
READ_COMMITTED_SNAPSHOT. Это переводит операции чтения на использование версий строк в tempdb.
ALTER DATABASE [Имя_Базы_1С] SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE;
CXPACKET, установим параметр Max Degree of Parallelism в значение 1 (либо зададим жесткий порог Cost Threshold for Parallelism).tempdb равного размера (по количеству физических ядер процессора, но обычно не более 8). Это исключит конкуренцию за страницы распределения памяти.TF 1118 (устранение смешивания экстентов в tempdb) и TF 2371 (динамический порог автоматического обновления статистики для больших таблиц).Если открытие документа с 2000+ строк занимает длительное время, замена оборудования — лишь часть решения. Проанализируем, как модернизировать программный код и поведение форм 1С.
Разберем практические приемы оптимизации:
ДинамическоеСчитывание. В этом случае платформа запрашивает с сервера только те строки, которые помещаются на экране пользователя.ПриСозданииНаСервере, ПриОткрытии или ПриПолученииДанныхНаСервере. Если при открытии формы для каждой строки ТЧ выполняются дополнительные запросы к регистрам или вычисления сопутствующих данных, их необходимо перенести на отложенную обработку или выполнять по интерактивной команде.Пример кода для проверки структуры и корректного получения данных без передачи лишнего контекста на клиент:
&НаСервере
Процедура ЗагрузитьСтрокиПорциейНаСервере(ДокументСсылка, НомерPage, РазмерСтраницы)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТЧ.НомерСтроки КАК НомерСтроки,
| ТЧ.Номенклатура КАК Номенклатура,
| ТЧ.Количество КАК Количество
|ИЗ
| Документ.ПроизводствоБезЗаказа.Товары КАК ТЧ
|ГДЕ
| ТЧ.Ссылка = &Ссылка
|УПОРЯДОЧИТЬ ПО
| ТЧ.НомерСтроки
|АВТООБРАБОТКА_РАЗБИЕНИЯ_ПО_СТРАНИЦАМ"; // Условный пример оптимизированной выборки
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
// Выполнение выборки с ограничением объема передаваемых данных
КонецПроцедуры
Проанализируем методику поиска узких мест, если задержки сохраняются:
TLOCK, TTIMEOUT и TDEADLOCK для выявления таймаутов блокировок и кода, вызывающего длительные ожидания.sys.dm_os_wait_stats на предмет ожиданий диска (PAGEIOLATCH_*) и блокировок (LCK_M_*).Сочетание мощной дисковой подсистемы SSD, высокочастотных процессоров, правильной настройки параметров MS SQL Server и оптимизации работы с контекстом управляемых форм позволяет добиться стабильной и быстрой работы 1С:ERP при любом количестве пользователей.