Что такое «блокировка данных» в «1С»? Краткое определение блокировки можно выразить так: блокировка – это «сообщение» о том, что определенный ресурс системы заблокирован или «захвачен» другим пользователем.
Какие бывают блокировки в «1С»?
1. «Хорошие» блокировки данных в «1С»
Чтобы лучше понять, что такое блокировка и какой она может быть, проведем аналогию с реальным миром. Возьмем в пример продавца лампочек и его потенциальных покупателей – Иванова и Петрова. Пусть продавец лампочек выступит в роли системы «1С», а Петров и Иванов – в роли пользователей системы.
Итак, в магазин приходит Иванов, и ему нравится одна из 6 моделей лампочек (допустим, №4). Он собирается ее купить и достает из кошелька деньги. Продавец лампочек по натуре – рассеянный человек. Поэтому в целях усиления своей бдительности и контроля товара, он все записывает и сразу отмечает, что лампочка №4 продана Иванову. Эта запись и будет аналогией блокировки данных «1С».
На самом деле, Иванов еще не купил лампочку, а только собирается это сделать. Возможно, у него не хватит денег, и у него не получится ее приобрести. Но продавец уже записал, что лампочку нельзя предлагать другим покупателям до тех пор, пока Иванов не завершит покупку.
Весь этот процесс (от выбора лампочки до передачи денег продавцу и получения товара в руки) будет назваться «транзакцией». Блокировка ставится в момент выбора лампочки Ивановым и снимается после завершения транзакции – совершения покупки.
Но самое интересное только впереди. В магазин лампочек приходит Петров. Он сможет купить любую из 6 лампочек, кроме №4 (она ведь «забронирована» Ивановым). Если говорить об «1С», смысл блокировки данных заключается в том, чтобы на некоторое время запретить действия над общим ресурсом. В нашем случае Петрову запрещено выбирать лампочку №4. Только в случае отказа Ивановым о покупки лампочки, Петров сможет ее приобрести.
Сразу становится понятно, что в данном случае блокировка – это необходимое явление при конкурентном доступе к общему ресурсу. Иначе между Петровым и Ивановым возник бы конфликт. Возможно, и продавец попал бы «под раздачу».
2. «Плохие» блокировки в «1С»
Теперь рассмотрим иной вариант развития событий, чтобы пояснить, откуда берутся «плохие» блокировки данных в «1С».
Покупатель Иванов снова хочет купить лампочку. Он достает их из контейнера по одной, проверяя, какая ярче светит. Тем временем продавец записывает («блокирует») номера лампочек, которые понравились Иванову. Как раз в этот момент в магазин приходит Петров, но не может купить ни одной лампочки, потому что все они «захвачены» Ивановым.
Как поступает Петров? Некоторое время он ждет, но вскоре обижается и уходит. Именно это событие и соответствует возникающей в системе «1С» ошибке блокировки данных – «Превышение времени ожидания блокировки».
Если бы избыточной блокировки не возникло, то Петров тоже купил бы лампочку. Таких блокировок не должно быть в «1С».
Виды блокировок данных в «1С»
Ответим на этот вопрос с помощью рисунка.
Объектные блокировки
Чтобы помочь пользователям изменять данные одновременно и согласовано, необходим механизм объектных блокировок. Объектные блокировки позволяют осуществлять конкурентный доступ пользователей к данным «1С:Предприятия» в терминах объектов информационной базы. Как правило, это происходит при интерактивной работе пользователей в формах: редактирование существующих объектов, удаление, создание новых и др. Объектные блокировки позволяют осуществлять конкурентный доступ к данным в «1С» в терминах объектов информационной базы.
Объектные блокировки данных «1С» делятся на:
- Оптимистические. Построены на анализе номера версии объекта, хранящейся в базе данных и номера версии, помещенной в память компьютера в момент считывания данных из информационной базы. Если при записи объекта номера его версий отличаются, то будет выдано предупреждение о том, что версия объекта изменилась или он был удален, то есть сработает оптимистическая блокировка.
- Пессимистические. В тот момент, когда пользователь начинает модификацию объекта в форме, расширение формы устанавливает пессимистическую блокировку. Если после этого другой пользователь, например, попытается выполнить редактирование того же объекта, ему будет выдано сообщение о невозможности блокировки объекта. Когда пользователь, редактировавший объект, закроет форму объекта, расширение формы снимет пессимистическую блокировку.
Транзакционные блокировки
Речь идет о блокировках на уровне СУБД. Такие блокировки напрямую связаны с понятием «транзакция». Вы можете узнать подробнее о том, что такое «транзакции» и зачем они нужны, в специальной статье.
Транзакционные блокировки «1С» делятся на автоматические и управляемые.
- Автоматические. В автоматическом режиме ответственность за блокировки полностью лежит на СУБД. Это облегчает работу IT-специалиста «1С», но создание информационной системы для большого количества пользователей на автоматических блокировках нежелательно (особенно для СУБД PostgreSQL, Oracle BD, т.к. при модификации данных они полностью блокируют таблицу).
- Управляемые. В управляемом режиме есть возможность использовать менеджер транзакционных блокировок данных «1С:Предприятие». В этом режиме система использует гораздо более низкий уровень изоляции транзакций для MS SQL Server и IBM DB2, и блокировку на уровне записей для PostgreSQL (см. таблицу 3). Это позволяет достичь более высокой параллельности работы пользователей.
Что еще нужно знать о блокировках?
Физические блокировки находятся в таблице syslockinfo базы данных master и имеют следующие обозначения:
- S – разделяемая (чтения);
- X – исключительная (блокировка на запись);
- U – блокировка обновления (устанавливается в запросе с помощью конструкции «Для изменения»).
Некорректная работа транзакционных блокировок может привести к таким проблемам, как:
- потерянное изменение;
- грязное чтение;
- неповторяемость чтения;
- чтение фантомов.
Если вы столкнулись с проблемой блокировки данных в «1С» и не знаете, как ее исправить, обратитесь за бесплатной консультацией к специалистам «ГЭНДАЛЬФ».
Получить бесплатную консультацию