|
СКД полностью программно в обработке | ☑ | ||
---|---|---|---|---|
0
Алексей777
09.09.13
✎
16:36
|
v8: СКД: полностью программное создание отчета в продолжение данного топика.
СхемаКомпоновкиДанных = новый СхемаКомпоновкиДанных; Источник = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить(); Источник.Имя = "ЛокальнаяБаза"; Источник.СтрокаСоединения = ""; Источник.ТипИсточникаДанных = "Local"; НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных")); НаборДанных.Имя = "Замеры"; НаборДанных.ИсточникДанных = "ЛокальнаяБаза"; НаборДанных.АвтоЗаполнениеДоступныхПолей = Истина; НаборДанных.Запрос = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | Документ1.ДатаЗамера КАК Дата, | Документ1.ВремяЗамераНач КАК ВремяС, | Документ1.ВремяЗамераКон КАК ВремяПо, | Документ1.КонтрагентАдрес КАК Адрес |ИЗ | Документ.Документ1 КАК Документ1"; ПолеДобавл = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); ПолеДобавл.Заголовок = "Дата"; ПолеДобавл.ПутьКДанным = "Дата"; ПолеДобавл.Поле = "Дата"; ПолеДобавл = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); ПолеДобавл.Заголовок = "Время С"; ПолеДобавл.ПутьКДанным = "ВремяС"; ПолеДобавл.Поле = "ВремяС"; ПолеДобавл = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); ПолеДобавл.Заголовок = "Время По"; ПолеДобавл.ПутьКДанным = "ВремяПо"; ПолеДобавл.Поле = "ВремяПо"; ПолеДобавл = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); ПолеДобавл.Заголовок = "Адрес"; ПолеДобавл.ПутьКДанным = "Адрес"; ПолеДобавл.Поле = "Адрес"; НастройкиКомпоновкиДанных = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; ГруппировкаНоменклатуры = НастройкиКомпоновкиДанных.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); ПолеГруппировки = ГруппировкаНоменклатуры.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); ПолеГруппировки.Использование = Истина; //ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Дата"); //комментирую специально, нужны детальные записи АвтоПоле = ГруппировкаНоменклатуры.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных")); АвтоПоле.Использование = Истина; ВыбранноеПоле = НастройкиКомпоновкиДанных.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ВыбранноеПоле.Заголовок = "Дата"; ВыбранноеПоле.Использование = Истина; ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("Дата"); ... и.т.д. КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновкиДанных); //исполняем макет ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(Макет); ПроцессорКомпоновки.Сбросить(); //выводим результат ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; // ТабДок = Новый ТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ТабПоле); В результате исполнения Табличный документ пустой. Подскажите, где копать? |
|||
1
Алексей777
10.09.13
✎
08:52
|
Всем доброго утра!
В результате исследований получилось вот что (все работает как нужно). Стоит обратить внимание на "АвтоПолеГруппировкиКомпоновкиДанных". Также какая-то фигня с расшифровкой при двойном щелчке выходят цифры. Короче рабочий код: |
|||
2
Алексей777
10.09.13
✎
08:53
|
В модуле управляемой формы:
&НаКлиенте Процедура Команда1(Команда) Сделать1(); КонецПроцедуры &НаСервере Процедура Сделать1() //1. создаем схему компоновки данных СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных; //1.1 определяем источник данных для схемы //для наших целей - текущая ИБ Источник = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить(); Источник.Имя = "ЛокальнаяБаза"; Источник.СтрокаСоединения = ""; Источник.ТипИсточникаДанных = "Local"; //1.2 определяем набор данных НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных")); НаборДанных.Имя = "Продажи"; НаборДанных.ИсточникДанных = "ЛокальнаяБаза"; НаборДанных.АвтоЗаполнениеДоступныхПолей = Истина; НаборДанных.Запрос = ( "ВЫБРАТЬ | РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура, | РеализацияТоваровУслугТовары.Сумма КАК СтоимостьОборот, | РеализацияТоваровУслугТовары.Ссылка.Дата КАК Дата, | РеализацияТоваровУслугТовары.НомерСтроки, | РеализацияТоваровУслугТовары.Ссылка |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары" ); //1.2.1 добавляем поля ПолеНоменклатуры = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); ПолеНоменклатуры.Заголовок = "Номенклатура"; ПолеНоменклатуры.ПутьКДанным = "Номенклатура"; ПолеНоменклатуры.Поле = "Номенклатура"; ПолеСтоимости = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); ПолеСтоимости.Заголовок = "Стоимость"; ПолеСтоимости.ПутьКДанным = "СтоимостьОборот"; ПолеСтоимости.Поле = "СтоимостьОборот"; ПолеДата = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); ПолеДата.Заголовок = "Дата"; ПолеДата.ПутьКДанным = "Дата"; ПолеДата.Поле = "Дата"; ПолеДата = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); ПолеДата.Заголовок = "НомерСтроки"; ПолеДата.ПутьКДанным = "НомерСтроки"; ПолеДата.Поле = "НомерСтроки"; ПолеДата = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); ПолеДата.Заголовок = "Ссылка"; ПолеДата.ПутьКДанным = "Ссылка"; ПолеДата.Поле = "Ссылка"; //1.3 определяем ресурсы ПолеРесурса = СхемаКомпоновкиДанных.ПоляИтога.Добавить(); ПолеРесурса.Выражение = "Сумма(СтоимостьОборот)"; ПолеРесурса.ПутьКДанным = "СтоимостьОборот"; //2. создаем настройки для схемы НастройкиКомпоновкиДанных = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; //2.1 определяем структуру //2.1.1 добавляем группировку "Номенклатура" ГруппировкаНоменклатуры = НастройкиКомпоновкиДанных.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); ПолеГруппировки = ГруппировкаНоменклатуры.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); ПолеГруппировки.Использование = Истина; ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Номенклатура"); ГруппировкаДет = ГруппировкаНоменклатуры.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); ПолеГруппировки = ГруппировкаДет.ПоляГруппировки.Элементы.Добавить(Тип("АвтоПолеГруппировкиКомпоновкиДанных")); ПолеГруппировки.Использование = Истина; АвтоПоле = ГруппировкаНоменклатуры.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных")); АвтоПоле.Использование = Истина; АвтоПоле = ГруппировкаДет.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных")); АвтоПоле.Использование = Истина; //2.2 определим выбранные поля ВыбранноеПоле = НастройкиКомпоновкиДанных.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ВыбранноеПоле.Заголовок = "Стоимость"; ВыбранноеПоле.Использование = Истина; ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("СтоимостьОборот"); // ВыбранноеПоле = НастройкиКомпоновкиДанных.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ВыбранноеПоле.Заголовок = "Дата"; ВыбранноеПоле.Использование = Истина; ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("Дата"); ВыбранноеПоле = НастройкиКомпоновкиДанных.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ВыбранноеПоле.Заголовок = "НомерСтроки"; ВыбранноеПоле.Использование = Истина; ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("НомерСтроки"); ВыбранноеПоле = НастройкиКомпоновкиДанных.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ВыбранноеПоле.Заголовок = "Ссылка"; ВыбранноеПоле.Использование = Истина; ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("Ссылка"); //КомпНастроек = Новый КомпоновщикНастроекКомпоновкиДанных; //КомпНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); //КомпНастроек.ЗагрузитьНастройки(НастройкиКомпоновкиДанных); //НастройкиКомпоновкиДанных = КомпНастроек.ПолучитьНастройки(); //3. готовим макет КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновкиДанных,ДанныеРасшифровки); //4. исполняем макет ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(Макет,,ДанныеРасшифровки); ПроцессорКомпоновки.Сбросить(); Реквизит1.Очистить(); //5. выводим результат ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(Реквизит1); ПроцессорВывода.Вывести(ПроцессорКомпоновки); КонецПроцедуры |
|||
3
Алексей777
10.09.13
✎
08:54
|
Может подскажите, почему такая расшифровка - только цифры одни :).
|
|||
4
assasu
10.09.13
✎
09:14
|
зачем это все нужно?
макет можно создать, и пользоваться готовым. |
|||
5
Алексей777
10.09.13
✎
09:43
|
(4), дружище, нужно! Я не просто для учебы спрашиваю :).
|
|||
6
assasu
10.09.13
✎
11:30
|
(5)друг, мне сложно представить реальную задачу, где это нужно. поделись.
|
|||
7
ДемонМаксвелла
10.09.13
✎
11:38
|
(3) тоже как то делал скд-шный отчет обработкой (печ формой)
для нормальных расшифровок сделал ДанныеРасшифровки реквизитом обработки, и обработку расшифровки пришлось написать |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |