Взаимоблокировка в 1С представляет собой неразрешимый конфликт между двумя блокировками. В 1С имеется встроенный менеджер взаимоблокировок, который отслеживает такие конфликты и откатывает менее важную транзакцию.
По каким причинам могут возникать взаимоблокировки в 1С?
1. Несоответствующий уровень блокировки. Решается минимизацией длительности операций и изменением уровня изолированности (выставить на максимум).
2. Использование ресурсов системы в произвольном порядке. Решается установкой блокировок в нужном порядке через код.
3. Ошибки блокировок, вызванные распараллеливанием процессов или избыточными блокировками. Решаются эти проблемы оптимизацией параллельности процессов и грамотным составлением запросов (без сканирования таблиц).
4. Использование неоптимальных запросов – решается грамотной настройкой этих запросов.
5. Отбор по неиндексируемым полям. Решается индексацией полей с большим количеством значений.
Перечисленные выше проблемы и их решения требуют хороших навыков работы с 1С. Любые неправильные действия могут привести к обратному результату – увеличению количества ошибок и взаимных блокировок.