Доброго дня, коллеги!
В рамках курса Профессиональная разработка отчетов в 1С 8.3 на СКД изучается тема “Использование и настройка отображения диаграмм”. В связи с развитием механизма диаграмм в версии платформы 1С 8.3.16 эта тема наверняка будет дополнена новыми примерами. Более того сами слушатели подкидывают нам идеи, ценные с точки зрения интересной демонстрации возможностей и высокой практической значимости.
Вопрос
Ответ
Настроек компоновки для такого расположения диаграмм нет. Но при помощи программного кода можно добиться требуемого расположения диаграмм.
В настройках отчета выводим две диаграммы:
Если не написать никакого программного кода, то диаграммы будут выведены друг под другом.
В модуле отчета создаем метод ПриКомпоновкеРезультата, содержащий вот такой код:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) //1. СтандартнаяОбработка = Ложь; Настройки = КомпоновщикНастроек.ПолучитьНастройки(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); //2. ДокументРезультат.Рисунки[1].Верх = ДокументРезультат.Рисунки[1].Верх - X;//подобрать значение ДокументРезультат.Рисунки[1].Лево = ДокументРезультат.Рисунки[1].Лево + Y;//подобрать значение КонецПроцедуры
В коде выполняются действия по программной компоновке отчета (п. 1). Затем для второй диаграммы меняем её расположение в табличном документе, двигаем по горизонтали и вертикали (п. 2). Надо только подобрать значения X и Y, чтобы диаграммы были красиво расположены рядом.
Получается вот такой отчет:
(нажмите, чтобы увеличить картинку)
Комментарий слушателя
Комментарий тренера
Ок. Этот прием может быть полезным на практике.
Профессиональная разработка отчетов в 1С 8.3 на СКД.
Так как в горизонтальной диаграмме в скд запросе нет возможностей вывести подписи, то пробую построить числовую таблицу клиент-заказ-сумма заказа-сумма оплаты, а рядом визуализацию в виде горизонтальной диаграммы с подгонкой высоты диаграммы под размер таблицы. для этого надо знать кол-во строк в выдаче таблицы и высчитать высоту рисунка диаграммы. как узнать кол-во строк в процедуре ПриКомпоновкеРезультата?
Добрый день!
Можно выполнить вывод результата компоновки в таблицу значений, подсчитать количество строк в таблице. Затем таблицу значений использовать в качестве внешнего набора данных, передать ее в компоновщик, вывести результат в табличный документ. Здесь можно применить набор данных – объект.
Или еще вариант – выводить результат в табличный документ, определить количество строк в скомпонованном табличном документе, программно рассчитать высоту шапки. Тогда высота табличного документа минус высота шапки – это как раз и будет количество строк с данными.
А как в процедуре ПриКомпоновкеРезультата узнать размер таблицы (кол-ва строк) выдачи для масшабирования диаграммы с выводом ее рядом с таблицей данных?
А как в диаграмме типа горизонтальная гистограмма вывести не учебные 10-15 строк с полосками диаграммы, а реальную диаграмму на 50-100 строк?
Добрый день!
Программный код будет одинаковым как для 10-15 “строк”, так и для любого другого количества. Платформа отрисует диаграмму по тем данным, которые были переданы в объект Диаграмма в программном коде.
Таким образом, в диаграмму нужно просто передавать реальные данные, по ним и будет построена диаграмма.
о каком программном коде при построении диаграммы в варианте отчета на СКД вы говорите?
под диаграмму выдается кадр фиксированного размера и полоски сжимаются под размер этого кадра,
а текст выводится с пропуском части строк.
на кадре хорошо видно что список клиентов (в виде кодов) выведен не полностью, полоски диаграммы сильно сжаты
как вывести клиента и полоску диаграммы по одной на строку таблицы?
1. Речь идет про программный код на этой странице. Он не меняется в зависимости от количества данных.
2. Без Вашей базы трудно представить, что именно выглядится не так, как требуется.
Могу порекомендовать демо-конфигурацию Диаграммы фирмы “1С”: https://demo.1c.ru/charts
В ней можно увидеть внешние виды различных вариантов диаграмм, в том числе и горизонтальную гистограмму.
Есть программный код, который обеспечивает вывод такой диаграммы. Есть настройки компоновки для вывода диаграммы в отчет.
Посмотрите, пожалуйста, может, что-то из предложенного наведет на мысль, как решить Вашу задачу.
Если платформа “1С:Предприятие” не формирует диаграмму нужного Вам вида, то можно попробовать самостоятельно отрисовывать диаграмму на форме, например, используя поле HTML-документа.
Как увеличить высоту кадра перед началом формирования диаграммы под кол-во строк выдачи?
Непонятно, что такое “высота кадра”.
Если имеете в виду размер рисунка с диаграммой в табличном документе, то попробуйте после завершения компоновки в процедуре ПриКомпоновкеРезультата программно изменить размер рисунка.