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

03.10.23

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

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

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

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

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

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

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

 

 

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

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

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

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

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

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

 

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

См. также

SALE! 15%

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    159423    872    399    

861

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Богатый редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    62986    44    59    

82

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 Платные (руб)

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

2400 руб.

29.06.2020    18855    26    6    

41

Работа с интерфейсом Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

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

1500 руб.

06.10.2020    10224    7    7    

10

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    5751    kalyaka    6    

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

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

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

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

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

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