СКД: Динамическое добавление полей
☑
0
etc
09.12.11
✎
16:49
При открытии отчета добавляю дополнительные поля в запрос в СКД. Почитав порядка десятка тем нарисовал такую процедурку. Однако поля не появляются в списке доступных пользователю. Тоесть компоновщик настроек плевать хотел на:
КомпоновщикНастроек.Инициализировать(...)
Что я не учел?
ПоляЗапроса = "";
НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Адресация;
Запрос = Новый Запрос();
Запрос.Текст = "
|ВЫБРАТЬ
| Ссылка,
| Код,
| Наименование,
| ВидНумерации
|ИЗ
| Справочник.ВидыАдресныхПространств
|ГДЕ
| ВидНумерации <> ЗНАЧЕНИЕ(Перечисление.ВидыНумерацииАдресныхПространств.ПустаяСсылка)
|
|УПОРЯДОЧИТЬ ПО
| ПорядокНумерации
|";
Таб = Запрос.Выполнить().Выгрузить();
Для Каждого СтрокаТаб Из Таб Цикл
ИмяПоля = СтрЗаменить(СтрокаТаб.Наименование," ","");
ИмяПоля = "Адрес"+СтрЗаменить(ИмяПоля,"/","_");
ПоляЗапроса = ПоляЗапроса + ",
| МАКСИМУМ(ВЫБОР КОГДА АдресноеПространство.Код = """+СтрокаТаб.Код+""" ТОГДА Адрес ИНАЧЕ NULL КОНЕЦ) КАК "+ИмяПоля;
ПолеНоменклатуры = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
ПолеНоменклатуры.Заголовок = СтрокаТаб.Наименование;
ПолеНоменклатуры.ПутьКДанным = ИмяПоля;
ПолеНоменклатуры.Поле = ИмяПоля;
КонецЦикла;
НаборДанных.Запрос = "
|ВЫБРАТЬ
| Ссылка КАК Ячейка" + ПоляЗапроса + "
|ПОМЕСТИТЬ ВрТаб
|ИЗ
| Справочник.Ячейки.АдресацияЯчейки
|СГРУППИРОВАТЬ ПО
| Ссылка
|";
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
1
etc
09.12.11
✎
16:55
Прошу прощения за вот это кусок:
ПолеНоменклатуры = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
ПолеНоменклатуры.Заголовок = СтрокаТаб.Наименование;
ПолеНоменклатуры.ПутьКДанным = ИмяПоля;
ПолеНоменклатуры.Поле = ИмяПоля;
Номенклатура конечно здесь не причем.
2
etc
13.12.11
✎
20:01
^up^
3
etc
15.12.11
✎
20:02
Разобрался. Нужно убрать:
|ПОМЕСТИТЬ ВрТаб
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс