Результаты поиска по форма выбора. Особенности создания отчетов (1Cv8) Как загрузить нужные настройки отчета


Здравствуйте, уважаемый читатель! У нас очередной урок по основам системы компоновки. В вы познакомились с функциями языка выражений СКД, увидели особенности работы системы компоновки, а также разобрались с основными настройками полей компоновки. А сейчас мы рассмотрим новый материал. Поехали!

Дополнительные настройки полей СКД.

Колонка «Тип значения» позволяет указать тип данных для поля компоновки. Зачем указывать тип, например для поля «Номенклатура», если итак известно какого он типа? Это необходимо в случае, если поле компоновки составного типа. Можно выбрать определенный тип, тогда при отборе по этому полю будут выбираться значения данного типа.

Колонка «Доступные значения» позволяет указать доступные для выбора значения и ограничить выбор пользователя определёнными рамками.

Колонка «Оформление» позволяет задавать оформление полю компоновки, не используя макеты. Можно указать цвет шрифта, цвет рамки, ориентацию текста и т.д.

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

Вычисляемые поля

На закладке «Вычисляемые поля» компоновки данных можно создавать свои вычисляемые поля.

Зачем нужны вычисляемые поля, если их можно создавать на уровне запроса? Не все поля можно описать с помощью запроса. Если нужно составить сложное поле из разных наборов данных, например типа запрос и объект, тогда без вычисляемых полей не обойтись. Добавить поле компоновки данных нельзя, если источником данных является запрос и стоит автозаполнение, а с помощью вычисляемых можно добавить сколько угодно полей.

В колонке вычисляемого поля «Выражение» нужно написать произвольное выражение, которое использует поля компоновки данных, обращаясь по их пути (колонка «Путь» на закладке «Наборы данных»). Либо можно использовать функции математического преобразования, либо обращаться к функциям общих модулей. Например, запишем в колонке «Путь к данным» название вычисляемого поля «Отклонение», а в поле «Выражение» следующее.

Закладка повторяет пользовательский диалог «Настройка» доступный для настройки пользователем параметров отчета.

Заполнение настроек на этой закладке служит для настройки отчета по-умолчанию в пользователь-ском режиме работы отчета.
Окно для настройки отчета доступно в пользовательском режиме отчета, при этом отличие от на-стройки СКД в конфигураторе в том, что можно использовать значения не предопределенных дан-ных из базы данных.
Окно настроек состоит из основного окна, где выводятся списки группировок, таблиц и диаграмм и набора закладок в которых устанавливаются параметры настроек для объектов указанных в секции группировок. Какие именно редактируются настройки в данный момент мы можем указать нажав на кнопку с надписью о том какой объект мы редактируем:

Возможно, редактировать общие настройки для всего отчета, а нажав на соответствующую кнопку можно редактировать настройки исключительно для выбранного объекта: элемента группировки, таблицы, диаграммы.

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


В таблице присутствуют несколько колонок:
1. «Использование» - галочкой пользователь указывает использовать или не использовать данный параметр для формирования отчета.
2. «Параметр» - имя параметра
3. «Значение параметра» - значением параметра или указание, откуда значение параметра можно извлечь. Например, если сбросить текущее значение, нажав на «Х», то нажав на кнопку «Т» откроется выбор типа параметра в диалоге:

Источником может служить, какое либо значение простого типа Строка, Дата, Число, Булево или ссылка на объект в базе данных. А также источником для данного параметра может быть значение другого параметра, для этого нужно выбрать значение «Поле компоновки данных» и выбрать нужное поле из списка параметров.
Для даты можно назначать автоматические значения для подстановки: «Начало этого дня», «Начало этой недели» и т.д.

Закладка «Выбранные поля»
На этой закладке определяются поля, кроме группировок, которые будут выводиться отчет. На за-кладке два списка с доступными полями и выбранными полями. Кроме полей определенных в наборах данных к выводу доступны параметры и системные поля «Номер по порядку», «НомерПоПорядкуВГруппировке», «Уровень», «УровеньВГруппировке», а также пользовательские поля определенные на закладке «Пользовательские поля».

Переносить поля можно двойным нажатием на название в левом окне или воспользовавшись специальной кнопкой в командной панели. Добавлять можно такие элементы «Новое поле», «Новая группа», «Новое автополе». «Новое поле» - добавляет элемент в котором можно выбрать поле из доступного списка полей. «Новая группа» - можно сгруппировать ряд полей под одной шапкой. «Новое автополе» - используется для того чтобы указать, что поля выводимые для группировок будут выбираться из настроек группировки вышестоящего уровня. Например, определив для всего отчета ряд полей-ресурсов, мы, указав новое автополе для группировок. Удалить элементы можно с помощью кнопки Удалить, передвинуть по позиции с помощью кнопок перемещения. Установкой галочек можно регулировать видимость полей в отчете.
После определения набора полей мы можем отредактировать поля в списке, нужно войти в режим редактирования поля, нажать на кнопку выбор и выбрать из списка нужное поле.

Для ресурсов доступны для выбора уточнения для расчетов реквизита: «% в группе» - используется для расчета доли значения ресурса для всей группировки в группе, т.е. в итоге в группе по совокупности значений ресурса будет 100%; «% общий» - общий процент не зависимо от группы по всем значениям ресурса.
Для полей объектного типа справочник, документ и т.д. возможно указать в выбранные поля реквизит объекта.

Закладка «Отбор»
На этой закладке определяются отборы, которые влияют на результат отчета.


Как и на закладке «Выбранные поля» есть два окна, слева все доступные поля СКД для выбора в отбор, в правом элементы и значения которые влияют на отбор. Добавить новый элемент или группу элементов можно также клавишей Добавить. Удалить элементы можно с помощью кнопки Удалить, передвинуть по позиции с помощью стрелок перемещения. Установкой галочек можно регулировать активность того или иного отбора в отчете. После нажатия кнопки «Подобно» в списке элементов отбора добавляются уточняющие реквизиты отбора: «Режим отображения» и «Представление».

После добавления нового элемента в список отборов для редактирования доступны поля:
«Левое значение» - поле СКД или поле простого типа («Число», «Строка», «Дата», «Булево»), на которое накладывается отбор
«Вид сравнения» - список возможный условий отбора: «Равно», «Не равно», «В списке», «В группе из списка», «В группе», «Не в списке», «Не в группе из списка», «Не в группе», «Со-держит», «Не содержит», «Заполнено», «Не заполнено»
«Правое значение» - значение отбора, соответствует значению поля «Левое значение». В случае если «Вид сравнения» равен «В списке», «В группе из списка», «Не в списке», «Не в группе из списка» то для установки доступен список значений
«Режим отображения» - возможный два варианта «Быстрый доступ» и «Обычный». В случае если установлен «Быстрый доступ» то если это возможно значения для выбора отображаются в виде выпадающего списка, особенно это актуально для небольших редко меняющихся справочников, перечислений или видов характеристик. «Обычный» - способ отображения значений принятый для объектов по-умолчанию в виде формы выбора или списка.
«Представление» - текстовое представление отбора в сокращенном режиме (если не нажата кнопка «Подробно»), а также представление отбора при выводе отчета.
В отборы можно добавлять группы – которые служат для объединения нескольких отборов, по какому либо критерию «И», «ИЛИ», «НЕ».


Например, нужно объединить несколько условий с помощью оператора «И». Для этого нужно в отбор добавить «Группа И» в этой группе перечислить условия. Допускается вложенность групп, с помощью которых можно создавать сложные условия. Кроме «Группа И» доступны «Группа ИЛИ» и «Группа Не». По-умолчанию просто список условий отбора не принадлежащий, какой либо группе соединен между собой с помощью оператора «И».

Закладка «Сортировка»
На данной закладке указываются поля, по которым производится сортировка.


Добавление полей на данной закладке аналогичное тому, как это делается на закладке «Выбранные поля». Единственный параметр, который указывается в выбранных полях сортировки, это направление сортировки.

Закладка «Условное оформление»
На закладке «Условное оформление» мы указываем, какие поля, условия отборов и условия оформления будут применятся при выводе полей в отчет.


«Область» - список полей, на которые влияет условное оформление.

«Отбор» - условия отбора при которых условное оформление действует

Условия отбора указываются также как и на закладке «Отбор» основного окна настройки компоновки.
«Условное оформление» - при заполнении данного поля выводится окно с выбором возможных опций оформления для указанных полей.

Список возможных опций оформления:
Цвет фона - Определяет цвет фона в ячеках
Цвет текста - Определяет цвет текст в ячейках
Цвет в диаграмме - Определяет цвет линий в диа-грамме
Цвет границы - Цвет линий границы
Стиль границы - Типы линий границы
Стиль границы слева - слева
Стиль границы сверху - сверху
Стиль границы справа - справа
Стиль границы снизу - снизу
Шрифт - Вид шрифта, толщина, наклон и т.д.
Отступ - Количество знаков отступа
Авто отступ - Количество знаков отступа, применяется в группировках
Горизонтальное положение - Положение текста в ячейке по горизонтали
Вертикальное положение - Положение текста в ячейке по вертикале
Размещение - Размещение текста который не помещается в ячейку
Ориентация текста - Ориентация текст в градусах (например, 90-поворот перпендикулярно)
Формат - Форматная строка значения
Выделять отрицательные - Признак того чтобы выделять отрицательные значения
Минимальная ширина - Минимальная ширина ячейки в пунктах
Минимальная высота - Минимальная высота ячеки
Максимальная высота - Максимальная высота
Текст - Текст который выводится вместо значения

Закладка «Пользовательские поля»
На данной закладке можно указать пользовательские поля и формулы, по которым поля будут вычисляться.


При нажатии на добавление поля откроется выбор типа пользовательского поля: «Новое поле вы-бор», «Новое поле выражение».
«Поле выбор» - появляется диалог конструирования нового поля выбора. Данное поле будет принимать заданные значения в зависимости от условия отбора заданного в таблице «Варианты».

«Поле выражение» - используется в случае когда, нужно не меняя схемы компоновки вставить вы-числяемые поля. Например, в схеме указаны ресурсы «Количество» и «Сумма». В пользовательском режиме мы хотим вычислить цену. Для этого мы в поле конструирования выражения вставляем формулу:

В пользовательских полях можно использовать выражения из запросов.
Также для обозначения итоговых записей в выражении нужно использовать агрегатные функции СУММА(..), КОЛИЧЕСТВО(), МИНИМУМ(..), МАКСИМУМ(..)

Закладка «Другие настройки»
На закладке «Другие настройки» определяются настройки, которые влияют на расположение группировок, полей выбора, ресурсов и т.д.

Макет оформления Заданные предопределенные макеты оформления
Расположение итогов Параметр влияет на расположение итогов
Расположение полей группировок
Расположение группировок
Расположение реквизитов
Расположение ресурсов
Расположение общих итогов по горизонтали
Расположение общих итогов по вертикали
Тип заголовка полей
Тип диаграммы
Базовое значение
Пропускать базовое значение
Состав подписей
Режим раздвижения
Отображать таблицу данных
Максимальное значение
Минимальное значение
Окантовка
Градиент
Шрифт
Цвет фона
Стиль линии
Размещение легенды
Полосы измерительной диаграммы
Выводить заголовок
Заголовок
Выводить параметры данных
Выводить отбор

Окно настройки группировок


Настройки схемы компоновки данных могут содержать структуру, включающую в себя доступные элементы настроек.
Такими элементами являются:
группировка;
таблица;
диаграмма;
вложенный отчет.

Для группировки доступны следующие настройки:
Флаг использования группировки - если установлен - группировка используется при компоновке;
Поля группировки - набор полей, по которым осуществляется группировка. Каждое поле группировки системы компоновки данных обладает следующими свойствами:
- Флаг использования поля - если установлен - поле используется;
- Поле группировки - путь к данным поля, по которому осуществляется груп-пировка;
- Тип группировки – тип группировки (Иерархия, Только иерархия, Элемен-ты);
- Тип дополнения – необходимость дополнения дат в периоде;
- Начальная дата - начальная дата периода. Может содержать константное зна-чение, либо значение – поле;
- Конечная дата - конечная дата периода. Может содержать константное значе-ние, либо значение - поле;

При выполнении группировки по полю-периоду, в группировку автоматически добавляется родительское поле-период, не являющееся дополнительным периодом, в случае если в роди-тельских группировках не осуществлялась группировка по этому родительскому полю-периоду.
Например, если группировка осуществляется по полю Регистратор, то в группировку авто-матически будет добавлено поле ПериодСекунда.
При этом создание группировок по реквизитам полей-периодов запрещено.

Особенности создания отчетов в 1С v8 в режиме толстого клиента

Как сделать выбор варианта?

  • На панель отчета помещаем кнопку "ВыбратьВариант"
  • На форму помещаем поле "НаДату"

Пример кода: Процедура ДействияФормыВыборВарианта(Кнопка) макет = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); спВарианты = Новый СписокЗначений; Для каждого вариант из макет.ВариантыНастроек Цикл спВарианты.Добавить(вариант.Настройки, вариант.Представление); КонецЦикла;

выбор = спВарианты.ВыбратьЭлемент(); Если выбор = Неопределено Тогда Возврат; КонецЕсли;

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

Сформировать(); КонецПроцедуры

Процедура НаДатуПриИзменении(Элемент) Сформировать(); КонецПроцедуры

Процедура Сформировать() ЭлементыФормы.Результат.Очистить(); КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период", НаДату); СкомпоноватьРезультат(ЭлементыФормы.Результат); КонецПроцедуры

Процедура ПриОткрытии() НаДату = ТекущаяДата(); Сформировать(); КонецПроцедуры

Особенности создания отчетов через СКД

Поэтапное создание отчета

  1. Создать Отчет в узле Отчетов
  2. Создать Макет в отчете, тип которого - Схема компоновки данных
  3. В свойствах отчета установить: Основная схема компоновки данных = Созданный Макет
  4. В свойствах отчета установите подсистему, которой он принадлежит (отчет в Предприятии будет выведен в верхней навигационной панели)
  5. Создать запрос в Макете (пункт: Добавить набор данных - Запрос)
  6. В закладке Параметры у Макета необходимо убрать галочки у всех строк в колонке ОграничениеДоступности - т.е. все параметры будут доступны для редактирования пользователю
  7. В закладке Настройки у Макета необходимо в окне, где выводится узел Отчет, создать новую группировку без указания поля группировки - будет создана детальная строка
  8. В закладке Настройки у Макета, в окне где выводится дополнительный набор закладок, выбрать доп. закладку Параметры - пометить все параметры галочкой и на каждом параметре нажать кнопку Свойства элемента пользовательских настроек, откроется окно настройки параметра, где необходимо поставить галочку - Включать параметр в пользовательские настройки
  9. В закладке Настройки у Макета, в окне где выводится дополнительный набор закладок, выбрать доп. закладку ВыбранныеПоля - там необходимо добавить колонки которые будут выводиться в отчете
  10. Запускайте Предприятие, открывайте отчет, устанавливайте значения параметров, Сформировать (проверьте что выбран Основной вариант формирования отчета)

Как добавить нередактируемый пользователем параметр?

Например, нам нужно установить параметр запроса "Информационная база"

  • В форме макета компоновки на закладке Параметры у нужного параметра снять флаги "Включать в доступные поля" и "Ограничение доступности"
  • В форме макета компоновки на закладке Настройка на подзакладке (внизу) Параметры у нужного параметра снять флаг, открыть свойства (кнопка с гаечным ключом), на этой форме:
    • Снять флаг "Включать в пользовательские настройки"
    • Режим редактирования установить "Недоступный"


  • В модуле формы отчета в обработчике события "ПриЗагрузкеВариантаНаСервере" (можно и ПриОткрытии, но НЕ ПриСозданииНаСервере, т.к. она выполняется ДО загрузки настроек отчета и настройки будут перезаписаны) программно установить параметр:

&НаСервере Процедура ПриЗагрузкеВариантаНаСервере(Настройки)

//Установка параметра Настройки = Отчет.КомпоновщикНастроек.Настройки; Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ИнформационнаяБаза", Отчет.ИнформационнаяБаза); КонецПроцедуры

Как задать варианты отчета?

  • В форме макета компоновки на закладке Настройки в поле слева можно создать необходимые варианты отчета

Как задать группировки?

  • В форме макета компоновки на закладке Настройки в поле справа вверху можно создать необходимые группировки

Как программно вывести отчет?

В модуле формы:

&НаКлиенте Процедура СформироватьОтчетВыполнить()

ЭтаФорма.СкомпоноватьРезультат();

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

Как тестировать отчет?

Нужно выполнить:

  • Сформировать ситуацию в клиентском тесте - удобнее всего через таблицу ситуации
  • получить форму отчета - форма = ПолучитьФорму("Отчет.ДвижениеПроцесов.Форма.ФормаОтчета");
  • загрузить нужный вариант отчета - установить параметр расширения формы отчета "КлючВарианта" (имя настройки в макете компоновки данных)
  • загрузить нужные настройки отчета - ? заполнить параметр расширения формы отчета "ПользовательскиеНастройки" (тип "ПользовательскиеНастройкиКомпоновкиДанных ") так не получилось, все сложно, см. ниже.
  • открыть форму - форма.Открыть()
  • выполнить формирование - форма.СкомпоноватьРезультат();
  • проверить содержимое табличного документа форма.Результат - хорошо бы иметь функции сравнения с эталонной mxl
  • закрыть форму - форма.Закрыть(); - а может быть, можно и не открывать, надо проверить

см. также

  • описание: меню Справка/Синтакс-помощник/закладка Содержание/Интерфейсные объекты управляемого приложения/Расширения управляемой формы/Расширение управляемой формы для отчета/Параметры формы

Как загрузить нужные настройки отчета?

В документации описано, что есть такой параметр расширения формы отчета "ПользовательскиеНастройки" типа "ПользовательскиеНастройкиКомпоновкиДанных", но там очень сложная объектная структура, не удалось её использовать.

Реально работающая схема:

1. Создаём в отчете параметры

  • Период типа СтандартныйПериод
  • Отбор типа СписокЗначений (лучше было бы Структура, но её нет в списке типов параметров, как и произвольного типа)

2. В процедуру ПолучитьФорму передаем нужные параметры:

период = Новый СтандартныйПериод; период.Вариант = ВариантСтандартногоПериода.ПроизвольныйПериод; период.ДатаНачала = текущаяДата; период.ДатаОкончания = завтрашняяДата;

отбор = Новый СписокЗначений; отбор.Добавить(Тестирование.ПолучитьОбъект(стСитуация, "БП1"), "БизнесПроцесс");

стПараметры = Новый Структура("КлючВарианта,Период,Отбор", "Основной", период, отбор); // ОткрытьФормуМодально("Отчет.ДвижениеПроцессов.Форма.ФормаОтчета", стПараметры); форма = ПолучитьФорму("Отчет.ДвижениеПроцессов.Форма.ФормаОтчета", стПараметры);

3. В обработчиках событий формы устанавливаем параметры

&НаСервере Функция спПолучить(спСписок, представление) Экспорт Для Каждого элемент Из спСписок Цикл Если элемент.Представление = представление Тогда Возврат элемент.Значение; КонецЕсли; КонецЦикла; Возврат Неопределено; КонецФункции

&НаСервере Процедура УстановитьЗначениеПользовательскойНастройки(Настройки, Имя, Значение) Для Каждого элемент Из Настройки.Элементы Цикл Если ТипЗнч(элемент) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда Если Строка(элемент.Параметр) = Имя Тогда элемент.Значение = Значение; элемент.Использование = Истина; КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры

&НаСервере Процедура УстановитьЗначениеПользовательскогоОтбора(Настройки, Имя, Значение) Для Каждого элемент Из Настройки.Элементы Цикл Если ТипЗнч(элемент) = Тип("ОтборКомпоновкиДанных") Тогда Для Каждого отбор Из элемент.Элементы Цикл Если Строка(отбор.ЛевоеЗначение) = Имя Тогда отбор.ПравоеЗначение = Значение; отбор.Использование = Истина; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; КонецПроцедуры

&НаСервере Процедура ПриЗагрузкеВариантаНаСервере(Настройки)

НаименованиеТекущегоВарианта = ПредставлениеТекущегоВарианта;

Настройки = Отчет.КомпоновщикНастроек.Настройки; Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ИнформационнаяБаза", Отчет.ИнформационнаяБаза);

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

&НаСервере Процедура ПриЗагрузкеПользовательскихНастроекНаСервере(Настройки) Настройки = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки;

<> "00010101" Тогда Настройки = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки; УстановитьЗначениеПользовательскойНастройки(Настройки, "Период", Параметры.Период); КонецЕсли;

ссБизнесПроцесс = спПолучить(Параметры.Отбор, "БизнесПроцесс"); Если ссБизнесПроцесс <> Неопределено Тогда УстановитьЗначениеПользовательскогоОтбора(Настройки, "БизнесПроцесс", ссБизнесПроцесс); КонецЕсли;

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

Замечания:

  • Есть ПараметрыДанных, то есть то что устанавливается в параметры запроса СКД
  • Некоторые из них назначаются в настройке варианта в ПользовательскиеНастройки (в свойтсвах параметра есть флаг "Включить в пользовательские настройки"
  • Даже если при загрузке на сервере в параметры данных загрузить нужные значения, потом открывается форма, в которую автоматически загружаются сохраненные в прошлый раз настройки. Эти настноки при формировании отчета "перебивают" настройки данных
  • В обработчике ПриЗагрузкеПользовательскихНастроекНаСервере передаваемый объект Настройки является копией реальных настроек, поэтому чтобы изменить настройки, которые появятся на форме, надо заполнять объект Отчет.КомпоновщикНастроек.ПользовательскиеНастройки

Как сделать множественные (списком) параметры запроса в СКД?

В запросе нужно использовать выражение "В (&ИмяПараметра)" (см. Логические выражения в языке запросов 1Cv8)

В настройке макета схемы СКД на закладке "Параметры" для этого параметра надо поставить галочку в колонке "Доступен список значений". В этом случае при выборе параметра СКД выдает форму редактирования списка, в которой можно добавить любое значение параметров.

Как сделать отключаемые параметры запроса в СКД?

В запросе СКД надо использовать конструкции, окруженные фигурными скобками "{}" .

Если галочка в форме отчета (панель быстрой настройки) у соответствующего параметра снята, то эта конструкция убирается из запроса.

Подробнее см. Расширение языка запросов для системы компоновки данных (1Cv8)

Как сделать отчет с разворотом по колонкам?

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

После этого в узле "Таблица" появляются ветки "Строки" и "Колонки", куда и добавляются нужные группировки.

Как настроить формат вывода полей?

В редакторе макета компоновки данных на закладке "Наборы данных" в правой верхней области есть список полей отчёта.

Есть две возможности:

  1. Настроить значение колонки "Выражение представления"
    • здесь можно ввести выражение языка, выдающее нужную строку
    • с полям ресурсов это не работает
  2. Настроить значение колонки "Оформление"
    • в оформлении есть свойство "Формат" - это значение, аналогичное параметру функции языка "Формат", можно задать нужный вид
    • преобразование типов здесь не сделать

Для полей ресурсов можно задавать выражения вычисления (закладка "Ресурсы") - например,

Сумма(Время)/3600.0

для перевода из секунд в часы.

Нужную точность можно задать через "Оформление" поля на закладке "Наборы данных".

Особенности установки параметров системы компоновки данных

Существуют и требуют различной обработки по крайней мере ТРИ вида параметров:

ПараметрыДанных

ПараметрыДанных определяются в запросе (источнике данных) СКД.

Параметры данных передаются в запрос источника данных и определяют извлекаемые данные.

В объекта КомпоновщикНастроек есть специальное свойство для работы с параметрами данных КомпоновщикНастроек.Настройки.ПараметрыДанных

Можно установить вызовом вида

Настройки = Отчет.КомпоновщикНастроек.Настройки; Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ИнформационнаяБаза", Отчет.ИнформационнаяБаза);

Отбор

Отборы накладываются на полученные данные после извлечения из источника данных.

В объекта КомпоновщикНастроек есть специальное свойство для работы с отборами КомпоновщикНастроек.Настройки.Отбор .

Например: Настройки = Отчет.КомпоновщикНастроек.Настройки; Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ИнформационнаяБаза", Отчет.ИнформационнаяБаза);

Для каждого элемент Из Параметры.Отбор Цикл ЭлементОтбора = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(элемент.Представление); ЭлементОтбора.ПравоеЗначение = элемент.Значение; КонецЦикла;

ПользовательскиеНастройки

Пользовательские настройки определяют данные, которые пользователь может настроить на форме.

Пользовательские настройки могут отображаются на форме в специальной таблице и могут быть вызваны по кнопке "Настройки" и из меню "Все действия".

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

Пока не нашлось ничего лучшего, как устанавливать значения существующей коллекции по индексу , что само собой может отъехать при изменении макета СКД в визуальном редакторе.

Кроме того, если какой-то параметр данных объявлен пользовательским, то программной установки параметра данных (см.выше) недостаточно, восстанавливаемое значение пользовательской настройки перебивает установку параметра данных. Поэтому для таких параметров нет смысла устанавливать параметр данных , нужно сразу устанавливать пользовательскую настройку .

Удобное место для установки нужных значений - обработчик события "ПриЗагрузкеПользовательскихНастроекНаСервере" расширения формы отчёта.

&НаСервере Процедура ПриЗагрузкеПользовательскихНастроекНаСервере(Настройки)

Если Параметры.Период.ДатаОкончания <> "00010101" Тогда Настройки = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки; Настройки.Элементы.Значение = Параметры.Период; КонецЕсли;

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

Использование источника данных в виде объекта

Для использования набора данных типа объект нужно передать внешний источник данных методу Инициализировать объекта "Процессор компоновки данных".

ДанныеРасшифровки = Неопределено;

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

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

Простой пример приложен (для работы примера необходимо наличие справочников "Контрагенты" и "Договоры контрагентов").

Внимание! Перед вами ознакомительная версия урока, материалы которого могут быть неполными.

Войдите на сайт как ученик

Войдите как ученик, чтобы получить доступ к материалам школы

Система компоновки данных 1С 8.3 для начинающих: делаем связь наборов данных

  • Написать отчёт, который выводит клиентов и их любимые продукты. У каждого клиента есть любимый цвет, а у каждого продукта свой цвет - вот на основании этих цветов и нужно определять "любимость" продукта. К примеру, если у Андрея любимый цвет красный, то одним из его любимых продуктов будут помидоры (они красного цвета).
  • Применить в отчёте два набора данных. Первый набор - это данные из таблицы справочника "Клиенты". Второй - данные из таблицы справочника "Еда".
  • Осуществить связь этих двух наборов , чтобы в отчёте остались только любимые продукты для каждого из клиентов.

Создаем новый отчет

Открываем базу "Гастроном" в конфигураторе и через главное меню создаём новый отчет:

Вид документа - "Внешний отчет":

В форме нового отчёта указываем имя "Урок6" и нажимаем кнопку "Открыть схему компоновки данных":

Оставляем имя схемы по умолчанию:

Добавляем первый набор данных

В открывшейся схеме переходим на закладку "Наборы данных" и через зелёный плюсик выбираем "Добавить набор данных - запрос":

Вызываем конструктор запроса:

Указываем таблицу "Клиенты" и поля, которые требуется получить из запроса:

Добавляем второй набор данных

Добавляем второй набор данных:

Выделяем его (НаборДанных2) и снова вызываем конструктор запроса:

Указываем таблицу справочника "Еда" и поля, которые требуется получить из запроса:

Получился такой текст запроса:

Обратите внимание, что у нас сейчас в отчёте присутствуют два набора данных: НаборДанных1 и НаборДанных2. У каждого свой текст запроса и свои данные.

Делаем имена более наглядными

Для наглядности, давайте переименуем НаборДанных1 в Клиенты, а НаборДанных2 в Еда.

Сделайте это двойным щелчком по каждому из наборов:

Данные каждого из наборов мы сможем использовать в нашем отчёте. К этим данным мы будем обращаться через поля.

В данный момент у набора "Клиенты" следующие поля: "Наименование" и "ЛюбимыйЦвет", а у набора "Еда": "Наименование" и "Цвет".

Видим, что имена пересекаются и мы легко запутаемся. Поэтому давайте изменим имена полей на более говорящие.

Выделяем набор "Клиенты" и меняем имена полей так:

Затем выделяем набор "Еда" и меняем имена полей так:

Вызываем конструктор настроек

Наконец, переходим на закладку "Настройки" и нажимаем волшебную палочку, чтобы вызвать конструктор настроек:

Тип отчета - "Список...":

Выбираем поля для отчета из обоих наборов:

Видите почему так важно было изменить имена полей? На этапе настроек компоновки данных мы не видим из каких наборов эти поля. Видим только их имена.

Проверяем отчёт

Сохраняем отчет и формируем в режиме пользователя:

Ага. Хорошо, но не совсем. Произошло так называемое перекрёстное соединение двух наборов (вам это должно быть хорошо знакомо по соединениям в запросах, которые мы изучали в прошлых модулях). Каждой записи из таблицы "Клиенты" сопоставлена запись из таблицы "Еда".

Но нам нужно из всех этих записей оставить только те у которых поле "ЛюбимыйЦветКлиента" равно полю "ЦветЕды":

Осуществляем связь двух наборов данных

Для этого осуществим связь двух наборов данных (Клиенты и Еда) по полям ЛюбимыйЦветКлиента и ЦветЕды.

Переходим на закладку "Связи наборов данных" и нажимаем на кнопку-плюсик, чтобы добавить новую связь:

Настраиваем параметры как на рисунке ниже:

Сделаю пояснения.

Источник и приёмник связи. Ну тут всё понятно. Указываем первый набор (Клиенты) и второй набор (Еда) данных. Хочу обратить особое внимание, что связь будет осуществляться по принципу внешнего левого соединения (мы его проходили в теме запросов в прошлых модулях). Исходя из этого и нужно выбирать какой набор будет источником, а какой приёмником.

Выражение источник. Указываем здесь выражение или просто поле из набора данных источника (мы здесь указали поле ЛюбимыйЦветКлиента из набора Клиенты).

Выражение приемник. Указываем здесь выражение или просто поле из набора данных приёмника (мы здесь указали поле ЦветЕды из набора Еда).

Таким образом данная связь оставит из прошлого списка только те строки, у которых поле ЛюбимыйЦветКлиента равно полю ЦветЕды.

Сохраним отчёт и запустим в режиме пользователя:

Отлично!

Сделаю пояснение про поле "Условие связи ", об которое так часто бьют свои копья начинающие программисты.

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

В этом случае для всех строк из источника связи перед осуществлением связи будет проверяться это выражение (условие связи). И если это выражение равно ИСТИНА, то будет предприниматься попытка установить связи этой строки со строками из приемника связи. Если же выражение равно ЛОЖЬ, то таких попыток предприниматься не будет.