|
СКД простой вывод ТЗ с формы в Табдок | ☑ | ||
---|---|---|---|---|
0
trialex3
02.11.22
✎
19:07
|
Всем добрый день. Подскажите есть на УФ ТаблицаЗначений. Хотел через СКД просто вывести ее на ТабДок. Пока хотя бы без группировок - чисто детальные записи, а дальше буду усложнять. Написал процедуру, а всеравно ничего не выводит - где я ошибся?
ТестированиеПодробно - ТЗ на форме ТабДок - Табличный документ на форме Процедура СформироватьИВывестиТабДок() СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных; КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных; НастройкиКомпоновки = КомпоновщикНастроек.ПолучитьНастройки(); //Источник данных ИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить(); ИсточникДанных.Имя = "ИсточникДанных1"; ИсточникДанных.ТипИсточникаДанных = "Local"; //Набор данных НаборДанныхОбъектСхемыКомпоновкиДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных")); НаборДанныхОбъектСхемыКомпоновкиДанных.Имя = "НаборДанных1"; НаборДанныхОбъектСхемыКомпоновкиДанных.ИмяОбъекта = "ТестированиеПодробно"; НаборДанныхОбъектСхемыКомпоновкиДанных.ИсточникДанных = "ИсточникДанных1"; //Поля данных ПолеНабораДанныхСхемыКомпоновкиДанных = НаборДанныхОбъектСхемыКомпоновкиДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); ПолеНабораДанныхСхемыКомпоновкиДанных.Поле = "ХарактеристикаПривода"; ПолеНабораДанныхСхемыКомпоновкиДанных.ПутьКДанным = "ХарактеристикаПривода"; ПолеНабораДанныхСхемыКомпоновкиДанных.Заголовок = "ХарактеристикаПривода"; ПолеНабораДанныхСхемыКомпоновкиДанных = НаборДанныхОбъектСхемыКомпоновкиДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); ПолеНабораДанныхСхемыКомпоновкиДанных.Поле = "Номенклатура"; ПолеНабораДанныхСхемыКомпоновкиДанных.ПутьКДанным = "Номенклатура"; ПолеНабораДанныхСхемыКомпоновкиДанных.Заголовок = "Номенклатура"; ПолеНабораДанныхСхемыКомпоновкиДанных = НаборДанныхОбъектСхемыКомпоновкиДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); ПолеНабораДанныхСхемыКомпоновкиДанных.Поле = "Показатель"; ПолеНабораДанныхСхемыКомпоновкиДанных.ПутьКДанным = "Показатель"; ПолеНабораДанныхСхемыКомпоновкиДанных.Заголовок = "Показатель"; ПолеНабораДанныхСхемыКомпоновкиДанных = НаборДанныхОбъектСхемыКомпоновкиДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); ПолеНабораДанныхСхемыКомпоновкиДанных.Поле = "Количество"; ПолеНабораДанныхСхемыКомпоновкиДанных.ПутьКДанным = "Количество"; ПолеНабораДанныхСхемыКомпоновкиДанных.Заголовок = "Количество"; ПолеНабораДанныхСхемыКомпоновкиДанных = НаборДанныхОбъектСхемыКомпоновкиДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); ПолеНабораДанныхСхемыКомпоновкиДанных.Поле = "РежимТестирования"; ПолеНабораДанныхСхемыКомпоновкиДанных.ПутьКДанным = "РежимТестирования"; ПолеНабораДанныхСхемыКомпоновкиДанных.Заголовок = "РежимТестирования"; //Поля группировки ГруппировкаДетальныеПоля = НастройкиКомпоновки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); ГруппировкаДетальныеПоля.Использование = Истина; Автополе = ГруппировкаДетальныеПоля.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных")); Автополе.Использование = Истина; //Прочее КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновки); ВнешниеНаборы = Новый Структура("ТестированиеПодробно", ДанныеФормыВЗначение(ТестированиеПодробно,Тип("ТаблицаЗначений"))); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборы); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ТабДок); ПроцессорВывода.Вывести(ПроцессорКомпоновки); КонецПроцедуры |
|||
1
trialex3
02.11.22
✎
19:44
|
При этом тестовый пример в внешней обработке выполняется прекрасно:
Процедура Магия() ТаблицаИсточник = Новый ТаблицаЗначений; ТаблицаИсточник.Колонки.Добавить("Код"); ТаблицаИсточник.Колонки.Добавить("Наименование"); НоваяСтрока = ТаблицаИсточник.Добавить(); НоваяСтрока.Код = 1; НоваяСтрока.Наименование = "Электродрели"; НоваяСтрока = ТаблицаИсточник.Добавить(); НоваяСтрока.Код = 2; НоваяСтрока.Наименование = "Генераторы"; НоваяСтрока = ТаблицаИсточник.Добавить(); НоваяСтрока.Код = 3; НоваяСтрока.Наименование = "Шуруповерты"; СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных; КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных; НастройкиКомпоновки = КомпоновщикНастроек.Настройки; //Источник данных ИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить(); ИсточникДанных.Имя = "ИсточникДанных1"; ИсточникДанных.ТипИсточникаДанных = "Local"; //Набор данных НаборДанныхОбъектСхемыКомпоновкиДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных")); НаборДанныхОбъектСхемыКомпоновкиДанных.Имя = "НаборДанных1"; НаборДанныхОбъектСхемыКомпоновкиДанных.ИмяОбъекта = "ТаблицаИсточник"; НаборДанныхОбъектСхемыКомпоновкиДанных.ИсточникДанных = "ИсточникДанных1"; //Поля данных ПолеНабораДанныхСхемыКомпоновкиДанных = НаборДанныхОбъектСхемыКомпоновкиДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); ПолеНабораДанныхСхемыКомпоновкиДанных.Поле = "Код"; ПолеНабораДанныхСхемыКомпоновкиДанных.ПутьКДанным = "Код"; ПолеНабораДанныхСхемыКомпоновкиДанных.Заголовок = "Код"; ПолеНабораДанныхСхемыКомпоновкиДанных = НаборДанныхОбъектСхемыКомпоновкиДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); ПолеНабораДанныхСхемыКомпоновкиДанных.Поле = "Наименование"; ПолеНабораДанныхСхемыКомпоновкиДанных.ПутьКДанным = "Наименование"; ПолеНабораДанныхСхемыКомпоновкиДанных.Заголовок = "Наименование"; //Поля группировки ГруппировкаКомпоновкиДанных1 = НастройкиКомпоновки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); ГруппировкаКомпоновкиДанных1.Использование = Истина; ПолеГруппировкиКомпоновкиДанных = ГруппировкаКомпоновкиДанных1.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); ПолеГруппировкиКомпоновкиДанных.Использование = Истина; ПолеГруппировкиКомпоновкиДанных.Поле = Новый ПолеКомпоновкиДанных("Код"); ГруппировкаКомпоновкиДанных2 = ГруппировкаКомпоновкиДанных1.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); ГруппировкаКомпоновкиДанных2.Использование = Истина; ПолеГруппировкиКомпоновкиДанных2 = ГруппировкаКомпоновкиДанных2.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); ПолеГруппировкиКомпоновкиДанных2.Использование = Истина; ПолеГруппировкиКомпоновкиДанных2.Поле = Новый ПолеКомпоновкиДанных("Наименование"); АвтоВыбранноеПолеКомпоновкиДанных = ГруппировкаКомпоновкиДанных1.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных")); АвтоВыбранноеПолеКомпоновкиДанных.Использование = Истина; АвтоВыбранноеПолеКомпоновкиДанных = ГруппировкаКомпоновкиДанных2.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных")); АвтоВыбранноеПолеКомпоновкиДанных.Использование = Истина; // КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновки); ВнешниеНаборы = Новый Структура("ТаблицаИсточник", ТаблицаИсточник); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборы); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Табдок); ПроцессорВывода.Вывести(ПроцессорКомпоновки); КонецПроцедуры |
|||
2
_Batoo
02.11.22
✎
19:50
|
поля группировки не добавил же
|
|||
3
trialex3
02.11.22
✎
20:09
|
(2)
ГруппировкаДетальныеПоля = НастройкиКомпоновки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); ГруппировкаДетальныеПоля.Использование = Истина; Автополе = ГруппировкаДетальныеПоля.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных")); Автополе.Использование = Истина; Вот же добавил только детальные записи, не? Или их по другому надо как то прописывать? |
|||
4
avp449
02.11.22
✎
20:55
|
Не увидел добавление полей в выбранные поля настроек КД.
|
|||
5
trialex3
03.11.22
✎
16:18
|
(4) Можно поподробнее? у меня в тестовом примере вроде тоже ничего не добавлено - но все работает.
|
|||
6
avp449
03.11.22
✎
16:26
|
(5) У вас закладка "Выбранные поля" непосредственно настроек компоновки получается пустой. Вряд ли в таком отчете что-то должно выводиться.
|
|||
7
avp449
03.11.22
✎
16:34
|
(5) Во втором примере используется структура с конкретными полями группировки. Они будут автоматически выводиться, если у группировок добавлено автополе выбора. В первом примере у вас только детальные записи. Поэтому сравнивать их нельзя.
|
|||
8
trialex3
05.11.22
✎
17:01
|
(7) Спасибо. То есть мне надо в выбранные поля добавить все поля из ТЗ?
|
|||
9
trialex3
06.11.22
✎
18:08
|
(7) Да вы были прав. В настройки добавляем выбранные поля и все отображается
Код ВыбранноеПоле = НастройкиКомпоновки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ВыбранноеПоле.Поле=Новый ПолеКомпоновкиДанных("ХарактеристикаПривода"); |
|||
10
trialex3
06.11.22
✎
21:45
|
(9) Хотя всеравно непонятно.
В выбранных полях есть номенклатура и количество в группировках только одна - номенклатура, а количество ресурс. По идее должна вывестись номенклатура с средним количеством а номенклатура не группируется... Просто выводится как в ТЗ без группировки |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |