Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

1C_ERR_LOCK_CONFLICT 1С:Предприятие и СУБД

1С Ошибка: Конфликт блокировок при выполнении транзакции — Решение

Обновлено: 25.08.2026 · Официальная документация ↗
  • Ошибка Конфликт блокировок при выполнении транзакции при одновременном проведении документов несколькими пользователями.
  • В технологическом журнале 1С фиксируются длительные события TLOCK и взаимоблокировки DEADLOCK.
  • Зависание сеансов пользователей на этапах записи регистров накопления и сведений.
  • Падение параллельной производительности системы при увеличении числа активных пользователей.

1. Перевод конфигурации в режим управляемых блокировок (Managed Lock)

Автоматический режим блокировок использует тяжелые блокировки таблиц на уровне СУБД. Переведите конфигурацию в управляемый режим:

  1. В Конфигураторе откройте свойства корневого узла конфигурации.
  2. Установите параметр Режим управления блокировкой данных в значение Управляемый (Managed).

2. Установка явных управляемых блокировок в коде BSL перед записью

Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ТоварыНаСкладах");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.УстановитьЗначение("Склад", ТекущийСклад);
ЭлементБлокировки.ИсточникДанных = ТаблицаТоваровДокумента;
ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");

// Захват блокировки строго до начала чтения остатков
Блокировка.Заблокировать();

3. Соблюдение единого алфавитного порядка блокировки ресурсов

Для исключения тупиковых взаимоблокировок (Deadlocks) всегда захватывайте ресурсы в строго одинаковом порядке во всех модулях системы (например: Склад -> Номенклатура -> Серия).

4. Минимизация времени нахождения внутри транзакции

// НЕПРАВИЛЬНО: Выполнение длительных расчетов или запросов внутри транзакции
НачатьТранзакцию();
// Тяжелый запрос к базе на 10 секунд...
ДокументОбъект.Записать();
ЗафиксироватьТранзакцию();

// ПРАВИЛЬНО: Все расчеты и чтение выполняются ДО открытия транзакции
ДанныеДляЗаписи = РассчитатьДанныеЗапросом();
НачатьТранзакцию();
ДокументОбъект.Записать();
ЗафиксироватьТранзакцию();
💡 Практика специалистов: Главное правило предотвращения блокировок в 1С: никогда не вызывайте диалоговые окна (Предупреждение, Вопрос), обращения к веб-сервисам и длительные выгрузки файлов внутри открытой транзакции (НачатьТранзакцию...ЗафиксироватьТранзакцию).

Частые вопросы (FAQ)

Чем управляемая блокировка (1С) отличается от транзакционной блокировки СУБД (SQL)?

Управляемые блокировки выставляются менеджером кластера 1С в оперативной памяти на логическом уровне метаданных, не нагружая СУБД эскалацией блокировок строк до целых таблиц.

Что такое Deadlock (взаимоблокировка) в 1С?

Ситуация, когда Транзакция 1 заблокировала Ресурс А и ждет Ресурс Б, а Транзакция 2 заблокировала Ресурс Б и ждет Ресурс А. СУБД принудительно аварийно прерывает одну из транзакций как жертву.

Как настроить технологический журнал для сбора конфликтов блокировок TLOCK?

Добавьте в logcfg.xml сбор событий TLOCK и TDEADLOCK с условием длительности Duration > 1000000 (более 1 секунды) для фиксации контекста BSL.

Помогает ли включение Read Committed Snapshot Isolation (RCSI) в MS SQL?

Да! Включение RCSI на базе SQL позволяет читающим транзакциям не блокировать пишущие, устраняя большинство конфликтов при параллельной работе.

Полезные материалы
Рекомендуем