Об = РеквизитФормыВЗначение("Объект"); Схема = Об.ПолучитьМакет("Схема"); НастройкаТекст = Об.ПолучитьМакет("Настройка"); ЧтениеХМЛ = Новый ЧтениеXML; ЧтениеХМЛ.УстановитьСтроку(НастройкаТекст.ПолучитьТекст()); НовыйСXDTO = Новый СериализаторXDTO(ФабрикаXDTO); Настройки = НовыйСXDTO.ПрочитатьXML(ЧтениеХМЛ); КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроек.ЗагрузитьНастройки(Настройки); Отб = КомпоновщикНастроек.Настройки.Отбор.Элементы[0]; Отб.ПравоеЗначение = Объект.Партнер; Элем = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ПериодОтчета"); Элем.Использование = Истина; Элем.Значение = Новый СтандартныйПериод(Дата1, Дата2); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, КомпоновщикНастроек.Настройки,,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки); ТабОтвет = Новый ТаблицаЗначений; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ПроцессорВывода.УстановитьОбъект(ТабОтвет); ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
Архив метки: СКД
Печатная форма из СКД
Функция СформироватьПечатнуюФорму(МассивОбъектов) Экспорт ТабличныйДокумент = Новый ТабличныйДокумент; ТабличныйДокумент.АвтоМасштаб = Истина; ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; ТабличныйДокумент.ОтображатьСетку = Ложь; ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_WB"; ИмяФайла = ПолучитьИмяВременногоФайла(); ПолучитьМакет("Настройка").Записать(ИмяФайла); ЧтениеХМЛ = Новый ЧтениеXML; ЧтениеХМЛ.ОткрытьФайл(ИмяФайла); НовыйСXDTO = Новый СериализаторXDTO(ФабрикаXDTO); Настройки = НовыйСXDTO.ПрочитатьXML(ЧтениеХМЛ); ЧтениеХМЛ = Неопределено; УдалитьФайлы(ИмяФайла); КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроек.ЗагрузитьНастройки(Настройки); Эл = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("МассивДокументов"); Эл.Значение = МассивОбъектов; Схема = ПолучитьМакет("Схема"); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, КомпоновщикНастроек.Настройки); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ТабличныйДокумент); ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина); Возврат ТабличныйДокумент; КонецФункции
Безумный отчет
Несколько СКД в одном отчете
ДокументРезультат = ЭлементыФормы.Результат; ДокументРезультат.Очистить(); Если Элемент.Имя = "ФинОперации" Тогда СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); Иначе СхемаКомпоновкиДанных = ПолучитьМакет("Перечисления"); КонецЕсли; КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.ВариантыНастроек.Основной.Настройки); УстановитьПериод(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки); ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,, ДанныеРасшифровки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
Программное формирование отчета 1с82
Процедура для программного формирования отчета на СКД, обычные формы
Отчет по нескольким периодам на СКД
Отчет по нескольким периодам на Системе Компановки Данных (СКД)
Формирую из 2х наборов данных
первый набор — Запрос по остаткам
второй набор для вывода периодов продаж, генерируется в процедуре, используя «ОБЪЕДИНИТЬ ВСЕ»
сам отчет можно скачать тут http://infostart.ru/public/142953
часть процедуры для формирования Запроса
Настройка СКД в макете Обработки
Иногда лень городить программное заполнение схемы.
Я делаю настройку в режиме предприятия, сохраняю в xml.
Этот xml помещаю в макет как двоичные данные
Потом в коде сохраняю xml из макета в tmp и подставляю ее в СКД ))
Волшебная процедура СКД — Таблица значений
Процедура получает из СКД результат в виде Табличного документа, парсит его, создает в Дереве на форме колонки и заполняет дерево данными результата СКД
Смысл в том, что СКД не может вывести результат в объект на форму, если он Таблица — выдает ошибку «Не поддерживается вывод таблиц, диаграмм и вложенных отчетов в универсальную коллекцию значений».
Поэтому я выгружаю СКД в ТабличныйДокумент и вытаскиваю данные уже из него, далее строю и заполняю Дерево на форме
Волшебная процедура для работы с СКД
Создает Компановщик настроек.
Заполняет его отборами на основании Построителя (он на форме)
Подсовывает этот Компановщик в СКД и выводит результат в Дерево значений
используется тут: http://infostart.ru/public/91297