Пример программного создания схемы СКД
Функция СоздатьСхемуКомпоновки() Экспорт
СхемаСКД = Новый СхемаКомпоновкиДанных;
ИсточникДанных = СхемаСКД.ИсточникиДанных.Добавить();
ИсточникДанных.Имя = "ИсточникДанных";
ИсточникДанных.ТипИсточникаДанных = "local";
НаборДанных = СхемаСКД.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных"));
НаборДанных.Имя = "Данные";
НаборДанных.ИмяОбъекта = "Данные";
НаборДанных.ИсточникДанных = "ИсточникДанных";
Настройки = СхемаСКД.НастройкиПоУмолчанию;
Группировка = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
Группировка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
Параметр = СхемаСКД.Параметры.Добавить();
Параметр.Имя = "Период";
Параметр.ТипЗначения = Новый ОписаниеТипов("СтандартныйПериод");
Для каждого СтрокаТЗ из Поля Цикл
ТипЗначения = ЗначениеИзСтрокиВнутр(СтрокаТЗ.ТипЗначения);
Если СтрокаТЗ.Ресурс Тогда
Поле = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
Поле.Поле = СтрокаТЗ.Имя + "Тек";
Поле.ТипЗначения = ТипЗначения;
Поле.Заголовок = Представление(СтрокаТЗ) + " (тек)";
Поле.ПутьКДанным = СтрокаТЗ.Имя + "Тек";
Поле = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
Поле.Поле = СтрокаТЗ.Имя + "Др";
Поле.ТипЗначения = ТипЗначения;
Поле.Заголовок = Представление(СтрокаТЗ) + " (др)";
Поле.ПутьКДанным = СтрокаТЗ.Имя + "Др";
ВычисляемоеПоле = СхемаСКД.ВычисляемыеПоля.Добавить();
ВычисляемоеПоле.ПутьКДанным = "Разница" + СтрокаТЗ.Имя;
ВычисляемоеПоле.Выражение = "ЕстьNULL(" + СтрокаТЗ.Имя + "Тек, 0) - ЕстьNULL(" + СтрокаТЗ.Имя + "Др, 0)";
ВычисляемоеПоле.ТипЗначения = ТипЗначения;
ВычисляемоеПоле.Заголовок = "Разница (" + Представление(СтрокаТЗ) + ")";
ПолеИтога = СхемаСКД.ПоляИтога.Добавить();
ПолеИтога.ПутьКДанным = СтрокаТЗ.Имя + "Тек";
ПолеИтога.Выражение = "Сумма(" + СтрокаТЗ.Имя + "Тек)";
ПолеИтога = СхемаСКД.ПоляИтога.Добавить();
ПолеИтога.ПутьКДанным = СтрокаТЗ.Имя + "Др";
ПолеИтога.Выражение = "Сумма(" + СтрокаТЗ.Имя + "Др)";
ПолеИтога = СхемаСКД.ПоляИтога.Добавить();
ПолеИтога.ПутьКДанным = "Разница" + СтрокаТЗ.Имя;
ПолеИтога.Выражение = "Сумма(Разница" + СтрокаТЗ.Имя + ")";
Группа = Настройки.Выбор.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных"));
Группа.Расположение = РасположениеПоляКомпоновкиДанных.Горизонтально;
Группа.Заголовок = Представление(СтрокаТЗ);
Группа.Использование = Истина;
ВыбранноеПоле = Группа.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных(СтрокаТЗ.Имя + "Тек");
ВыбранноеПоле.Заголовок = "Текущая";
ВыбранноеПоле.Использование = Истина;
ВыбранноеПоле = Группа.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных(СтрокаТЗ.Имя + "Др");
ВыбранноеПоле.Заголовок = "Другая";
ВыбранноеПоле.Использование = Истина;
ЭлементОформления = Настройки.УсловноеОформление.Элементы.Добавить();
ЭлементОформления.Использование = Истина;
УстановитьОформления(ЭлементОформления.Оформление);
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Разница" + СтрокаТЗ.Имя);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ЭлементОтбора.ПравоеЗначение = 0;
ЭлементОтбора.Использование = Истина;
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Использование = Истина;
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных(СтрокаТЗ.Имя + "Тек");
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Использование = Истина;
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных(СтрокаТЗ.Имя + "Др");
Иначе
Поле = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
Поле.Поле = СтрокаТЗ.Имя;
Поле.Заголовок = Представление(СтрокаТЗ);
Поле.ПутьКДанным = СтрокаТЗ.Имя;
Поле.ТипЗначения = ТипЗначения;
ВыбранноеПоле = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных(СтрокаТЗ.Имя);
ВыбранноеПоле.Использование = Истина;
КонецЕсли;
КонецЦикла;
Возврат СхемаСКД;
КонецФункции
Создание схемы компоновки данных программно
Выгрузить схему компоновки данных (скд) в файл/строку
Добавить элемент в обычную форму
Чтение файла XML в объект XDTO по схеме *.xsd