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

08.07.09

Разработка - Универсальные функции

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

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

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

Всё.

 

Вступайте в нашу телеграмм-группу Инфостарт

См. также

SALE! %

Мастера заполнения Поиск данных База данных Инструментарий разработчика Корректировка данных Универсальные функции Механизмы платформы 1С Подбор и обработка объектов 1С 8.3 1С 8.5 Платные (руб)

Infostart MagicInput улучшает подбор в полях ввода 1С: ищет по любой части названия и по нескольким ключевым фрагментам, распознаёт ввод в другой раскладке и показывает иконки/статусы объектов прямо в списке. Поддерживает вставку навигационной ссылки/представления документа для автоподбора; для разработчиков доступны поиск по GUID и полному имени предопределённого. Работает в управляемых формах и подключается в большинстве конфигураций 1С 8.3/8.5.

5000 4000 руб.

25.02.2026    1699    9    1    

11

Загрузка и выгрузка в Excel Универсальные функции Программист 1С:Предприятие 8 Россия Бесплатно (free)

Описанный ниже подход позволяет в три шага заполнять формулы в Excel файлы, вне зависимости от ОС сервера (MS Windows Server или Linux). Подход подразумевает отказ от работы с COM-объектом в пользу работы через "объектную модель документа" (DOM).

30.10.2025    4322    Abysswalker    11    

46

Универсальные функции Работа с интерфейсом Программист 1С:Предприятие 8 Бесплатно (free)

Порой необходимо временно отключить расширение 1С, не удаляя его, чтобы не потерять данные. Но в этом случае при каждом запуске всем будет лезть уведомление о неактивном расширении, хотя очевидно, это техническая информация, которой не стоит лишний раз пугать пользователей.

14.05.2025    7999    DeerCven    15    

62

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Благодаря этим пяти строчкам можно больше не заморачиваться с загрузкой из внешних файлов. Пользуюсь везде, всегда и постоянно.

21.05.2024    54062    dimanich70    84    

174

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    7762    7    John_d    13    

59

Универсальные функции Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    68534    atdonya    31    

72

Универсальные функции Программист 1С:Предприятие 8 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    9729    ke.92@mail.ru    17    

68
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Altair777 649 08.07.09 12:05 Сейчас в теме
(0) Автор, укажите платформу, для которой предназначена процедура.
А еще лучше напишите аналогичную и для 7.7
2. tango 551 08.07.09 13:37 Сейчас в теме
Характеристики, свойства... За свою короткую жизнь уже дважды реально встречал следы "разработчиков", заводивших в УТ справочники "Размер", "Рост", "Цвет" и соответствующие реквизиты в номенклатуре.
Ваш случай - номер три.
4. AnryMc 851 08.07.09 14:30 Сейчас в теме
(2) А характеристики и свойства подерживают иерархию в отборе???
Как описано:
"Что в дальнейшем позволит делать выборку элементов «Номенклатуры», как по элементу первого уровня - «Мазда» (подходит для всех моделей), так и по элементам второго уровня - «2002 года выпуска» (подходит только для «Мазда» «2002 года выпуска»)."
3. tango 551 08.07.09 13:38 Сейчас в теме
минус не поставлю за энтузиазм
5. AnryMc 851 08.07.09 14:36 Сейчас в теме
(3) СПАСИБО!
Рубрика - Методические материалы
Я например только учусь и пока нешел решение убил кучу времени.
6. DimaP 64 06.10.09 05:48 Сейчас в теме
Супер! А то как раз мучался с этим :)
Спасибо!
Для отправки сообщения требуется регистрация/авторизация