Скд внешний источник данных, грузим из тз и далее получаем остатки на каждый документ. СКД и внешние источники данных. Набор данных — объект Внешний набор данных скд управляемые формы
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) Настраиваем ресурсы и структуру отчета (подробнее смотри в файле отчета, ссылка на который дана в конце статьи).
На этом настройки отчета завершены и мы можем запустить его в режиме предприятия.
Итог
Внешний источник данных в СКД позвляет использовать в отчетах данные практически из любых источников, влючая те, данные которых мы не сможем получить запросами.
Использование СКД для таких источников позволяет создавать отчеты с гибкиой системой настроек, а также дает возможность пользователю изменять вывод отчета, его структуру. Все возможности системы компоновки данных будут задействованы для таких источников в полной мере.
Скачать отчет из примера Вы можете по следующей ссылке .