Содержание:
1. Механизм управляемых блокировок
2. Проведение приходных и расходных накладных
3. Установка блокировки в коде
1. Механизм управляемых блокировок
Объем информации в информационных системах постоянно растет, что влечет увеличение времени доступа к данным. Для соблюдения достоверности получаемой информации существует механизм блокировки данных. Раньше управлять блокировками 1С было практически невозможно, но в 1С 8.1 эту ситуацию исправили – появился механизм управляемых блокировок. При этом также осталась возможность отдать управление на усмотрение СУБД (автоматический режим). При использовании данного режима достигается высокая параллельность использования определенных данных и сокращается время ожидания. Разработчик может выбрать один из следующих типов:
· разделяемая блокировка;
· исключительная блокировка.
Разделяемая блокировка 1С устанавливается для того, чтобы данные не были изменены другими транзакциями. Исключительная блокировка, помимо этого, обеспечивает запрет не только изменения этих данных, но даже их чтения другими транзакциями, устанавливающими управляемые блокировки. Можно сказать, что исключительная управляемая блокировка является средством борьбы с конфликтами блокировок (deadlock) и может использоваться аналогично ключевому слову для изменения языка запросов (используется в режиме автоматических блокировок).
Исключительная блокировка в 1С используется в том случае, когда нам необходимо сделать изменение данных, зная их предыдущее состояние, т.е. в течение времени транзакции недопустимо изменение необходимых нам данных.
2. Проведение приходных и расходных накладных
Исключительная блокировка 1С в отличии от разделяемой носит большую временную нагрузку для системы, ведь при разделяемой одни и те же файлы данных 1С можно записать одномоментно. Например, при одновременном проведении приходных накладных нам не важен контроль остатков, т.к. движения итак плюсовые.
Но при проведении расходной накладной нам не обойтись без исключительной блокировки 1С для соблюдения достоверности данных. В момент проведения данные по остаткам не должны быть доступны другим транзакциям.
3. Установка блокировки в коде
В коде установка блокировки выглядит следующим образом:
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить();
ЭлементБлокировки.Область = "РегистрНакопления.ОстаткиНоменклатуры";
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.УстановитьЗначение("Номенклатура", Справочники.Номенклатура.НайтиПоНаименованию("Яблоко")); //поиск по наименованию в целях примера
ЭлементБлокировки.УстановитьЗначение("Свойство", Справочники.Свойства.НайтиПоНаименованию("Красное")); //поиск по наименованию в целях примера
Блокировка.Заблокировать();
При установке блокировки важно понимать, какой минимум блокируемых данных нам необходим, ведь в случае блокировки избыточного количества данных мы увеличиваем вероятность ожидания этих данных другими транзакциями данных.
Специалист компании «Кодерлайн»
Владимир Петухов