Имя: Пароль:
1C
 
8.3 Справочник. Модуль объекта. Отказ записи и вывод сообщения
0 Wefast
 
21.02.24
13:16
Собственно у справочника отключен контроль уникальности.

Хочу программно проверить уникальность по наименованию

1. В модуле объекта ПередЗаписью проверяю, и если данный элемент справочника не уникален нужно сообщить об этом пользователю и отказаться от записи.

Если пишу
ОбщегоНазначения.СообщитьПользователю("какой то текст",,,ИСТИНА);

Или
Текст = "какой то текст"
ВызватьИсключение Текст;


То пользователю выводится ошибка, что не смог записать и в тексте "путь" до строчки кода где это произошло.

В общем не такую ошибку я хочу выдать пользователю. А обычную

2. Так же возможно нужно учесть, что записывать могут несколько человек, и нужно видимо блокировать весь справочник. Но звучит как что то избыточное.

Смотрю как сделано что то подобное в других справочниках. И там никаких блокировок, и так же вызывается исключение либо сообщение пользователю.
1 Волшебник
 
21.02.24
13:22
Проверять надо в форме ПередЗаписью
Пишите там:
Сообщить("текст");
2 Wefast
 
21.02.24
13:25
(1) а если программно запись происходит?
3 Волшебник
 
21.02.24
13:26
(2) При программной записи контроля быть не должно
4 Dmitrii
 
21.02.24
13:56
(2) >> а если программно запись происходит?

Если программно производится запись, то какая разница - что в тексте об ошибке?
При программной записи объекта как раз таки будет немаловажным знать - в какой именно строке Вашей чудо-программы возникло исключение.
5 vicof
 
21.02.24
14:29
(1) Проверять надо в обработке проверки заполнения
6 Волшебник
 
21.02.24
14:31
(5) Да, это ещё более правильно
7 sikuda
 
21.02.24
14:33
(1) Да лучше контролирвать в форме.
(3) Согласен не должно, но незабываем стандартный = ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
https://its.1c.ru/db/v8std/content/463/hdoc
8 Valdis2007
 
22.02.24
04:30
Рекомендация с ИТС -"...Поэтому для реквизитов, некорректные значения которых могут привести к рассогласованности данных в информационной базе, проверку корректности следует выполнять в обработчиках событий, возникающих в транзакции записи - ПередЗаписью..."
Не уникальность наименования, это рассогласованность данных в БД. Поэтому используй - ПередЗаписью
9 Valdis2007
 
22.02.24
04:33
Другими словами...ОбработкаПроверкиЗаполнения - проверка корректности в контексте конкретного объекта.

ПередЗаписью - проверка корректности в конексте окружения
Основная теорема систематики: Новые системы плодят новые проблемы.