Как назначить один из элементов справочника «более главным». Как создать группу для неиерархического справочника (1С: Программисту)

Вопрос Бывает, необходимо назначить один из элементов справочника «более главным», не затрагивая структуру самого справочника, т.е. объединить элементы неиерархического справочника в одну группу, либо добавить другой «срез иерархии», отличающийся от уже существующего. Как это сделать?
Ответ
Предположим, требуется объединить контрагентов в группу и назначить этой группе одного «главного» контрагента. При этом по условию задачи нельзя для этого использовать иерархию самого справочника (например, «Контрагенты» уже объединены в группу по другому признаку).
Для этого можно использовать регистр сведений.
Решим задачу для случая, когда требуется объединить контрагентов в группу одного поклажедателя. Создаем регистр сведений «агГруппыПоклажедателей»:
Измерение – «Контрагент», тип – справочник «Контрагенты». Ресурс – «Группа»,тип – справочник «Контрагенты».
Назначаем требуемым контрагентам их группу, например, примерно так (в таблице представлен пример заполнения этого регистра для двух групп поклажедателей: Аллюр и Кирс):

Контрагент Группа
Аллюр Аллюр
Аллюр-авто Аллюр
Кирс Кирс
Кирс-инфо Кирс

Предположим, нам нужно получить всех контрагентов из группы, в которую входит какой-то «ТекущийКонтрагент»

Запрос, с помощью которого можно получить такой перечень:

Запрос = Новый Запрос(
"ВЫБРАТЬ
|    агГруппыПоклажедателей.Контрагент
|ИЗ
|    РегистрСведений.агГруппыПоклажедателей КАК агГруппыПоклажедателей
|ГДЕ
|    агГруппыПоклажедателей.Группа В
|         (ВЫБРАТЬ
|            агГруппыПоклажедателей.Группа
|        ИЗ
|            РегистрСведений.агГруппыПоклажедателей КАК агГруппыПоклажедателей
|        ГДЕ
|            агГруппыПоклажедателей.Контрагент = &ТекущийКонтрагент)");

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.