При изучении основ разработки в системе 1С:Предприятие, особенно на этапе прохождения практических пособий (например, курса Радченко и Хрусталевой), часто возникает задача создания аналитических инструментов. В данном материале мы подробно разберем, как реализовать механизм, генерирующий список самых востребованных мастеров компании с указанием количества оказанных ими услуг за произвольный период времени. Мы проанализируем выбор правильного объекта конфигурации, логику построения запроса и использование современных инструментов платформы.
Первым делом выясним, какой именно объект конфигурации подходит для решения нашей задачи. В процессе обсуждения на форумах часто возникают споры: использовать ли Документ, Обработку или Отчет. Проанализируем ситуацию: документы в 1С предназначены для регистрации фактов хозяйственной деятельности, а не для их анализа. Использование документа для вывода списка — это методологическая ошибка.
Рассмотрим правильный вариант. Для анализа накопленных данных и представления их пользователю в удобном виде идеально подходит объект Отчет. Именно отчеты позволяют не только собрать информацию из регистров, но и гибко настроить группировки, сортировки и визуализацию (например, в виде диаграмм). Поэтому добавим в нашу конфигурацию новый объект типа Отчет и назовем его, например, РейтингМастеров.
Разберем по шагам создание отчета с помощью самого мощного инструмента платформы — Системы компоновки данных. Это позволит нам минимизировать написание кода и обеспечить высокую производительность. После создания объекта Отчет нажмем кнопку «Открыть схему компоновки данных».
В схеме нам необходимо добавить «Набор данных - запрос». Посмотрим на пример логики запроса, который ляжет в основу нашего отчета. Для корректного подсчета востребованности нам нужно обратиться к данным регистра накопления, где фиксируются оказанные услуги. Предположим, это РегистрНакопления.ОказанныеУслуги.
Важный нюанс: вместо обращения к основной таблице регистра, мы будем использовать виртуальную таблицу оборотов. Это значительно ускорит работу системы, так как данные об итогах уже предварительно рассчитаны платформой.
Пример запроса в конструкторе будет выглядеть следующим образом:
ВЫБРАТЬ ПЕРВЫЕ 10
ОказанныеУслугиОбороты.Мастер КАК Мастер,
ОказанныеУслугиОбороты.КоличествоОборот КАК КоличествоУслуг
ИЗ
РегистрНакопления.ОказанныеУслуги.Обороты(&НачалоПериода, &КонецПериода, , ) КАК ОказанныеУслугиОбороты
УПОРЯДОЧИТЬ ПО
КоличествоУслуг УБЫВ
Проанализируем ключевые части нашего запроса, чтобы понять, как он решает поставленную задачу:
Обороты.Обороты автоматически предоставляет эти параметры. Это позволяет пользователю формировать отчет за «произвольный период времени», как и требовалось в задании.Выясним, как сделать отчет удобным для пользователя. На вкладке «Ресурсы» в СКД необходимо выбрать поле КоличествоУслуг и указать функцию СУММА. Это гарантирует правильный подсчет итогов при любых группировках.
На вкладке «Параметры» мы увидим автоматически созданные параметры периода. Чтобы пользователь мог легко их изменять, установим для них свойство «Включать в пользовательские настройки». Рассмотрим подробнее настройки на закладке «Настройки»:
Мастер).Мастер и КоличествоУслуг.КоличествоУслуг (по убыванию).Посмотрим на задачу шире. Чтобы наш отчет был действительно полезным для бизнеса, мы можем добавить в него графическую составляющую. Система компоновки данных позволяет в один клик добавить второй вариант настройки — «Диаграмму». Проанализируем ситуацию: руководитель гораздо быстрее оценит востребованность мастеров, если увидит гистограмму, где высота столбца соответствует количеству оказанных услуг.
После завершения настроек в конфигураторе, не забудьте включить отчет в соответствующую Подсистему (например, «Оказание услуг»). Это обеспечит появление отчета в интерфейсе приложения у конечного пользователя.
Таким образом, для реализации задачи из 14 занятия практического пособия мы выполнили следующие действия:
Отчет.Обороты регистра накопления.ПЕРВЫЕ и сортировку УБЫВ для определения лидеров.Этот подход является наиболее эффективным и правильным с точки зрения архитектуры 1С:Предприятия 8.3, так как он использует встроенные механизмы анализа данных и оптимизированные запросы к базе данных.