Архив метки: СКД

Формирование таблицы данных через СКД и Настройки из макета

Об = РеквизитФормыВЗначение("Объект");

Схема = Об.ПолучитьМакет("Схема");
НастройкаТекст = Об.ПолучитьМакет("Настройка");

ЧтениеХМЛ = Новый ЧтениеXML;
ЧтениеХМЛ.УстановитьСтроку(НастройкаТекст.ПолучитьТекст());

НовыйСXDTO = Новый СериализаторXDTO(ФабрикаXDTO);
Настройки = НовыйСXDTO.ПрочитатьXML(ЧтениеХМЛ);

КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);

Отб = КомпоновщикНастроек.Настройки.Отбор.Элементы[0];
Отб.ПравоеЗначение = Объект.Партнер;

Элем = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ПериодОтчета");
Элем.Использование = Истина;
Элем.Значение = Новый СтандартныйПериод(Дата1, Дата2);

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема,
    КомпоновщикНастроек.Настройки,,,
    Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));

ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);

ТабОтвет = Новый ТаблицаЗначений;

ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(ТабОтвет);
ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);

Печатная форма из СКД

Функция СформироватьПечатнуюФорму(МассивОбъектов) Экспорт

    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.АвтоМасштаб = Истина;
    ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    ТабличныйДокумент.ОтображатьСетку = Ложь;
    ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_WB";

    ИмяФайла = ПолучитьИмяВременногоФайла();
    ПолучитьМакет("Настройка").Записать(ИмяФайла);

    ЧтениеХМЛ = Новый ЧтениеXML;
    ЧтениеХМЛ.ОткрытьФайл(ИмяФайла);

    НовыйСXDTO = Новый СериализаторXDTO(ФабрикаXDTO);
    Настройки = НовыйСXDTO.ПрочитатьXML(ЧтениеХМЛ);

    ЧтениеХМЛ = Неопределено;
    УдалитьФайлы(ИмяФайла);

    КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
    КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);

    Эл = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("МассивДокументов");
    Эл.Значение = МассивОбъектов;

    Схема = ПолучитьМакет("Схема");

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, КомпоновщикНастроек.Настройки);

    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ТабличныйДокумент);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);

    Возврат ТабличныйДокумент;

КонецФункции

Несколько СКД в одном отчете

    ДокументРезультат = ЭлементыФормы.Результат;
    ДокументРезультат.Очистить();

    Если Элемент.Имя = "ФинОперации" Тогда
        СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    Иначе
        СхемаКомпоновкиДанных = ПолучитьМакет("Перечисления");
    КонецЕсли;

    КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.ВариантыНастроек.Основной.Настройки);

    УстановитьПериод();

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки);

    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,, ДанныеРасшифровки);

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);

Отчет по нескольким периодам на СКД

Отчет по нескольким периодам на Системе Компановки Данных (СКД)

Формирую из 2х наборов данных
первый набор — Запрос по остаткам
второй набор для вывода периодов продаж, генерируется в процедуре, используя «ОБЪЕДИНИТЬ ВСЕ»

сам отчет можно скачать тут http://infostart.ru/public/142953

часть процедуры для формирования Запроса

Читать далее

Настройка СКД в макете Обработки

Иногда лень городить программное заполнение схемы.
Я делаю настройку в режиме предприятия, сохраняю в xml.
Этот xml помещаю в макет как двоичные данные
Потом в коде сохраняю xml из макета в tmp и подставляю ее в СКД ))

Читать далее

Волшебная процедура СКД — Таблица значений

Процедура получает из СКД результат в виде Табличного документа, парсит его, создает в Дереве на форме колонки и заполняет дерево данными результата СКД
Смысл в том, что СКД не может вывести результат в объект на форму, если он Таблица — выдает ошибку «Не поддерживается вывод таблиц, диаграмм и вложенных отчетов в универсальную коллекцию значений».
Поэтому я выгружаю СКД в ТабличныйДокумент и вытаскиваю данные уже из него, далее строю и заполняю Дерево на форме

Читать далее

Волшебная процедура для работы с СКД

Создает Компановщик настроек.
Заполняет его отборами на основании Построителя (он на форме)
Подсовывает этот Компановщик в СКД и выводит результат в Дерево значений

используется тут: http://infostart.ru/public/91297

Читать далее