Книга: Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных
Назад: Заполнение наборов данных и компоновка отчета
Дальше: Описание схемы компоновки данных

Настройка отчета

Теперь продемонстрируем возможность программной настройки нашего отчета. Для этого сначала удалим все настройки, которые мы сделали в схеме компоновки данных.

СОВЕТ

Советуем перед удалением настроек сохранить схему компоновки данных в файл.

На закладке Настройки нажмем кнопку (Заменить настройки стандартной настройкой), расположенную вверху командной панели окна настроек. На запрос конфигуратора о подтверждении потери текущих настроек ответим утвердительно. В результате все сделанные нами настройки будут очищены, а мы восстановим их программным образом.

В модуле формы документа откроем функцию АнализЦенДокумента() и отредактируем фрагмент кода следующим образом (листинг 2.62).

Листинг 2.62. Фрагмент функции «АнализЦенДокумента()»

СхемаКомпоновкиДанных = ДокументОбъект.ПолучитьМакет("АнализЦенКомплектующих");

// Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;

Настройки = УстановитьНастройки(СхемаКомпоновкиДанных);

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

Как видим, мы закомментировали использование стандартных настроек схемы компоновки данных АнализЦенКомплектующих и добавили вызов функции УстановитьНастройки(), которая будут возвращать программно установленные настройки схемы компоновки данных. В функцию передается схема компоновки данных АнализЦенКомплектующих, содержащаяся в макете документа.

Функцию УстановитьНастройки() будем вносить и комментировать по частям для лучшего восприятия материала. Сначала получим настройки по умолчанию схемы компоновки данных, которые мы предварительно очистили. Создадим группировку по полю Номенклатура и назначим для нее автовыбор полей (листинг 2.63).

Листинг 2.63. Процедура программной установки настроек

&НаСервере

Функция УстановитьНастройки(СхемаКомпоновкиДанных)

 

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

 

ГруппировкаНоменклатура =

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

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

ПолеНоменклатура = ГруппировкаНоменклатура.ПоляГруппировки.Элементы.Добавить(

Тип("ПолеГруппировкиКомпоновкиДанных"));

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

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

ВыбранныеПоляДляНоменклатуры = ГруппировкаНоменклатура.Выбор.Элементы.Добавить(

Тип("АвтоВыбранноеПолеКомпоновкиДанных"));

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

В общем списке выбранных полей создадим группу Поступило и добавим в нее поля Поступило с заголовком Количество и ЦенаПриход с заголовком Цена. Затем создадим группу Собрано и добавим в нее поля Собрано с заголовком Количество и ЦенаСборки с заголовком Цена. Затем в общий список выбранных полей добавим поле Выручка (листинг 2.64).

Листинг 2.64. Процедура программной установки настроек

ГруппаВыбранныхПолей = Настройки.Выбор.Элементы.Добавить(

Тип("ГруппаВыбранныхПолейКомпоновкиДанных"));

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

ГруппаВыбранныхПолей.Заголовок = "Поступило";

Поле1 = ГруппаВыбранныхПолей.Элементы.Добавить(

Тип("ВыбранноеПолеКомпоновкиДанных"));

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

Поле1.Заголовок = "Количество";

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

Поле2 = ГруппаВыбранныхПолей.Элементы.Добавить(

Тип("ВыбранноеПолеКомпоновкиДанных"));

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

Поле2.Заголовок = "Цена";

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

 

ГруппаВыбранныхПолей = Настройки.Выбор.Элементы.Добавить(

Тип("ГруппаВыбранныхПолейКомпоновкиДанных"));

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

ГруппаВыбранныхПолей.Заголовок = "Собрано";

Поле1 = ГруппаВыбранныхПолей.Элементы.Добавить(

Тип("ВыбранноеПолеКомпоновкиДанных"));

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

Поле1.Заголовок = "Количество";

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

Поле2 = ГруппаВыбранныхПолей.Элементы.Добавить(

Тип("ВыбранноеПолеКомпоновкиДанных"));

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

Поле2.Заголовок = "Цена";

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

 

ВыбранныеПоля = Настройки.Выбор.Элементы.Добавить(

Тип("ВыбранноеПолеКомпоновкиДанных"));

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

ВыбранныеПоля.Заголовок = "Выручка";

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

Настроим параметры вывода Заголовок и ВертикальноеРасположениеОбщихИтогов. Обратите внимание, что названия некоторых параметров вывода не совпадают с названиями в окне настроек схемы компоновки данных. Список имен параметров для программного использования можно увидеть в разделе синтакс-помощника Общие объектыСистема компоновки данныхНастройки компоновки данныхЗначенияПараметровВыводаКомпоновкиДанных (листинг 2.65).

Листинг 2.65. Процедура программной установки настроек

Настройки.ПараметрыВывода.УстановитьЗначениеПараметра(

"ВертикальноеРасположениеОбщихИтогов",

РасположениеИтоговКомпоновкиДанных.Нет);

Настройки.ПараметрыВывода.УстановитьЗначениеПараметра(

"Заголовок","Анализ цен комплектующих");

 

Возврат Настройки;

 

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

Чтобы продемонстрировать программную настройку отбора, уберем отбор по виду номенклатуры на уровне запроса для набора данных ЦеныСборки. В модуле формы документа откроем функцию АнализЦенДокумента() и отредактируем фрагмент кода следующим образом (листинг 2.66).

Листинг 2.66. Фрагмент функции «АнализЦенДокумента()»

|ГДЕ

|Номенклатура в (&СписокНоменклатуры)";

//|Номенклатура.ВидНоменклатуры = &ВидНоменклатуры";

Запрос.УстановитьПараметр("СписокНоменклатуры",

ПереченьНоменклатуры.ВыгрузитьКолонку("Номенклатура"));

// Запрос.УстановитьПараметр("ВидНоменклатуры",

Перечисления.ВидыНоменклатуры.Материалы);

Как видим, мы закомментировали использование в отборе параметра ВидНоменклатуры. Запустим «1С:Предприятие». Откроем документ СборкаКомпьютера. Нажмем кнопку Анализ цен. В отчете будет присутствовать услуга Сборка компьютера, которой не должно быть по условию задачи. Поэтому мы добавим отбор в функцию УстановитьНастройки() так, чтобы в отчет попадала только номенклатура из группы Комплектующие, и отключим вывод информации об отборе (листинг 2.67).

Листинг 2.67. Процедура программной установки настроек

ЭлементОтбора = Настройки.Отбор.Элементы.Добавить(

Тип("ЭлементОтбораКомпоновкиДанных"));

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

ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВИерархии;

ЭлементОтбора.ПравоеЗначение =

Справочники.Номенклатура.НайтиПоНаименованию("Комплектующие");

Настройки.ПараметрыВывода.УстановитьЗначениеПараметра("ВыводитьОтбор",

ТипВыводаТекстаКомпоновкиДанных.НеВыводить);

 

Возврат Настройки;

 

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

Проверим результат. Вид отчета в точности соответствует разработанному ранее в схеме компоновки данных отчету (см. рис. 2.313).

Назад: Заполнение наборов данных и компоновка отчета
Дальше: Описание схемы компоновки данных