При работе в 1С:ERP 2.4, особенно в подсистеме производства, пользователи могут сталкиваться с ошибкой «Превышено максимальное время ожидания предоставления блокировки». Эта ситуация возникает, когда одна транзакция ожидает освобождения ресурса (записи в таблице базы данных), который занят другим процессом, в течение времени, превышающего установленный лимит. Давайте разберем, как диагностировать и устранить эту проблему.
Первым шагом в решении данной проблемы является анализ событий, происходящих на сервере 1С. Для этого необходимо воспользоваться механизмом Технологического журнала (ТЖ). ТЖ позволяет зафиксировать, какой именно процесс, какой код и в какой момент времени «держит» блокировку, препятствуя работе остальных пользователей.
Для настройки сбора данных о блокировках создайте файл logcfg.xml в папке conf каталога установки платформы 1С. Рассмотрим пример конфигурации файла, который поможет отследить конфликты:
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="C:\Logs\1C" history="1">
<event>
<eq property="Name" value="TLOCK"/>
</event>
<property name="all"/>
</log>
</config>
</config>
Обратите внимание на параметр history="1": он ограничивает хранение логов одним днем, что предотвращает переполнение дискового пространства на сервере.
После включения ТЖ, в указанной директории (например, C:\Logs\1C) начнут появляться текстовые файлы в папках rphost. Каждый файл содержит структурированные данные о событиях TLOCK. В них вы найдете информацию о:
Анализируя эти данные, вы сможете понять, какая именно часть функционала «Диспетчирование этапов» провоцирует заторы. Часто причиной являются тяжелые операции, которые выполняются внутри транзакции записи.
Если вы определили, что проблема вызвана длительными операциями, рассмотрим следующие способы оптимизации:
Deadlock, необходимо пересмотреть порядок обращения к объектам в коде.Read Committed Snapshot (RCSI) позволяет существенно снизить количество блокировок при чтении данных.Часто в параметрах информационной базы пользователи пытаются увеличить время ожидания блокировки (например, до 300 секунд). Важно понимать: это лишь «лечение симптомов». Если транзакция не может завершиться за разумное время, увеличение лимита ожидания просто приведет к тому, что система будет «зависать» на более долгий срок, создавая еще большую очередь из других запросов. Используйте увеличение параметра только как временную меру и фокусируйтесь на поиске причины в коде или инфраструктуре.
Для настройки ТЖ можно использовать внешние обработки, такие как TechnologicalLogSetup.epf. Эти инструменты позволяют через интерфейс 1С сформировать файл logcfg.xml без необходимости вручную редактировать XML-структуру. После настройки обязательно проверьте, что логи начали корректно записываться, и через некоторое время приступайте к изучению файлов для выявления контекста конфликтующих запросов.
Работая совместно с данными ТЖ, вы сможете локализовать «узкие места» в системе диспетчирования этапов и обеспечить стабильную работу ERP-системы даже под высокой нагрузкой.