Есть иерархический справочник "СтруктураПредприятия" (иерархия элементов). Чтобы в СКД обойти проблему дублей (сначала выводится сам элемент, а на следующем уровне иерархии опять же он и подчиненные элементы), написала код, который выводит данные как надо (без дублей), но стоит добавить какое-либо условие (в условие или в отбор), как данные перестают вообще выводиться. Вопрос, как надо добавлять условие в СКД для иерархического справочника?
ВЫБРАТЬ РАЗЛИЧНЫЕ
СтруктураПредприятия.Родитель КАК Ссылка
ПОМЕСТИТЬ ВТ_Родители
ИЗ
Справочник.СтруктураПредприятия КАК СтруктураПредприятия
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
СтруктураПредприятия.Ссылка КАК Структура
{ВЫБРАТЬ
Структура.*}
ИЗ
Справочник.СтруктураПредприятия КАК СтруктураПредприятия
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Родители КАК ВТ_Родители
ПО СтруктураПредприятия.Ссылка = ВТ_Родители.Ссылка
ГДЕ
ВТ_Родители.Ссылка ЕСТЬ NULL
{ГДЕ
СтруктураПредприятия.Ссылка.* КАК Структура}
+(0) Добавлю, что в настройках этого отчета на СКД всего одна группировка "Структура" с типом группировки "Иерархия".
Такой замысловатый код в (0) я сделала, поскольку иначе каждый элемент-родитель дублируется: отображается как группа и как подчиненный элемент. Но минус такого способа - не получается использовать отбор в СКД. Кто-нибудь смог побороть такую проблему, как мне выводить не весь справочник, а определенный элементы в иерархии, при этом избежать дублей?
Добавила условие &Ссылка, отбор не срабатывает, как это побороть???
ВЫБРАТЬ РАЗЛИЧНЫЕ
СтруктураПредприятия.Родитель КАК Ссылка
ПОМЕСТИТЬ ВТ_Родители
ИЗ
Справочник.СтруктураПредприятия КАК СтруктураПредприятия
ГДЕ
СтруктураПредприятия.Ссылка = &Ссылка
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
СтруктураПредприятия.Ссылка КАК Структура
{ВЫБРАТЬ
Структура.*}
ИЗ
Справочник.СтруктураПредприятия КАК СтруктураПредприятия
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Родители КАК ВТ_Родители
ПО СтруктураПредприятия.Ссылка = ВТ_Родители.Ссылка
ГДЕ
ВТ_Родители.Ссылка ЕСТЬ NULL
{ГДЕ
СтруктураПредприятия.Ссылка.* КАК Структура}
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший