К статье
Практический материал

Администрирование · 11 мин

Блокировка данных в 1С: что это и как с ней работать

Что такое блокировка данных в 1С, чем объектные блокировки отличаются от транзакционных, почему возникают конфликты и как безопасно снять зависший сеанс.

Блокировка данных в 1С — это механизм, который не даёт двум пользователям или процессам одновременно изменить один и тот же объект: документ, элемент справочника или запись регистра. Пока один сеанс редактирует объект, остальные видят сообщение «Конфликт блокировок» или «Действие не может быть выполнено», и это нормальное поведение системы, а не сбой.

Без блокировок многопользовательская работа была бы невозможна: два кладовщика могли бы одновременно записать разные остатки по одной номенклатуре, а данные базы стали бы недостоверными. Платформа 1С автоматически ставит и снимает блокировки, но в ряде ситуаций — при зависшем сеансе, длительной обработке или ошибках в коде — блокировки становятся проблемой, которую нужно диагностировать и устранять.

Разобраться в теме важно и пользователю, который встретил ошибку, и администратору, отвечающему за стабильность базы. Ниже — виды блокировок, причины конфликтов, способы найти виновника и безопасные методы снятия зависших блокировок.

Что такое блокировка данных и зачем она нужна

Когда пользователь открывает документ на редактирование или проводит его, платформа «захватывает» соответствующие данные: помечает их как занятые. Другой сеанс, попытавшийся изменить те же данные, либо ждёт освобождения, либо получает отказ с сообщением о конфликте. После завершения операции блокировка снимается автоматически.

Назначение механизма — обеспечить целостность и согласованность информации. Классический пример: двое менеджеров одновременно списывают последние 10 единиц товара. Без блокировки оба документа проведутся, и остаток уйдёт в минус. С блокировкой второй документ подождёт или отклонится, и пользователь увидит актуальное состояние склада.

Важно понимать: блокировка — это не запрет на чтение. Остальные пользователи могут просматривать заблокированный объект, формировать отчёты и работать с другими записями. Ограничивается именно изменение тех же данных.

Виды блокировок в 1С

В платформе существует несколько уровней блокировок, и путать их не стоит — у каждого свои причины и способы устранения.

Объектные (оптимистичные) блокировки

Возникают, когда два пользователя открыли один и тот же объект на редактирование. Первый, кто нажал «Записать», сохранит изменения; второй получит сообщение, что данные были изменены другим пользователем, и ему придётся перечитать объект. Это штатная ситуация, она не требует вмешательства администратора.

Транзакционные блокировки СУБД

Работают на уровне сервера баз данных (MS SQL, PostgreSQL и др.) во время проведения документов и записи регистров. Если транзакция длится долго — например, обработка проводит тысячи документов — другие сеансы, затрагивающие те же таблицы, встают в очередь или завершаются ошибкой «Конфликт блокировки при выполнении транзакции».

Управляемые блокировки

Их разработчик устанавливает явно в коде конфигурации через менеджер блокировок, чтобы защитить конкретные данные на время критичной операции. Ошибки в таком коде — частая причина «зависших» блокировок в самописных и доработанных конфигурациях.

Вид блокировкиКогда возникаетТипичное сообщение
ОбъектнаяДвое редактируют один объект«Данные были изменены другим пользователем»
ТранзакционнаяКонкурентная запись в регистры«Конфликт блокировки при выполнении транзакции»
УправляемаяЯвная установка в кодеЗависит от реализации конфигурации
Сеансовая (база)Монопольный режим, обновление«Ошибка разделённого доступа к базе»

Почему возникают конфликты блокировок

Самая частая бытовая причина — реальное совпадение действий: два оператора действительно работают с одним заказом или контрагентом. Здесь достаточно договориться о порядке работы или повторить действие через минуту.

Вторая группа причин — техническая. Зависший сеанс: у пользователя «упал» клиент или пропала сеть, а сеанс на сервере остался активным и держит блокировку. Длительные регламентные задания: обмен данными, пересчёт итогов или загрузка прайсов в рабочее время захватывают большие массивы данных. Ошибки в доработках: управляемые блокировки, которые не снимаются из-за исключения в коде.

Третья группа — архитектурная: проведение больших документов по регистрам с высокой конкуренцией, отсутствие индексов в запросах обработок, работа в файловой базе с большим числом пользователей. Такие конфликты повторяются регулярно и требуют системного решения, а не разового снятия.

Одиночная ошибка у одного пользователяСкорее всего, штатный конфликт

Повторить действие через 1–2 минуты

Ошибки у нескольких пользователей сразуЗависший сеанс или тяжёлая обработка

Открыть консоль кластера и посмотреть активные сеансы

Ошибки повторяются каждый день в одно времяРегламентное задание или обмен

Проверить расписание фоновых заданий

Ошибки после обновления конфигурацииВозможны проблемы в новом коде

Проверить журнал регистрации и доработки

Как найти источник блокировки

Для клиент-серверной базы главный инструмент — консоль кластера серверов 1С. В разделе «Сеансы» видно, кто сейчас подключён, как долго длится сеанс и какой компьютер его держит. Зависший сеанс обычно выдаёт себя: пользователь говорит, что давно вышел, а сеанс числится активным.

В самой базе полезен журнал регистрации (Администрирование → Обслуживание → Журнал регистрации). Отфильтруйте события с ошибками за нужный период: там видно, какой пользователь, какое фоновое задание и с какими данными работал в момент конфликта.

Для глубокой диагностики на уровне СУБД администраторы используют штатные средства сервера баз данных — представления активных запросов и блокировок. Это позволяет увидеть, какая именно транзакция кого блокирует. Такую работу стоит поручать специалисту, знакомому с администрированием СУБД.

Порядок действий при массовых блокировках
  1. 1
    Зафиксируйте время и текст ошибки, спросите у пользователей, какие документы они проводили
  2. 2
    Откройте консоль кластера серверов 1С и список активных сеансов
  3. 3
    Найдите аномальные сеансы: очень длительные или от пользователей, которые уже вышли
  4. 4
    Проверьте список фоновых заданий — нет ли зависшего обмена или обработки
  5. 5
    Завершите зависший сеанс через консоль кластера
  6. 6
    Попросите пользователей повторить операцию и убедитесь, что ошибка исчезла

Как снять блокировку безопасно

Первый и самый безопасный способ — дождаться завершения: если блокировку держит реально работающий пользователь или обработка, она снимется сама. Уточните у коллеги, не работает ли он с объектом, и повторите действие позже.

Если виноват зависший сеанс, администратор завершает его через консоль кластера: выделяет сеанс и выполняет команду удаления. Пользователь при этом может потерять несохранённые данные, поэтому перед завершением стоит попытаться связаться с ним. В файловой базе аналогичную роль играет список активных пользователей (Администрирование → Обслуживание → Активные пользователи) — оттуда сеанс можно завершить, имея права администратора.

Крайняя мера — перезапуск службы агента сервера 1С или службы СУБД. Она снимает все блокировки разом, но обрывает работу всех пользователей без сохранения. Применять её допустимо только в нерабочее время и после предупреждения коллектива.

Как снизить количество конфликтов в будущем

Организационные меры дают быстрый эффект: перенесите тяжёлые регламентные задания (обмены, пересчёты, загрузки) на нерабочее время, договоритесь о разделении зон ответственности — кто какие документы проводит, избегайте проведения крупных пакетов документов в часы пиковой нагрузки.

Технические меры требуют участия разработчика: сокращение длительности транзакций в обработках, проверка корректности управляемых блокировок в доработках, актуализация индексов, перевод файловой базы на клиент-серверный вариант при росте числа пользователей. Если конфликты возникают на типовой конфигурации без доработок, имеет смысл обновить платформу и конфигурацию до актуальных релизов.

Маршрут решения

Как выбрать действие

Ошибка возникла один раз у одного пользователяПовторите действие через пару минут, ничего не предпринимая
Ошибки у нескольких пользователей, сеанс-виновник найден и зависЗавершите сеанс через консоль кластера
Блокировку держит активное фоновое заданиеДождитесь его завершения или перенесите расписание на ночь
Конфликты повторяются ежедневно без видимой причиныПривлеките разработчика для анализа транзакций и доработок
Типичные ошибки
01
Завершение сеанса «наугад» — можно оборвать реальную работу коллеги и потерять его несохранённые данные
02
Перезапуск сервера в рабочее время — массовое прерывание работы всех пользователей
03
Игнорирование повторяющихся конфликтов — симптом перерастает в регулярные простои отдела
04
Запуск тяжёлых обработок и обменов в середине рабочего дня
05
Самостоятельное изменение кода блокировок в конфигурации без резервной копии

Ограничения и когда нужен специалист

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

Обязательно привлекайте разработчика, если конфликты начались после обновления или доработки конфигурации, если блокировки возникают на одних и тех же документах систематически, и если база работает в файловом режиме с десятками одновременных пользователей — в этом случае проблема, скорее всего, архитектурная.

Итог

Что важно запомнить

Блокировка данных — штатный защитный механизм 1С, а не поломка. Разовый конфликт лечится повтором действия, массовый — поиском и завершением зависшего сеанса через консоль кластера. Повторяющиеся конфликты требуют анализа регламентных заданий и доработок, а любые принудительные действия выполняйте только после проверки, что не обрываете реальную работу.

Частые вопросы о блокировках в 1С

Опасна ли блокировка данных — не испортятся ли данные в базе?

Нет, блокировка сама по себе данные не портит — наоборот, она их защищает от рассогласования. Риск появляется только при грубом вмешательстве: принудительном обрыве длительной транзакции или перезапуске сервера в разгар операции. Поэтому перед снятием блокировки важно понять, кто и что её держит.

Что делать пользователю при сообщении «Конфликт блокировок», если нет доступа к консоли сервера?

Подождите 1–5 минут и повторите действие — чаще всего этого достаточно. Если ошибка повторяется, запомните время, текст сообщения и документ, с которым работали, и передайте эту информацию администратору: это заметно ускорит поиск источника.

Почему блокировка остаётся, хотя пользователь уже закрыл программу?

При аварийном закрытии клиента или обрыве сети сеанс на сервере может оставаться активным ещё некоторое время, и блокировки держатся, пока сеанс не завершится. Обычно платформа завершает такие сеансы сама по тайм-ауту, но администратор может ускорить процесс, удалив сеанс вручную через консоль кластера.

Можно ли вообще отключить блокировки, чтобы ошибок не было?

Нет, и делать этого нельзя: блокировки — базовый механизм целостности данных. Отключение привело бы к рассогласованию остатков, потере проведённых документов и невозможности доверять отчётам. Правильный путь — устранять причины лишних конфликтов: расписание заданий, длительные транзакции, ошибки в коде.

В файловой базе блокировки возникают чаще, чем в клиент-серверной?

Как правило, да. Файловый режим хуже справляется с конкурентной записью при росте числа одновременно работающих пользователей, и с ростом базы конфликты становятся заметнее. Если пользователей много и конфликты стали регулярными, переход на клиент-серверную архитектуру — одно из основных решений.

Как понять, что виноваты доработки конфигурации, а не типовой механизм?

Косвенные признаки: конфликты начались сразу после обновления или установки доработки, возникают только при работе конкретной обработки или внешнего отчёта, повторяются на одних и тех же операциях. Подтвердить поможет журнал регистрации и анализ кода доработок — эту проверку должен выполнять разработчик.