28.02.2022 Ольга Волкова 21790
Управляемые блокировки

Содержание:

1.      О блокировке в 1С 8.3

2.      Режимы управления блокировками для объектов конфигурации

3.      Управляемая блокировка в коде

4.      Исключительная управляемая блокировка


1.       О блокировке в 1С 8.3

 

Блокировка – обязательный функционал многопользовательской системы.

 

Любой объект системы во время чтения и изменения должен быть заблокирован от других процессов. Блокироваться объект может как СУБД, так и самим приложением 1С. Именно из-за области воздействия блокировок они бывают объектными и транзакционными. Объектное блокирование – это вид, реализованный на уровне платформы 1С, не затрагивающий СУБД. Транзакционное блокирование – это механизм, который работает на уровне СУБД. Транзакционные подразделяются на автоматические и управляемые блокировки.

 

Режим автоматических блокировок предоставляется и исполняется СУБД.

 

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

 

2.       Режимы управления блокировками для объектов конфигурации

 

В Конфигураторе в свойствах можно установить вариант блокировки на все объекты конфигурации.

 

Свойство "Режим управления блокировкой данных":



Рис. 1 Режим управления блокировкой данных

 

Для конкретного объекта конфигурации тоже можно установить режим блокировки – свойство "Режим управления блокировкой":



Рис. 2 Свойство "Режим управления блокировкой"

 

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

 

3.       Управляемая блокировка в коде


Блокировки в коде создаются и устанавливаются с помощью методов и свойств.

 

Создать объект блокировка данных –

            БлокировкаДанных = Новый БлокировкаДанных;

Добавить новый элемент блокировки

            ЭлементБлокировки = БлокировкаДанных.Добавить("ключ")

Установить режим блокировки

            ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый/Исключительный

Установить значение блокируемых данных

            ЭлементБлокировки.УстановитьЗначение("ключ", ЗначениеКлюча);

            ЭлементБлокировки.УстановитьЗначение("Период", ЗаданныйДиапазонДат);

            ЭлементБлокировки.ИспользоватьИзИсточникаДанных("ключ", "ключ")

 

Блокировки в коде устанавливаются при изменении объектов, реквизитов, данных, и т.д.

 

1.Явное задание имени объекта блокировки и его значения

 

БлокировкаДанных = Новый БлокировкаДанных;

ЭлементБлокировки = БлокировкаДанных.Добавить("РегистрНакопления.ОстаткиТоваровНаСкладах");

ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;

ЭлементБлокировки.УстановитьЗначение("Склад", Склад);

 

В данном случае мы блокируем в данных регистра "ОстаткиТоваровНаСкладах" все записи, у которых

значение измерения "Склад" равно значению, содержащемуся в переменной "Склад"

 

2.Задание блокировки с указанием источника данных, содержащего необходимые значения

 

БлокировкаДанных = Новый БлокировкаДанных;

ЭлементБлокировки = БлокировкаДанных.Добавить("РегистрНакопления.ПродажиТоваров");

ЭлементБлокировки.Режим = РежимБлокировкиДанных. Разделяемый;

ЭлементБлокировки.УстановитьЗначение("Покупатель", Покупатель);

Диапазон = Новый Диапазон(НачалоМесяца(Дата), Дата);

ЭлементБлокировки.УстановитьЗначение("Период", Диапазон);

 

Ну, а в этом примере, мы блокируем в данных регистра "ПродажиТоваров" все записи, у которых

значение измерения "Покупатель" равно значению, содержащемуся в переменной "Покупатель",

а значение поля "Период" содержится в указанном диапазоне (НачалоМесяца(Дата), Дата).

 

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

 

БлокировкаДанных = Новый БлокировкаДанных;

ЭлементБлокировки = БлокировкаДанных.Добавить("РегистрНакопления.ОстаткиТоваровНаСкладах");

ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;

ЭлементБлокировки.УстановитьЗначение("Склад", Склад);

ЭлементБлокировки.ИсточникДанных = СписокНоменклатуры;

ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");

 

Данные для установки ограничений на поля этого элемента блокировки – это таблица значений "СписокНоменклатуры". Блокируем в данных регистра "ОстаткиТоваровНаСкладах" все записи, у которых значение измерения "Склад" равно значению переменной "Склад", а значение измерения "Номенклатура" равно какому-либо значению из колонки "Номенклатура", указанного источника данных. В качестве источника данных можно указывать результат запроса, и для последнего примера можно было бы создать запрос, который бы отсекал номенклатуру, содержащую "услугу", тем самым нивелируя избыточность блокировки.  

 

4.       Исключительная управляемая блокировка

 

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

 

Использование "разделяемой" блокировкой может привести к конфликту блокировок. Например, две транзакции начали считывать остатки из регистра "Списки номенклатуры", остатки имеют одинаковые элементы. При этом система в первой и второй транзакции устанавливает разделяемую блокировку на считываемые ресурсы. Эти две блокировки на один и тот же ресурс совместимы друг с другом, потому что они разделяемые. Далее первая транзакция прочитала данные, изменила и теперь хочет их записать, но сделать это не может, т.к. для этого система должна установить исключительную блокировку на записываемые данные, чему мешает разделяемая блокировка второй транзакции. Первая транзакция становится в очередь, ожидая снятия разделяемой блокировки, установленной второй транзакцией. Вторая транзакция также закончила чтение данных и хочет записать новые данные. Все повторяется – она не может это сделать, т.к. для этого система должна установить исключительную блокировку на записываемые данные, но этому мешает разделяемая блокировка, установленная на часть этих данных первой транзакцией. Вторая транзакция становится в очередь, ожидая снятия разделяемой блокировки, установленной первой транзакцией – круг замкнулся, и мы получаем конфликт блокировок.

 

При установлении исключительной блокировки таких конфликтов возникать не может.

 

Специалист компании «Кодерлайн»

Ольга Волкова

Наши проекты

ООО «ТейблТок»
ООО «ТейблТок»

Отрасль:
Общественное питание и рестораны

Внедренное типовое решение:
1С:Управление торговлей

Оформление заказов поставщикам Оформление заказов покупателей Управление складскими запасами ...

ФГУП «Почта России»
ФГУП «Почта России»

Отрасль:
Почта, доставка

Внедренное типовое решение:
1С:Зарплата и управление персоналом

- Бухгалтерский учет
- Расчет зарплаты и кадровый учет
- Налоговый учет ...

ООО «Аэроэкспресс»
ООО «Аэроэкспресс»

Отрасль:

Внедренное типовое решение:
1С:ERP. Управление холдингом

· Планирование закупок · Управление закупочными процедурами, включая 223 ФЗ · Управление цепочками поставок · Управление договорами, включа...

Оптимизация производительности системы
ЗАО ИД «Комсомольская правда»

Отрасль:
Медиа

Внедренное типовое решение:
1С:Бухгалтерия

- Оптимизация производительности системы, в том числе сервера Postgre. ...

ООО «Лаборатория успеха»
ООО «Лаборатория успеха»

Отрасль:
Общественное и плановое питание, гостиничный бизнес, туризм

Внедренное типовое решение:
1С:Управление холдингом 8

Бухгалтерский учет;
Расчет зарплаты и кадровый учет;...

Внедрение ПП "1С:Корпоративный инструментальный пакет 8" в ООО «Торговый Дом Факел»
ООО «Торговый Дом Факел»

Отрасль:
Производство

Внедренное типовое решение:
1С:Предприятие 8. ERP Управление предприятием 2

Различная отраслевая специфика:
- Переработка давальческого сырья
- Учет спецодежды и спецоснастки
Управление отношениями с кли...

Автоматизация системы учета продаж газа на базе «1С:ERP Управление предприятием 2.0»
ООО «Эйр Продактс Газ»

Отрасль:
Производство промышленных газов

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

- Расчеты с контрагентами;
- Производственные операции;
- Управление складскими запасами;
- Логистика адресного склада;
- Оф...

Автоматизация кадрового учета на базе «1С:ERP Управление предприятием 2.0»
Автопредприятие ПАО «Газпром»

Отрасль:
Транспорт

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

- Настройка подсистемы кадрового учета;
- Перенос персональных данных;
- Заполнение НСИ и классификаторов. ...

ЗАО «Инвестгеосервис»
ЗАО «Инвестгеосервис»

Отрасль:
Нефтесервис

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

Объемно-календарное планирование производства Автоматизация бизнес-процессов Анализ деятельности в разрезе проектов Планирование проектов У...

Автоматизации учета затрат и расчета себестоимости с использованием конфигурации «Koderline: Управление проектами строительства скважин»
ООО «Буровая сервисная компания «ГРАНД»

Отрасль:
Нефтесервис

Внедренное типовое решение:
«Koderline: Управление проектами строительства скважин»

Учет и планирование:
- собственную разработку компании «Кодерлайн» – конфигурацию «Koderline: Управление проектами строительства скважин»...

Автоматизация кадрового учета на базе ПП "1С:Зарплата и управление персоналом" в ТД НМК
ООО «Торговый дом Нальчикский молочный комбинат»

Отрасль:
Торговля

Внедренное типовое решение:
1С:Зарплата и управление персоналом

- Кадровый учет;
- Расчет зарплаты;
- Регламентированная отчетность;
- Анализ кадрового состава;
- Учет рабочего времени; ...

Московский филиал ООО «Авиакомпания «Икар»
Московский филиал ООО «Авиакомпания «Икар»

Отрасль:
Авиаперевозки

Внедренное типовое решение:
1С:Бухгалтерия КОРП

Бухгалтерский учет Производственные операции Регламентированная отчетность Учет в обособленных подразделениях Налоговый учет ...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

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

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение