Страница 1 из 1

Контроль уникальности справочника по двум реквизитам

СообщениеДобавлено: 18 окт 2016, 16:41
Софья
Добрый день!

Подскажите есть ли какой-нибудь приемлемый способ контроля уникальности справочника по двум реквизитам (мы хотим чтобы сочетание реквизитов наименование и период было уникально). Изначально уникальность справочника контролировалась по наименованию и этого было достаточно, но в этом году добавилось новое условие. Просто создать подписку ПерезЗаписью справочника с запросом к этим двум полям недостаточно, т.к. справочник заполняется программно и одновременно может идти загрузка одинаковых значений. Если будет только подписка в этом случае запишутся 2 одинаковых элемента. В этом случае думали в сторону блокировки справочника при записи элемента, но это не подходит, т.к. в справочник одновременно могут писаться 2 потока, если делать блокировку справочника, потом проверку уникальности для первого потока, то второй поток будет ждать, пользователи не смогут с этим смириться. Варианты платформенного контроля уникальности в пределах подчиненности владельцу и пр. не подошли, т.к. справочник в системе давно существует и используется в других объектах, не все объекты известны, ошибки неминуемы. Подскажите возможно ли контролировать уникальность по двум реквизитам в принципе?

Спасибо!

Re: Контроль уникальности справочника по двум реквизитам

СообщениеДобавлено: 18 окт 2016, 17:49
admin
Добрый день!
Я так понимаю речь идет о клиент-серверном режиме работы базы.
Штатных механизмов в платформе нет, но я не вижу проблем для программной реализации задачи. Можете использовать подписки, можете писать код непосредственно в модуле объекта в обработчиках ПередЗаписью или ПриЗаписи. Чтобы в процессе поиска дублей исключить параллельную запись в справочник, необходимо использовать управляемые блокировки по полям Наименование и Период. Самое главное, чтобы процесс программной загрузки выполнялся без создания единой транзакции, так как в этом случае 2-й поток будет ждать.

Re: Контроль уникальности справочника по двум реквизитам

СообщениеДобавлено: 19 окт 2016, 12:39
Софья
Спасибо!