Проведение документа «Расчет себестоимости выпуска» при использовании режима расширенной аналитики учета затрат (РАУЗ) в конфигурации «1С:Управление производственным предприятием» может занимать десятки часов или завершаться падением рабочего процесса с разрывом соединения. Проанализируем ключевые причины таких задержек и разберем по шагам действенные способы ускорения проведения.
Рассмотрим одну из наиболее распространенных причин зависания на этапе записи движений — пересчет итогов регистров накопления. Если точка рассчитанных итогов в базе отстает от периода проведения документа, СУБД вынуждена рассчитывать и перезаписывать агрегированные данные на весь промежуток времени от даты итогов до текущей даты.
Выясним, как правильно обслужить итоги регистров:
Проанализируем поведение СУБД. Высокий уровень параллелизма (MAXDOP со значением 8 и более) при массовых операциях записи движений часто вызывает субоптимальные планы запросов, длительное ожидание ресурсов и блокировки таблиц итогов.
Для корректной работы 1С с СУБД MS SQL Server ограничим параллелизм выполнения индивидуальных запросов:
1 (в редких случаях — 2).Рассмотрим пример тяжелого SQL-запроса к таблице итогов регистра, задержки в котором возникают при некорректном параллелизме:
UPDATE T2
SET _Fld20879 = T2._Fld20879 + T1._Fld20879,
_Fld20880 = T2._Fld20880 + T1._Fld20880,
_Fld20881 = T2._Fld20881 + T1._Fld20881
FROM #tt20 T1 WITH(NOLOCK)
INNER JOIN dbo._AccumRgT20892 T2 WITH(TABLOCK)
ON T1._Period = T2._Period
AND T1._Fld20875RRef = T2._Fld20875RRef
AND T1._Fld20876RRef = T2._Fld20876RRef
AND T1._Fld20877RRef = T2._Fld20877RRef
AND T1._Fld20878RRef = T2._Fld20878RRef
AND T2._Splitter = P1
При расчете РАУЗ система генерирует большой объем временных таблиц и производит многократные изменения в регистрах затрат. Если статистика СУБД неактуальна, оптимизатор SQL создает неэффективные планы запросов.
Выполним регулярный регламент обслуживания СУБД:
UPDATE STATISTICS) перед запуском расчета себестоимости.REBUILD INDEX) для основных таблиц регистров накопления и сведений.Посмотрим на аппаратную часть сервера. При построении и решении системы алгебраических уравнений (СЛУ) платформой выполняется интенсивный ввод-вывод. Очередь к диску и размещение базы данных на медленных накопителях создают узкое место (I/O Bottleneck).
Для решения дисковых проблем применим следующие рекомендации:
TempDB на высокоскоростные накопители SSD или NVMe.TempDB на несколько файлов данных одинакового размера (по количеству физических ядер процессора, но не более 8).Max Server Memory), чтобы предотвратить дефицит ОЗУ у процесса rphost сервера приложений 1С.В настройках параметров учета для алгоритмов РАУЗ задается допустимая погрешность расчета решений СЛУ. Если установлена слишком высокая точность или в учете присутствует мелкое дробление копеек, система тратит сотни итераций на сведение матрицы.
Проанализируем точность вычислений:
Один из самых частых факторов, приводящих алгоритм расчета в замкнутый цикл, — наличие отрицательных остатков по аналитикам учета затрат или партий (количественных и суммовых списаний «в минус»).
Выясним, как выявить проблемы в данных перед расчетом:
Разберем дополнительные варианты проведения, встроенные в УПП: