Контроль табличной части справочника при создании каждого нового элемента списка
Натолкните, пожалуйста на мысль о способе реализации!
В 1С конфигурации имею два справочника. Один "Контрагенты", другой "РегионыПродаж". Справочник "РегионыПродаж" имеет табличную часть, в которую необходимо записать вручную все компании, относящиеся к данному региону продаж. Данные о компаниях берутся из справочника "Контрагенты", который привязан к реквизиту "Компания" (реквизит находится в табличной части справочника "РегионыПродаж").
Хочу осуществить контроль в табличной части справочника при создании каждого нового элемента списка (каждая Компания должна быть использована только в одном Регионе). Другими словами, чтобы табличная часть нового элемента справочника проверялась с табличными частями уже созданных элементов и если в табличной части нового справочника есть элемент, который уже находится в табличной части одного из ранее созданных элементов, то выдавалась ошибка.
В 1С конфигурации имею два справочника. Один "Контрагенты", другой "РегионыПродаж". Справочник "РегионыПродаж" имеет табличную часть, в которую необходимо записать вручную все компании, относящиеся к данному региону продаж. Данные о компаниях берутся из справочника "Контрагенты", который привязан к реквизиту "Компания" (реквизит находится в табличной части справочника "РегионыПродаж").
Хочу осуществить контроль в табличной части справочника при создании каждого нового элемента списка (каждая Компания должна быть использована только в одном Регионе). Другими словами, чтобы табличная часть нового элемента справочника проверялась с табличными частями уже созданных элементов и если в табличной части нового справочника есть элемент, который уже находится в табличной части одного из ранее созданных элементов, то выдавалась ошибка.
По теме из базы знаний
- Всякие полезности
- Комплексный контроль остатков. Для одного или сразу нескольких логически связанных регистров накопления. Универсальное решение уровня данных для контроля не только складских остатков
- Загрузка чеков из ФНС в документы 1С:БП, УНФ, ERP, КА и УТ
- Система контроля действий пользователей 1С
- Универсальный редактор табличных частей документов РеСольДо
Найденные решения
А не лучше ли добавить в спр. Контрагенты реквизит РегионПродаж для заполнения? А в форму спр. РегионыПродаж вывести динамический список с запросом, который выводит компании региона продаж текущего открытого элемента, вместо табличной части?
Ну а если нужно проверку осуществить, описываем событие ПриИзменении реквизита Компания. Запросом отбираете все данные табличных частей справочника, ставите условие на реквизит Компания (это текущий выбранный элемент, см. свойство ТекущиеДанные). Ну а дальше, если запрос пустой, тогда позволяем программе подставить в реквизит контрагента, если содержит строку с выбранной компанией, то выводим сообщение об ошибке
Либо еще вариант форму выбора подшаманить таким образом, чтобы нельзя было выбрать компании, которые уже выбраны.
Ну а если нужно проверку осуществить, описываем событие ПриИзменении реквизита Компания. Запросом отбираете все данные табличных частей справочника, ставите условие на реквизит Компания (это текущий выбранный элемент, см. свойство ТекущиеДанные). Ну а дальше, если запрос пустой, тогда позволяем программе подставить в реквизит контрагента, если содержит строку с выбранной компанией, то выводим сообщение об ошибке
Либо еще вариант форму выбора подшаманить таким образом, чтобы нельзя было выбрать компании, которые уже выбраны.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
А не лучше ли добавить в спр. Контрагенты реквизит РегионПродаж для заполнения? А в форму спр. РегионыПродаж вывести динамический список с запросом, который выводит компании региона продаж текущего открытого элемента, вместо табличной части?
Ну а если нужно проверку осуществить, описываем событие ПриИзменении реквизита Компания. Запросом отбираете все данные табличных частей справочника, ставите условие на реквизит Компания (это текущий выбранный элемент, см. свойство ТекущиеДанные). Ну а дальше, если запрос пустой, тогда позволяем программе подставить в реквизит контрагента, если содержит строку с выбранной компанией, то выводим сообщение об ошибке
Либо еще вариант форму выбора подшаманить таким образом, чтобы нельзя было выбрать компании, которые уже выбраны.
Ну а если нужно проверку осуществить, описываем событие ПриИзменении реквизита Компания. Запросом отбираете все данные табличных частей справочника, ставите условие на реквизит Компания (это текущий выбранный элемент, см. свойство ТекущиеДанные). Ну а дальше, если запрос пустой, тогда позволяем программе подставить в реквизит контрагента, если содержит строку с выбранной компанией, то выводим сообщение об ошибке
Либо еще вариант форму выбора подшаманить таким образом, чтобы нельзя было выбрать компании, которые уже выбраны.
(2) На данный момент я выполняю конкретное задание в котором необходима работа только с табличной частью, все же благодарю за идею с формой!
Возникли вопросы с условием для реквизита Компания. Его же необходимо осуществлять при формировании при формировании запроса? Расскажите об этом поподробнее (если возможно, напишите данное условие, чтобы было понятно)
Возникли вопросы с условием для реквизита Компания. Его же необходимо осуществлять при формировании при формировании запроса? Расскажите об этом поподробнее (если возможно, напишите данное условие, чтобы было понятно)
&НаКлиенте
Процедура КомпанияПриИзменении(Элемент)
КомпанияПриИзмененииНаСервере(Элементы.ИмяТабличнойЧасти.ТекущиеДанные.Компания);
КонецПроцедуры
&НаСервере
Процедура КомпанияПриИзмененииНаСервере(ПроверяемаяКомпания)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ тч_Регионы.Компания КАК Компания
|ИЗ РегионыПродаж.ИмяТабличнойЧасти КАК тч_Регионы
|ГДЕ тч_Регионы.Компания = &Компания";
Запрос.УстановитьПараметр("Компания", ПроверяемаяКомпания);
<Обработка результата запроса>
КонецПроцедуры
Процедура КомпанияПриИзменении(Элемент)
КомпанияПриИзмененииНаСервере(Элементы.ИмяТабличнойЧасти.ТекущиеДанные.Компания);
КонецПроцедуры
&НаСервере
Процедура КомпанияПриИзмененииНаСервере(ПроверяемаяКомпания)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ тч_Регионы.Компания КАК Компания
|ИЗ РегионыПродаж.ИмяТабличнойЧасти КАК тч_Регионы
|ГДЕ тч_Регионы.Компания = &Компания";
Запрос.УстановитьПараметр("Компания", ПроверяемаяКомпания);
<Обработка результата запроса>
КонецПроцедуры
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот