О пользе перехода на управляемые блокировки в 1С 8.3 было сказано не раз — это сильно повышает эффективность и производительность работы оборудования.
Если Вам необходим партнер для перевода конфигурации в управляемый режим блокировок, просто обратитесь к нам! Подробности — .
Сам по себе процесс не такой уж и трудный. Однако процесс достаточно тонкий. Переход на управляемый режим неквалифицированным специалистом может сделать еще хуже.
Ниже мы разберем методику перехода с режима автоматических блокировок на управляемые.
Вся методика умещается в 7 коротких пунктах:
Переключите в палитре свойств конфигурации режим блокировок — «Управляемый и автоматический»:
Получите 267 видеоуроков по 1С бесплатно:
Переключение объекта в управляемый режим
Необходимо начинать с самых «загруженных» документов. Переключите документ в режим блокировок «Управляемый»:
Перевод регистров в управляемый режим
Необходимо перевести ВСЕ регистры 1С (накопления, бухгалтерии, сведений, расчета), которые производят движения данным документом, в режим управляемых блокировок:
Найти все транзакции с этими объектами
Необходимо найти все транзакции с этими объектами метаданных. Как явные, так и не явные.
Явные — те, которые вызываются в коде с помощью метода «НачатьТранзакцию()».
НЕ явные — те, которые вызываются в обработчиках объектов — «ПриЗаписи», «ОбработкаПроведения» и т.д.
Корректировка программного кода в транзакция
Для явных транзакций необходимо передать в параметр метода «НачатьТранзакцию()» параметр «РежимУправленияБлокировкойДанных.Управляемый».
Для НЕ явных транзакций установить блокировки с помощью объекта системы «БлокировкаДанных».
Пример использования блокировки:
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить(«РегистрНакопления.ТоварыНаСкладах»);
ЭлементБлокировки.УстановитьЗначение(«Качество», Справочники.Качество.НайтиПоКоду(«1»));
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.ИсточникДанных = ДокументОбъект.ВозвратнаяТара;
ЭлементБлокировки.ИспользоватьИзИсточникаДанных(«Номенклатура», «Номенклатура»);
ЭлементБлокировки.ИспользоватьИзИсточникаДанных(«Склад», «Склад»);
Блокировка.Заблокировать();
Заменить конструкцию ДЛЯ ИЗМЕНЕНИЯ
Сегодня речь пойдет о блокировках как на уровне 1С 8.3 и 8.2, так и на уровне СУБД. Блокировка данных — обязательный элемент любой системы, количество пользователей в которой больше одного.
Ниже я распишу, как работают блокировки, и каких типов они бывают.
Блокировка — это информация о том, что ресурс системы захвачен другим пользователем. Бытует мнение, что блокировка — это ошибка. Нет, блокировка — это неизбежная мера в многопользовательской системе для разделения ресурсов.
Вред системе могут принести только избыточные («лишние») блокировки, это те блокировки, которые блокируют лишнюю информацию. Такие блокировки необходимо научиться устранять, они могут привести к неоптимальной работе системы.
Блокировки в 1С делятся условно на объектные и транзакционные.
Объектные бывают, в свою очередь, оптимистическими и пессимистическими. А транзакционные можно разделить на управляемые и автоматические.
Объектные блокировки 1С
Данный вид блокировок полностью реализован на уровне платформы 1С и никак не затрагивает СУБД.
Получите 267 видеоуроков по 1С бесплатно:
Пессимистические блокировки
Эта блокировка срабатывает, когда один пользователь что-то изменил в форме справочника, а второй пытается так же изменить объект в форме.
Оптимистические блокировки
Данная блокировка сравнивает версии объекта: если два пользователя открыли форму, и один из них изменил и записал объект, то второму при записи система выдаст ошибку, что версии объектов отличаются.
Транзакционные блокировки 1С
Механизм тразакционных блокировок 1С гораздо интереснее и более функционален, чем механизм объектных блокировок. В этом механизме активно участвуют блокировки на уровне СУБД.
Неверная работа транзакционных блокировок может привести с следующим проблемам:
- проблема потерянного изменения;
- проблема грязного чтения;
- неповторяемость чтения;
- чтение фантомов.
Подробно эти проблемы были рассмотрены в статье об .
Автоматические транзакционные блокировки 1С и СУБД
В автоматическом режиме работы за блокировки целиком и полностью отвечает СУБД. Разработчик в данном случае абсолютно не участвует в процессе. Это облегчает труд программиста 1С, однако создание информационной системы для большого количества пользователей на автоматических блокировках нежелательно (особенно для СУБД PostgreSQL, Oracle BD — при модификации данных они полностью блокируют таблицу).
Для разных СУБД в автоматическом режиме используются разные степени изоляции:
- SERIALIZABLE на всю таблицу – файловый режим 1С, Oracle;
- SERIALIZABLE на записи – MS SQL, IBM DB2 при работе с не объектными сущностями;
- REPEATABLE READ на записи – MS SQL, IBM DB2 при работе с объектными сущностями.
Управляемые режим транзакционных блокировок 1С и СУБД
В всю ответственность на себя берет разработчик прикладного решения на уровне 1С. При этом СУБД устанавливает достаточно высокий уровень изоляции для транзакций — READ COMMITED (SERIALIZABLE для файловой СУБД).
При выполнении любой операции с БД менеджер блокировок 1С анализирует возможность блокировки (захвата) ресурса. Блокировки одного и того же пользователя всегда совместимы.
Две блокировки НЕ совместимы, если: установлены разными пользователями, имеют несовместимые виды (исключительная/разделяемая) и установлены на один и тот же ресурс.
Физическая реализация блокировок в СУБД
Физически блокировки представляют собой таблицу, которая находится в БД под названием master. Сама таблица блокировок носит имя syslockinfo.
Таблица условно имеет четыре поля:
- ИД блокирующей сессии SPID;
- что именно заблокировано RES ID;
- тип блокировки — S,U или X MODE (на самом деле в MS SQL их 22 типа, однако в связки с 1С используется только три);
- состояние блокировки — может принимать значение GRANT (установлена) и WAIT (ожидает своей очереди).
Механизм функциональных опций - это один из инструментов разработки. Он позволяет определить в конфигурации ту функциональность, которая может использоваться или не использоваться при внедрении в зависимости от потребностей конкретной организации.
Работа механизма основана на двух объектах конфигурации:
- Функциональная опция
C функциональными опциями, добавленными в прикладное решение, можно связать объекты конфигурации и их реквизиты. Например, с функциональной опцией Учет по складам можно связать реквизит Склад документа Поступление товара . Тогда, если в режиме 1С:Предприятие включить эту функциональную опцию, поле Склад будет отображаться во всех формах документа. Если выключить - поле Склад отображаться не будет. Подробнее...
- Параметр функциональной опции
Функциональные опции могут использоваться с параметрами. Например, для того, чтобы вид конкретной формы мог зависеть от значения параметра, выбранного в форме. Например, параметром функциональной опции Валютный учет может быть Организация . Тогда, в зависимости от того, какая организация выбрана в форме, поле Валюта взаиморасчетов будет скрыто или будет отображаться. Подробнее...