Имя: Пароль:
1C
1С v8
Группировка динамического списка по характеристикам
0 borrman
 
22.02.12
02:10
Добрый день, коллеги!
Возникла задача реализовать иерархию по характеристикам.
Суть в следующем - есть справочник Номенклатура. У него есть дополнительные реквизиты (все аналогично типовой УТ 11, например или демо - пример, который идет к конфигурации) или дополнительные характеристики (вроде так правильнее).

Это характеристики доступны в СКД в режиме предприятия через "Ссылка.". Например, есть доп. характеристика размер - он в СКД как "Ссылка.[Размер]" выбирается.

Задача в следующем - необходимо реализовать динамический список с группировкой по этом доп. характеристикам (причем их список настраивает пользователь). НО! Самое важное - не должна светиться сама ссылка на элемент справочника. Т.е. эти характеристики дополнительные должны быть как группы справочника.

Я сделал следующее:

// в парамСписокНастроек - настройка групп, например "Ссылка.[Размер]".
//
Процедура НастроитьСписокПоПредставлениюПользователя(парамСписокНастроек, парамДинамическийСписок, парамИмяДинамическогоСписка, парамФорма) Экспорт
       парамДинамическийСписок.ТекстЗапроса =
   "ВЫБРАТЬ
   |    Номенклатура.Ссылка
   |ИЗ
   |    Справочник.Номенклатура КАК Номенклатура
   |ГДЕ
   |    НЕ Номенклатура.ЭтоГруппа";
   
   парамДинамическийСписок.ОсновнаяТаблица = "Справочник.Номенклатура";
   парамДинамическийСписок.ДинамическоеСчитываниеДанных = Истина;
   парамДинамическийСписок.ПроизвольныйЗапрос = Истина;
   Группировка_ = парамДинамическийСписок.Группировка;
   Группировка_.Элементы.Очистить();
   
   Для каждого ЭлементСпискаГруппировки из парамСписокНастроек Цикл
       
       Если НЕ ЭлементСпискаГруппировки.Пометка Тогда
           
           Продолжить;
           
       КонецЕсли;
       
       ПолеГруппировки = Группировка_.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
       ПолеГруппировки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Элементы;
       ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных(ЭлементСпискаГруппировки.Значение);
       ПолеГруппировки.Использование = Истина;
       
   КонецЦикла;
   
   // создаем реквизит колонки
   КолонкаСсылка = парамФорма.Элементы.Добавить("_КолонкаСсылка", Тип("ПолеФормы"), парамФорма.Элементы[парамИмяДинамическогоСписка]);
   КолонкаСсылка.Вид = ВидПоляФормы.ПолеНадписи;
   КолонкаСсылка.ПутьКДанным = парамИмяДинамическогоСписка + ".Ссылка";

КонецПроцедуры

НО ссылки естественно выводятся. Как их убрать?
1 borrman
 
22.02.12
09:40
Подниму. Очень нужна помощь.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший