Интернет Windows Android

1с скд внешний набор данных. Скд внешний источник данных, грузим из тз и далее получаем остатки на каждый документ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Итог

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

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

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

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

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

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

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

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

Ставим цель

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Различают несколько видов наборов данных:

  • Запрос;
  • Объект;
  • Объединение .

Запрос – это обычный 1с-запрос только язык запросов немного расширен. Для удобства можно использовать конструктор запроса.

Объект – внешний набор данных, например таблица значений.

Объединение – объединение нескольких наборов данных типов запрос и объект.

В данной статье мы кратко пробежимся по всем вкладкам конструктора схемы компоновки данных. Наборы данных На данной вкладке можно создать неограниченное количество наборов данных. Набор данных – это источник получения данных. Различают несколько видов наборов данных: Запрос; Объект; Объединение. Запрос – это обычный 1с-запрос только язык запросов немного расширен. Для удобства можно использовать конструктор запроса. Объект – внешний набор данных, например таблица значений. Объединение – объединение нескольких наборов данных типов запрос и объект. Связи наборов данных На данной вкладке описываются связи наборов данных. Тут можно указать какие наборы данных связывать и по каким полям и с какими параметрами. Самое главное, что нужно запомнить: в схеме компоновки данных, при связывании наборов всегда используется Левое соединение! Вычисляемые поля На данной вкладке можно создавать дополнительные поля, не описанные на вкладке Наборы данных. В качестве выражений для расчета можно использовать язык выражений компоновки данных, поля из основных наборов данных, а также функции не глобальных общих модулей. Ресурсы Ресурсы – это итоговые данные по группировкам. На вкладке можно назначить ресурсом поля из наборов данных, а также из вычисляемых полей. Также для ресурсов указывается выражение, по которому они рассчитываются, и возможно указание группировки по которой будет рассчитываться выражение для ресурсов. На основании значений ресурсов также рассчитываются общие итоги отчета. Параметры Параметры данных, как правило, используются в наборе данных запрос. Все параметры, описанные в запросе, появляются на вкладке Параметры. На данной вкладке можно указать заголовок, доступные типы, доступные значение и некоторые другие вещи. Подробнее о параметрах чуть позже. Макеты По умолчанию макет сформированного отчета генерируется автоматически системой компоновки данных. Но в системе также имеется возможность разработчику самому оформлять отдельные области отчета(полей, группировок, ресурсов…). Все макеты отдельных областей, созданные на данной вкладке, привязаны только к текущему отчету. Вложенные схемы Вложенные схемы используются в случаях когда данные одного отчета необходимо использовать в другом. Другими словами мы “встраиваем” одну схему компоновки данных в другую, указывая связь по общему полю. Пример использования вложенных схем можно посмотреть в этой статье. Настройки На данной вкладке разработчик создает стандартные настройки формирования отчета. В верхней части окна задается иерархическая структура. Структура формирования отчета может состоять из следующих элементов: Группировка; Таблица; Диаграмма; Вложенная схема В нижнем части окна задаются настройки для всего отчета и для каждого элемента структуры отчета. Кратко в вкладках настроек: Выбранные поля – список полей выводимых в отчет; Отбор – всевозможные отборы записей отчета; Порядок – сортировка записей в отчете; Параметры данных – значение параметров отчета; Пользовательские поля – дополнительные поля отчета, создаваемые пользователем; Условное оформление – задается условное оформление записей отчета; Другие настройки – всевозможные дополнительные настройки такие как: заголовок отчета, макет оформления, расположение полей и тд....

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

Чтобы объединить два или более набора данных в СКД, необходимо на закладке Наборы данных предварительно создать специальный набор данных — объединение


Получаем вот такую картину


И уже в этот созданный объект добавляем наборы, которые будут непосредственно объединяться. Давайте добавим два набора данных. Один из которых будет запрос, а второй для разнообразия — объект (внешний источник данных). Вот так:


В качестве примера рассмотрим объединение наборов данных с остатками товаров.

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


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


Делаем простейший запрос

ВЫБРАТЬ ОстаткиТоваров.Товар.Представление КАК Товар, ОстаткиТоваров.КоличествоОстаток КАК Остатки {ВЫБРАТЬ Товар, Остатки} ИЗ РегистрНакопления.ТоварыОстатки.Остатки КАК ОстаткиТоваров

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

Теперь обратимся непосредственно к данным
В регистре накопления у меня хранятся следующие остатки товаров

а во внешнем источнике данных вот такая картина

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


В результате выполнения отчета с такими настройками СКД получаем вот такую таблицу

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


И теперь получаем результат без задвоенных строк.