MyTetra Share
Делитесь знаниями!
О, смотри-ка какое хорошее место. Дайте два!
Таблицу значений в табличный документ с помощью СКД
14.09.2016
12:12
Автор: pola
Текстовые метки: 1c.code
Раздел: Программирование - 1с - code

Процедура ТрансформироватьВТабличныйДокумент(ТаблицаДанных, ДокументРезультат, КомментарийАвтора = "") Экспорт

ДокументРезультат = Новый ТабличныйДокумент;

ВнешниеНаборыДанных = Новый Структура;

ВнешниеНаборыДанных.Вставить("ТаблицаДанных", ТаблицаДанных);

СКД = Новый СхемаКомпоновкиДанных;

ИД = СКД.ИсточникиДанных.Добавить();

ИД.Имя = "ИсточникДанных";

ИД.ТипИсточникаДанных = "Local";

НаборДанных = СКД.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных"));

НаборДанных.Имя = "НаборДанных1";

НаборДанных.ИмяОбъекта = "ТаблицаДанных";

НаборДанных.ИсточникДанных = "ИсточникДанных";

//добавление параметров СКД

////автор

ПараметрИсполнитель = СКД.Параметры.Добавить();

ПараметрИсполнитель.Имя = "Автор";

////дата сохранения

ПараметрДатаСохранения = СКД.Параметры.Добавить();

ПараметрДатаСохранения.Имя = "ДатаСохранения";

////комментарий автора

ПараметрКомментарий = СКД.Параметры.Добавить();

ПараметрКомментарий.Имя = "Комментарий";

НастройкиСКД = СКД.НастройкиПоУмолчанию;

//добавление группировки *ДетальныеЗаписи*

ГруппировкаДетальныеЗаписи = НастройкиСКД.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));

ГруппировкаДетальныеЗаписи.Использование = Истина;

ВыбранныеПоляДетальныеЗаписи = ГруппировкаДетальныеЗаписи.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));

ВыбранныеПоляДетальныеЗаписи.Использование = Истина;

Для Каждого КолонкаТаблицыДанных Из ТаблицаДанных.Колонки Цикл

////поля набора данных

МассивТипов = Новый Массив;

Если ТаблицаДанных.Количество() > 0 Тогда

МассивТипов.Добавить(ТипЗнч(ТаблицаДанных[0][КолонкаТаблицыДанных.Имя]));

КонецЕсли;

ИмяКолонки = КолонкаТаблицыДанных.Имя;

ПолеНабораДанных = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));

ПолеНабораДанных.Поле = ИмяКолонки;

ПолеНабораДанных.ПутьКДанным = ИмяКолонки;

ПолеНабораДанных.Заголовок = ИмяКолонки;

ПолеНабораДанных.ТипЗначения = Новый ОписаниеТипов(МассивТипов);

////выбранные поля настроек

ВыбранноеПоле = НастройкиСКД.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));

ВыбранноеПоле.Использование = Истина;

ВыбранноеПоле.Заголовок = ИмяКолонки;

ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяКолонки);

КонецЦикла;

//добавление параметров настроек

ПараметрыДанных = НастройкиСКД.ПараметрыДанных.Элементы;

////автор

ПараметрИсполнитель = ПараметрыДанных.Добавить();

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

ПараметрИсполнитель.Использование = Истина;

ПараметрИсполнитель.Значение = ПараметрыСеанса.ТекущийПользователь;

////дата сохранения

ПараметрДатаСохранения = ПараметрыДанных.Добавить();

ПараметрДатаСохранения.Параметр = Новый ПараметрКомпоновкиДанных("ДатаСохранения");

ПараметрДатаСохранения.Использование = Истина;

ПараметрДатаСохранения.Значение = ТекущаяДата();

////комментарий автора

ПараметрКомментарий = ПараметрыДанных.Добавить();

ПараметрКомментарий.Параметр = Новый ПараметрКомпоновкиДанных("Комментарий");

ПараметрКомментарий.Использование = Истина;

ПараметрКомментарий.Значение = КомментарийАвтора;

//оформление

ПараметрыВывода = НастройкиСКД.ПараметрыВывода;

МакетОформления = ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("МакетОформления"));

МакетОформления.Использование = Истина;

МакетОформления.Значение = "Зеленый";

ВыводитьПараметрыДанных = ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВыводитьПараметрыДанных"));

ВыводитьПараметрыДанных.Использование = Истина;

ВыводитьПараметрыДанных.Значение = ТипВыводаТекстаКомпоновкиДанных.Выводить;

//генерация

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

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

ВнешниеНаборыДанных = Новый Структура;

ВнешниеНаборыДанных.Вставить("ТаблицаДанных", ТаблицаДанных);

ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;

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

ДокументРезультат = Новый ТабличныйДокумент;

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

ПроцессорВывода.УстановитьДокумент(ДокументРезультат);

ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

КонецПроцедуры

Так же в этом разделе:
← Содержание ...
 
MyTetra Share v.0.35
Яндекс индекс цитирования