Каталог решений - Отбор списка справочника по «табличным реквизитам» элементов 1C v8x

Отбор списка справочника по «табличным реквизитам» элементов 1C v8x

Отбор списка справочника по «табличным реквизитам» элементов 1C v8x

В наличии

Организовать отбор в списке справочника по значениям из таблицы в элементе 1C v8x

Категория:

Описание

Практический пример: Предприятие торгует автомобильными деталями. Одна и та же деталь может подходить для различных марок и моделей автомобилей. Продавец не всегда может квалифицированно ответить покупателю, подходит ли данная деталь к марке (модели) его автомобиля. Поэтому необходимо, чтобы у элемента справочника «Номенклатура» была информация, к каким моделям автомобилей подходит данная деталь. Причем деталь может подходить к нескольким моделям.
Задача: 
Сделать отбор в списке справочника «Номенклатура» по деталям, которые подходят к конкретной марке (модели) автомобиля.
Реализация:
1) Создается справочник «МаркиАвтомобилей» . Справочник с иерархический элементов с количеством уровней — 2. Это позволит создать список моделей и марок автомобилей примерно такой структуры:
Элемент 1-го уровня Элемент 2-го уровня
(марка автомобиля) (модель автомобиля)
Мазда 2000 года выпуска
  2002 года выпуска
Что в дальнейшем позволит делать выборку элементов «Номенклатуры», как по элементу первого уровня — «Мазда» (подходит для всех моделей), так и по элементам второго уровня — «2002 года выпуска» (подходит только для «Мазда» «2002 года выпуска»).
2) В справочнике «Номенклатура» добавляется табличный реквизит «МаркиАвтомобилей» с типом — СправочникСсылка.МаркиАвтомобилей. Данная таблица вставляется в форму элемента справочника.
3) В форме списка справочника «Номенклатура» вставляется «поле ввода» с именем «ОтборМаркаАвтомобиля» и типом значения — СправочникСсылка.МаркиАвтомобилей, по значению которого нужно организовать отбор в списке «Номенклатура».
4) Пишем процедуру отбора в событии «ПриИзменении» — реквизита «ОтборМаркаАвтомобиля»:

Процедура ОтборМаркаАвтомобиляПриИзменении(Элемент)
	Если ОтборМаркаАвтомобиля.Пустая() Тогда
		//Отключим отбор если не задано условие
		Список.Отбор.Ссылка.Использование=Ложь;
	Иначе
		//Сформируем запрос к табличному реквизиту справочник МаркиАвтомобилей
		//по реквизитам которого будем отбирать подходящие элементы
		Запрос = Новый Запрос;
		//Зададим параметр по которому будем делать отбор в запросе
		Запрос.УстановитьПараметр("МаркаАвтомобиля", ОтборМаркаАвтомобиля);
		Запрос.Текст =
		"ВЫБРАТЬ
		|	Номенклатура.Ссылка,
		|	Номенклатура.МаркиАвтомобилей.(
		|		МаркаАвтомобиля
		|	)
		|ИЗ
		|	Справочник.Номенклатура КАК Номенклатура
		|ГДЕ
		|	Номенклатура.МаркиАвтомобилей.МаркаАвтомобиля В ИЕРАРХИИ  (&МаркаАвтомобиля)";
		
		РезультатЗапроса = Запрос.Выполнить().Выгрузить();
		
		Список.Отбор.Ссылка.ВидСравнения=ВидСравнения.ВСписке;
		Список.Отбор.Ссылка.Значение.ЗагрузитьЗначения(РезультатЗапроса.ВыгрузитьКолонку("Ссылка"));
		Список.Отбор.Ссылка.Использование=Истина;
	КонецЕсли;
	Список.Обновить();	
КонецПроцедуры

Всё.

 

has been added to your cart:
Оформление заказа