Простой вопрос по программной блокировке

1. ymv96 20.03.24 16:24 Сейчас в теме
Господа, просветите pls по блокировке.
Платформа 8.3 УФ.

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

Соответственно чтобы кто-то не вклинился в эту цепочку, надо заблокировать создание новых элементов этого справочника в пределах подчинения.

НачатьТранзакцию()/ЗафиксироватьТранзакцию()? БлокировкаДанных? Это должно работать как на файловой, так и на SQL версии и по возможности блокировать только выборочно - по приведенному условию. БлокировкаДанных будет ли работать из модуля формы?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. RustamZz 20.03.24 17:11 Сейчас в теме
(1) Не надо тащить блокировки в интерфейс. Делайте проверки в обработке проверки заполнения перед записью.
3. ymv96 20.03.24 19:13 Сейчас в теме
(2) И тем не менее. Я понимаю, что приём очень неспецифичный, но надо. В принципе уникальность элемента этого справочника у меня и проверяется в модуле его объекта перед записью.
Но тут хотелось бы, чтобы даже попытки записи дубликата система не делала, чтобы пользователь не видел непонятных для него ошибок.
4. Fox-trot 163 20.03.24 19:39 Сейчас в теме
очередной велосипед изобретаете? ну-ну удачи
а ежели сурьезно, то потретьте время на теорию, и надеюсь, картина сама сложится как надо. или нет
5. ymv96 20.03.24 20:54 Сейчас в теме
(4) (4) Вывернулся следующим образом.
1) В модуле объекта справочника перед записью проверяю уникальность.
2) В модуле формы документа, где он должен программно создаваться:
- Сперва запросом проверяю, что такового элемента справочника ещё нет
- Создаю и записываю новый элемент через Попытку / Исключение. Если исключение, значит его уже кто-то записал (1). Чтобы пользователь не видел сообщения об ошибке.
6. user1880116 21.03.24 08:33 Сейчас в теме
(5)
Если исключение, значит его уже кто-то записал
Или прав не хватило. Или вообще "в данной транзакции уже происходили ошибки" с таким-то подходом.

Обожаю такие двухколесные костыли с цепным приводом.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот