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

41
Делал недавно отчет с неопределенным количеством колонок. Возиться с кодом было неохота, решил сделать на СКД. С этим проблема не возникла, необходимо было натянуть результат на произвольный макет (свой заголовок +... 27
Несмотря на то, изучающие СКД встречаются с этим на первый или второй день, это должно быть в разделе FAQ. Простой пример программного вывода отчета на компоновке, использующий настройки по умолчанию. //Получаем схему из... 18
При формировании отчетов на СКД по умолчанию все группировки развернуты, но бывает что необходимо сразу после формирования показать отчет со свернутыми группировками! Данный код в модуле отчета позволяет свернуть... 10
На этой закладке можно указать, какие осуществляются связи между двумя и более наборами дан-ных, по каким параметрам и условиям..png 1. «Источник связи» - указывается первый набор данных, от... 9
Что при разработке отчетов требуется чтобы у пользователя с ограниченными правами, отчет формировался полностью без проверки прав! Особенно если настроен RLS Есть несколько способов как это сделать: 1. Установить...

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

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

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

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

Сегодня мы дополним отчёт с прошлого урока (вернее его копию) возможностью отобразить те же данные в виде диаграммы.

Ставим цель

  • Сделать копию отчёта с прошлого урока.
  • Вывести те же самые данные в виде диаграммы.
  • При этом сериями (столбцами, ось Y) должны являться продукты, а точками (ось X) - клиенты. Значения столбцов (по оси Y) и будет количество еды, которое заказал данных клиент.

Меняем копию прошлого отчёта

Делаем копию отчёта из прошлого урока под именем "Урок9" и открываем эту копию в конфигураторе базы "Гастроном".

Меняем имя отчёта на "Урок9" и нажимаем кнопку "Открыть схему компоновки данных":

Мы не будем менять наборы данных - наша задача изменить их представление для пользователя.

Поэтому сразу переходим на закладку "Настройки" и обращаем наше внимание на левую колонку с вариантами отчёта.

Мы раньше не работали с этой колонкой, но сегодня я расскажу вам в чём её смысл.

Все настройки которые мы делаем на этой вкладке (при помощи конструктора волшебной палочки или вручную в нижней части) они относятся к одному из вариантов отчёта, который выделен в левой части окна.

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

И вот у нас сейчас есть основной вариант, в настройках которого указано - выводить данные в виде таблицы:

Давайте так переименуем этот вариант (двойным щелчком) и основного в "Таблица":

Добавляем новый вариант отчёта

Теперь при помощи плюсика добавим ещё один вариант (куда мы запихаем настройка вывода данных в виде диаграммы):

Сразу назовём этот вариант "Диаграмма":

Настраиваем новый вариант отчёта

Как видите справа от этого варианта (мы его выделили) пусто, то есть нет никаких настроек. Создадим их при помощи нашей волшебной палочки:

На этот раз выберем тип отчета "Диаграмма...":

В качестве полей для отображения выберем "Количество" (по аналогии с таблицей):

В качестве серий (ось Y) укажем поле "Еда", а в качестве точек (ось X) - поле "Клиенты":

Получилось вот так:

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

Мы видим таблицу... что такое?! А дело в том, что нужно просто выбрать другой вариант отчёта. Нажимаем на кнопку "Выбрать вариант..." и выбираем вариант "Диаграмма":

Диаграмма готова

Ещё раз формируем отчёт:

Отлично, какая красота

Эталонная обработка, после выполнения всех шагов этого урока

В заключении модуля

На этом мы заканчиваем рассмотрение основ системы компоновки данных. Я постарался рассказать и объяснить на простых примерах фундаментальные основы, необходимые новичкам для работы с СКД.

Если у вас в будущем (я советую делать это уже после окончания всей школы ) возникнет потребность в более глубоком изучении системы компоновки данных - есть замечательная книга Е. Ю. Хрусталёвой "Разработка сложных отчётов в 1С:Предприятие 8".

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

Мы отлично поработали, пора отдохнуть!

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

Открываем модуль объекта и создаем предопределенную процедуру ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

Внутри этой процедуры будем собирать данные и формировать отчет.
В процедуре ПриКомпоновкеРезультата отключаем стандартную обработку. СтандартнаяОбработка = Ложь;
Затем формируем таблицу значений произвольным образом. Имена колонок таблицы значений должны совпадать с будущими полями набора данных в СКД.:


Для примера добавим три строки данных. Далее по шагам создаем вывод отчета.

  • Из схемы получаем настройки по умолчанию.

  • В соответствующую переменную отправляем данные о расшифровке.

  • Формируем макет с помощью компоновщика макета.

  • Передаём в макет компоновки схему, настройки и данные расшифровки.

  • Выполняем компоновку с помощью процессора компоновки. Для этого выполняем метод процессора компоновки данных Инициализировать(). В качестве параметров передаём макет компоновки данных, внешние наборы данных (тип: Структура, ключ структуры должен совпадать с именем объекта в схеме компоновки данных, значение - сформированная таблица значений), данные расшифровки.

  • Очищаем поле табличного документа.

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

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

Добавляем ресурсы, если это необходимо. По ним будут считаться итоги. В нашем случае это поля Количество и Сумма.

В закладке Настройки с помощью конструктора настроек формируем вариант отчета по умолчанию

Сохраняем наш отчет. Запускаем его в клиенте и формируем. Пример выполнения отчета СКД с использованием данных из таблицы значений приведен на картинке.


Вот и все. Достаточно просто, не правда ли?

Получившийся отчет для примера можно скачать

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

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

Рассмотрим поэтапное создание подобного отчета и с помощью внешнего набора данных построим его на системе компоновки данных.

Читаем журнал регистрации

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

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

Для получения информации из журнала регистрации будем использовать метод глобального контекста "ВыгрузитьЖурналРегистрации()". В событии "ПриКомпоновкеРезультата" созданного отчета добавим следующий программный код:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь ; // отключаем стандартный вывод отчета - будем выводить программно // Получаем настрокий отчета, в т.ч. период Настройки = КомпоновщикНастроек. ПолучитьНастройки() ; // Получаем настройки отчета ПараметрПериод = КомпоновщикНастроек. ПолучитьНастройки() . ПараметрыДанных. Элементы. Найти(" Период " ) . Значение; ЖурТаб = Новый ТаблицаЗначений; ОтборЖурнала = Новый Структура; // Создадим структуру отбора журнала регистрации // Заполним отбор по периоду ОтборЖурнала. Вставить(" ДатаНачала " , ПараметрПериод. ДатаНачала) ; ОтборЖурнала. Вставить(" ДатаОкончания " , ПараметрПериод. ДатаОкончания) ; // Установим отбор на события МассивСобытий = Новый Массив; МассивСобытий. Добавить(" _$Data$_. Delete . New " ) ; МассивСобытий. Добавить(" _$Data$_. Post " ) ; МассивСобытий. Добавить(" _$Data$_. TotalsPeriodUpdate " ) ; МассивСобытий. Добавить(" _$Data$_. Unpost " ) ; МассивСобытий. Добавить(" _$Data$_. Update " ) ; ОтборЖурнала. Вставить(" Событие " , МассивСобытий) ; // Выгружаем журнал регистрации ВыгрузитьЖурналРегистрации(ЖурТаб, МассивСобытий) ; // Создаем и заполняем данные для вывода в отчет ЖурТаб. Колонки. Добавить(" Время " ) ; ЖурТаб. Колонки. Добавить(" КоличествоСобытий " ) ; Для Каждого Стр Из ЖурТаб Цикл Стр. Время = Час(Стр. Дата) ; Стр. КоличествоСобытий = 1 ; КонецЦикла ; // Группируем результат ЖурТаб. Свернуть(" ИмяПользователя, Время " , " КоличествоСобытий " ) ; // ..............

Первый параметр метода "ВыгрузитьЖурналРегистрации" устанавливает таблицу значений, в которую будет выгружен результат выборки из журнала регистрации. Второй параметр устанавливаем фильтр на выбираемые записи. Филтр представляет собой структуру, ключи в котором - это поля, по которым устанавливается отбор. Мы используем поля "ДатаНачала" и "ДатаОкончания" для установки периода анализа журнала регистрации, а также поле "Событие", в который передаем массив строк (наименований событий). Добавленные в массив события соответствуют действиям на данными в базе.

Подробнее о использовании метода "ВыгрузитьЖурналРегистрации" Вы можете прочитать в синтаксис-помощнике.

Передаем таблицу значений в СКД

Для того, чтобы СКД смогла работать с полученной таблице значений нужно проделать следующий действия:

1) Создать набор данных в схеме компоновки и задать его поля.
2) В программный код модуля "ПриКомпоновкеРезультата" прописать передачу таблицы значений в СКД.

// Группируем результат ЖурТаб. Свернуть(" ИмяПользователя, Время " , " КоличествоСобытий " ) ; ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; // Создаем данные расшифровки КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; // Создаем компоновщик макета // Инициализируем макет компоновки используя схему компоновки данных // и созданные ранее настройки и данные расшифровки СхемаКомпоновкиДанных = ПолучитьМакет(" ОсновнаяСхемаКомпоновкиДанных " ) ; МакетКомпоновки = КомпоновщикМакета. Выполнить (СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки) ; // Скомпонуем результат ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки. Инициализировать(МакетКомпоновки, // !!! Передаем таблицу "ЖурТаб" в процессор компоновки!!! Новый Структура(" ЖурналРегистрации " , ЖурТаб) , ДанныеРасшифровки) ; ДокументРезультат. Очистить() ; // Выводим результат в табличный документ ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода. УстановитьДокумент(ДокументРезультат) ; ПроцессорВывода. Вывести(ПроцессорКомпоновки) ; КонецПроцедуры

3) Настраиваем ресурсы и структуру отчета (подробнее смотри в файле отчета, ссылка на который дана в конце статьи).

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

Итог

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

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

Скачать отчет из примера Вы можете по следующей ссылке .

Понравилось? Лайкни нас на Facebook