Вывод нескольких диаграмм в одном отчете СКД с учетом введенных отборов

03.10.23

Разработка - Работа с интерфейсом

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

Задача выглядит так: у фирмы несколько складов, с каждого склада происходит отпуск товара покупателям. У каждого отпуска товара указан вид доставки (самовывоз, централизованная доставка, Ж/Д транспорт).

Требуется вывести отчет СКД в виде круговой диаграммы для каждого склада по количеству и видам доставок.

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

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

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

 

 

На вкладке Ресурсы в СКД добавим ресурс «КоличествоДоставок». Настроим вывод отчета в виде диаграммы, в качестве точек выберем СпособДоставки, в качестве серий Склады.

На вкладке Другие настройки выберем Тип диаграммы «Круговая», состав подписей «Серия+значсение+процент», размещение легенды «нет», расположение ресурсов в диаграмме «Авто».

Удаляем кнопку Сформировать с формы отчета и добавляем на форму новую кнопку, называем ее ДействиеСформировать, в свойствах кнопки из стандартной коллекции картинок ставим картинку «СформироватьОтчет». В свойстве «Отображение» устанавливаем «Надпись и картинка».

На Действие кнопки пишем код:

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

		Запрос = Новый запрос;
		Запрос.Текст = "ВЫБРАТЬ Ссылка 
			|ИЗ Справочник.СпособыДоставки ";
		Выборка = Запрос.Выполнить().Выбрать();
		
		Пока выборка.Следующий() Цикл
			нЭлемент.ПравоеЗначение = выборка.Ссылка;
			ОтчетОбъект.СкомпоноватьРезультат(Рез, ДанныеРасшифровки);  
			Рез.Рисунки[0].Ширина = ЭлементыФормы.Результат.ШиринаСтраницы;
			ЭлементыФормы.Результат.Вывести(Рез); 
			Рез.Очистить();   
		КонецЦикла;
		
		текОтбор.Очистить(); 
	Иначе  
		ОтчетОбъект.СкомпоноватьРезультат(Рез, ДанныеРасшифровки);  
		Рез.Рисунки[0].Ширина = ЭлементыФормы.Результат.ШиринаСтраницы;
		ЭлементыФормы.Результат.Вывести(Рез); 
	КонецЕсли;
	
КонецПроцедуры 

 

Вступайте в нашу телеграмм-группу Инфостарт

СКД статья доработка СКД диаграммы в СКД отборы программно компоновщик настоек

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

02.09.2020    228751    1247    415    

1084

Работа с интерфейсом Анализ учета Мониторинг 1С:Предприятие 8 1С 8.3 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Библиотека стандартных подсистем 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 Платные (руб)

Создайте свой функциональный интерфейс в любой конфигурации 1С с помощью расширения Infostart Dashboard. Настраивайте панели виджетов с метриками, индикаторами и показателями на начальном экране. Узнайте возможность внедрения подсистемы у себя в конфигурации с помощью бесплатной обработки "Анализ внедрения подсистемы 1С Infostart Dashboard"!

28800 руб.

27.03.2025    56402    31    25    

45

Разработка Инструментарий разработчика Работа с интерфейсом Адаптация типовых решений Нейросети 1C:Бухгалтерия 1C:ERP 1С:ЗУП 1С:КА 1С:УНФ 1С:УТ 1С:Розница 1С:ДО 1С:ERP Управление предприятием 2 Платные (руб)

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

36000 руб.

28.08.2025    2702    1    2    

4

Работа с интерфейсом Системный администратор Программист 1С:Предприятие 8 1C:Бухгалтерия Платные (руб)

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

6000 руб.

14.01.2016    58241    20    25    

46

Работа с интерфейсом Программист 1С:Предприятие 8 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами (виджетами) в 1С.

5160 руб.

29.06.2020    22865    32    6    

51

Работа с интерфейсом Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

Редактор графов в 1С - внешний отчет, который формирует графы на основе таблицы значений, используя рисунки табличного документа. Есть возможность добавления, редактирования объектов графа и выгрузки результата в таблицу значений.

5040 руб.

06.10.2020    12852    8    8    

14
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Serg O. 314 03.10.23 17:09 Сейчас в теме
А где собственно "Результат" ? Картинок не хватает....

в цикле я так понял прямо на форму в "Результат" картинка добавляется
ЭлементыФормы.Результат.Вывести(Рез); 
2. оggghhhiiu 17 04.10.23 01:18 Сейчас в теме
(1) да, картинка добавляется в цикле.
user773200; Serg O.; +2 Ответить
5. RustIG 1931 04.10.23 13:34 Сейчас в теме
(2) на какой платформе разрабатывали?
выполнять в клиенте или на сервере? - у вас нет директив
9. оggghhhiiu 17 05.10.23 01:09 Сейчас в теме
(5) платформа 8.3 обычные формы.
user773200; +1 Ответить
3. RustIG 1931 04.10.23 11:00 Сейчас в теме
Риторический вопрос, коллеги: зачем сохранять в свои избранные?! - когда есть поиск по сайту - когда надо будет - найдем, решим вопрос...
Автору спасибо за работу и написание статьи!
Прикрепленные файлы:
4. Xershi 1531 04.10.23 11:01 Сейчас в теме
Обычно анализ ведут по 2 складам, просто скопировать схему и поставить в отбор 2 склад. У вас я так понимаю их больше. И решили, что кружков нужно много. Только анализировать больше 3 уже сложно. Но для презентации пойдет.
6. RustIG 1931 04.10.23 13:48 Сейчас в теме
(0)
Запрос = Новый запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка
|ИЗ Справочник.СпособыДоставки ";
Выборка = Запрос.Выполнить().Выбрать();

на клиенте объекта ЗАпрос нет

у вас на обычных формах внешний отчет?

пробую ваш код на управляемых формах - много ошибок выходит
8. оggghhhiiu 17 05.10.23 01:07 Сейчас в теме
(6)Да, на обычных формах. Чуть позже подправлю для управляемых.
user773200; +1 Ответить
7. RustIG 1931 04.10.23 14:07 Сейчас в теме
Код рабочий, но только для обычных форм. Проверено.
Прикрепленные файлы:
EvgeniyOlxovskiy; оggghhhiiu; +2 Ответить
10. echo77 1935 07.10.23 19:05 Сейчас в теме
(0) Может проще настройки изменить, добавив группировку по способу доставки?

Конечно, лайк за труды, но представленный код лучше размещать в обработчике события ПриКомпоновкеРезультата()
Прикрепленные файлы:
Схема.xml
user773200; +1 Ответить
11. Трактор 1274 12.02.24 18:18 Сейчас в теме
Код писать не обязательно. Вложенная СКД прекрасно выводит диаграмму с отбором по параметру.
Для отправки сообщения требуется регистрация/авторизация