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