Учебный курс: Подготовка на 1С:Специалист по платформе 1С:Предприятие 8.3
Общие приемы и механизмы решения задач – тема № 11:
Какие навыки в использовании управляемых блокировок потребуются на экзамене
В один момент времени можно выполнить только одну операцию записи данных в конкретный регистр. При одновременной попытке такой записи платформа позволит это сделать первому, кто пытается выполнить эту операцию, а второму придется ожидать своей очереди.
Момент, когда регистр занят и недоступен для чтения или записи другим пользователям, называется «блокировкой».
Когда база данных одновременно используется несколькими пользователями, в работе механизмов списания товаров могут возникать проблемы. Например, могут появиться отрицательные остатки товаров. Так бывает, когда пользователи практически одновременно пытаются списать один и тот же товар (например, оформить продажу). То есть система сообщает один и тот же результат при получении данных об остатке товаров, если информацию запрашивает более чем один пользователь (например, два).
Почему так происходит
Начнем с понятия транзакция. Транзакция – это последовательность изменений в базе данных, которая может быть завершена только полностью, иначе производится отмена всех изменений. Для обеспечения целостности данных все объекты БД записываются в транзакции.
Транзакция при проведении документа длится некоторое время. Остатки по номенклатуре получаются внутри транзакции, но изменяются только по ее завершении. Что происходит, когда пользователи проводят документы одновременно:
Рисунок 1 – Получение остатков при одновременном проведении документов
Как видно на схеме (рис. 1), при проведении двух документов одновременно получаются одинаковые остатки номенклатуры. Полученный остаток может быть больше, чем требуется каждому пользователю в отдельности, но меньше, чем им требуется вместе. При этом оба документа могут быть успешно проведены. В результате итоговый остаток получится отрицательным. Контроль остатков не срабатывает.
Рисунок 2 – Одновременное проведение документов пользователями
На рисунке два пользователя одновременно проводят продажу мониторов LG. При контроле остатков система получает остаток 10 шт., и оба документа проводятся. Как итог – минус 5 мониторов LG.
Если Документ № 2 будет проводиться после окончания проведения Документа № 1, то контроль остатков отработает корректно и не даст отгрузить товар в минус:
Рисунок 3 – Последовательное проведение документов пользователями
Не стоит недооценивать данную проблему даже в том случае, если в системе работают всего два пользователя. Они могут проводить документы практически одновременно, например, если один из них выполняет групповое проведение документов.
К сожалению, у Вас недостаточно прав для дальнейшего просмотра.
Если Вы приобрели курс, но еще не активировали токен — пожалуйста, активируйте доступ по инструкциям, высланным на Ваш email после покупки.
Если Вы не залогинены на сайте — залогиньтесь, вернитесь на эту страницу и обновите ее.
Если Вы залогинены, у Вас активирован токен доступа, но Вы все равно видите эту запись — напишите нам на e-mail поддержки.
Комментарии закрыты