Контроль табличной части справочника при создании каждого нового элемента списка

1. user2059325 29.02.24 20:19 Сейчас в теме
Натолкните, пожалуйста на мысль о способе реализации!

В 1С конфигурации имею два справочника. Один "Контрагенты", другой "РегионыПродаж". Справочник "РегионыПродаж" имеет табличную часть, в которую необходимо записать вручную все компании, относящиеся к данному региону продаж. Данные о компаниях берутся из справочника "Контрагенты", который привязан к реквизиту "Компания" (реквизит находится в табличной части справочника "РегионыПродаж").

Хочу осуществить контроль в табличной части справочника при создании каждого нового элемента списка (каждая Компания должна быть использована только в одном Регионе). Другими словами, чтобы табличная часть нового элемента справочника проверялась с табличными частями уже созданных элементов и если в табличной части нового справочника есть элемент, который уже находится в табличной части одного из ранее созданных элементов, то выдавалась ошибка.
По теме из базы знаний
Найденные решения
2. YozZzhik 29.02.24 22:31 Сейчас в теме
А не лучше ли добавить в спр. Контрагенты реквизит РегионПродаж для заполнения? А в форму спр. РегионыПродаж вывести динамический список с запросом, который выводит компании региона продаж текущего открытого элемента, вместо табличной части?

Ну а если нужно проверку осуществить, описываем событие ПриИзменении реквизита Компания. Запросом отбираете все данные табличных частей справочника, ставите условие на реквизит Компания (это текущий выбранный элемент, см. свойство ТекущиеДанные). Ну а дальше, если запрос пустой, тогда позволяем программе подставить в реквизит контрагента, если содержит строку с выбранной компанией, то выводим сообщение об ошибке

Либо еще вариант форму выбора подшаманить таким образом, чтобы нельзя было выбрать компании, которые уже выбраны.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. YozZzhik 29.02.24 22:31 Сейчас в теме
А не лучше ли добавить в спр. Контрагенты реквизит РегионПродаж для заполнения? А в форму спр. РегионыПродаж вывести динамический список с запросом, который выводит компании региона продаж текущего открытого элемента, вместо табличной части?

Ну а если нужно проверку осуществить, описываем событие ПриИзменении реквизита Компания. Запросом отбираете все данные табличных частей справочника, ставите условие на реквизит Компания (это текущий выбранный элемент, см. свойство ТекущиеДанные). Ну а дальше, если запрос пустой, тогда позволяем программе подставить в реквизит контрагента, если содержит строку с выбранной компанией, то выводим сообщение об ошибке

Либо еще вариант форму выбора подшаманить таким образом, чтобы нельзя было выбрать компании, которые уже выбраны.
3. user2059325 29.02.24 22:55 Сейчас в теме
(2) На данный момент я выполняю конкретное задание в котором необходима работа только с табличной частью, все же благодарю за идею с формой!

Возникли вопросы с условием для реквизита Компания. Его же необходимо осуществлять при формировании при формировании запроса? Расскажите об этом поподробнее (если возможно, напишите данное условие, чтобы было понятно)
4. YozZzhik 29.02.24 23:08 Сейчас в теме
&НаКлиенте
Процедура КомпанияПриИзменении(Элемент)

КомпанияПриИзмененииНаСервере(Элементы.ИмяТабличнойЧасти.ТекущиеДанные.Компания);

КонецПроцедуры

&НаСервере
Процедура КомпанияПриИзмененииНаСервере(ПроверяемаяКомпания)

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ тч_Регионы.Компания КАК Компания
|ИЗ РегионыПродаж.ИмяТабличнойЧасти КАК тч_Регионы
|ГДЕ тч_Регионы.Компания = &Компания";

Запрос.УстановитьПараметр("Компания", ПроверяемаяКомпания);

<Обработка результата запроса>

КонецПроцедуры
5. user2059325 29.02.24 23:31 Сейчас в теме
(4) Вы очень помогли! Благодарна вам.
Оставьте свое сообщение

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