Диаграмма 1С — объект платформы Диаграмма: точки по оси, серии в легенде и числовые значения на их пересечении. Ниже — как заполнять диаграммы 1С программно в платформе 8.3: минимальный пример на форме, заполнение из запроса с расшифровкой и подсказками, смена типа, обновление без мерцания и вывод в печатную форму. Код рассчитан на 8.3.12 и новее: свойства расположения легенды и заголовка появились в этой версии.
Задача встречается в трёх местах: монитор продаж или остатков на форме обработки, график в печатной форме и отчёт на СКД, где вместо таблицы нужна картинка. Внутри везде один объект: точки, серии диаграммы и значения.
| Сущность | Что это | В примерах ниже |
|---|---|---|
| Точка | Подпись по оси категорий, коллекция Точки | Месяц |
| Серия | Ряд значений одного цвета и строка легенды, коллекция Серии | Товар |
| Значение | Число на пересечении точки и серии, к нему — расшифровка и подсказка | Выручка товара за месяц |
Значение диаграммы задаёт метод УстановитьЗначение(Точка, Серия, Значение, Расшифровка, Подсказка). Точку и серию передают объектом или индексом. Расшифровка — любое значение, которое вернётся в обработчик двойного щелчка. Подсказка — строка или форматированная строка вместо стандартной всплывающей «серия, точка, значение». Прочитать значение обратно: Диаграмма.ПолучитьЗначение(Точка, Серия).Значение. У круговой диаграммы секторы — это серии, а каждая точка рисуется отдельным кругом. Это важно при смене типа.
Диаграмма на форме 1С — это реквизит формы типа «Диаграмма» плюс поле, которое его показывает. В конфигураторе откройте форму, на вкладке «Реквизиты» добавьте реквизит Диаграмма с типом «Диаграмма» и перетащите его в дерево элементов: платформа создаст поле диаграммы. Чтобы построить диаграмму, хватит одной серверной процедуры. После серверного вызова реквизит вернётся на клиент уже заполненным.
// Модуль формы обработки. Реквизит формы Диаграмма (тип «Диаграмма»)
// перетащен в дерево элементов - на форме появилось поле диаграммы.
// Команда формы ПостроитьДиаграмму.
&НаКлиенте
Процедура ПостроитьДиаграмму(Команда)
ПостроитьДиаграммуНаСервере();
КонецПроцедуры
&НаСервере
Процедура ПостроитьДиаграммуНаСервере()
Диаграмма.Очистить(); // точки, серии и значения; тип и оформление остаются
Диаграмма.ТипДиаграммы = ТипДиаграммы.Гистограмма;
Диаграмма.ВидПодписей = ВидПодписейКДиаграмме.Значение;
// Серии - то, что различается цветом и попадает в легенду.
СерияПлан = Диаграмма.Серии.Добавить("План");
СерияПлан.Цвет = Новый Цвет(176, 190, 197);
СерияФакт = Диаграмма.Серии.Добавить("Факт");
СерияФакт.Цвет = Новый Цвет(46, 125, 50);
// Точки - подписи по оси: месяцы квартала. Суммы в тыс. руб.
ДанныеКвартала = Новый Массив;
ДанныеКвартала.Добавить(Новый Структура("Месяц, План, Факт", "Январь", 120, 98));
ДанныеКвартала.Добавить(Новый Структура("Месяц, План, Факт", "Февраль", 130, 141));
ДанныеКвартала.Добавить(Новый Структура("Месяц, План, Факт", "Март", 150, 137));
Для Индекс = 0 По ДанныеКвартала.ВГраница() Цикл
ДанныеМесяца = ДанныеКвартала[Индекс];
Диаграмма.Точки.Добавить(ДанныеМесяца.Месяц);
// Точку можно указать индексом: нумерация с нуля в порядке добавления.
Диаграмма.УстановитьЗначение(Индекс, СерияПлан, ДанныеМесяца.План);
Диаграмма.УстановитьЗначение(Индекс, СерияФакт, ДанныеМесяца.Факт);
КонецЦикла;
КонецПроцедуры
Очистить() удаляет точки, серии и значения, но не трогает тип и оформление, поэтому повторное нажатие не плодит дубли. Серии.Добавить возвращает новую серию, и ей сразу задаётся цвет. У Точки.Добавить синтакс-помощник 8.3.27 возвращаемого значения не описывает, поэтому значение пишется по индексу точки: УстановитьЗначение принимает и индекс, и объект.
Рабочий случай — выручка пяти товаров-лидеров по месяцам. В УТ 11 и КА 2 она хранится в оборотном регистре накопления ВыручкаИСебестоимостьПродаж: товар — в измерении АналитикаУчетаНоменклатуры (это ключ аналитики, номенклатура — его реквизит), сумма — в ресурсе СуммаВыручки. Имена сверены по выгрузкам УТ 11.4 и КА 2.5. Процедура лежит в общем модуле ДиаграммыПродажСервер с флажком «Сервер» и принимает диаграмму параметром. Так она заполнит и реквизит формы, и рисунок табличного документа.
// Общий модуль ДиаграммыПродажСервер, флажок «Сервер».
// Регистр ВыручкаИСебестоимостьПродаж есть в УТ 11 и КА 2.
// Заполняет диаграмму выручкой пяти товаров-лидеров за период.
// ПоМесяцам = Истина - точки: месяцы, серии: товары (гистограмма, график);
// ПоМесяцам = Ложь - одна точка «За период», серии: товары (круговая).
Процедура ЗаполнитьДиаграммуПродаж(Диаграмма, Знач НачалоПериода, Знач КонецПериода,
Знач ПоМесяцам = Истина) Экспорт
Если Не ЗначениеЗаполнено(НачалоПериода) Или Не ЗначениеЗаполнено(КонецПериода) Тогда
ВызватьИсключение "Укажите начало и конец периода.";
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 5
| Продажи.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| СУММА(Продажи.СуммаВыручкиОборот) КАК Выручка
|ПОМЕСТИТЬ ВТЛидеры
|ИЗ
| РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&НачалоПериода, &КонецПериода, , ) КАК Продажи
|СГРУППИРОВАТЬ ПО
| Продажи.АналитикаУчетаНоменклатуры.Номенклатура
|УПОРЯДОЧИТЬ ПО
| Выручка УБЫВ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТЛидеры.Номенклатура КАК Номенклатура,
| ПРЕДСТАВЛЕНИЕ(ВТЛидеры.Номенклатура) КАК НоменклатураПредставление,
| ВТЛидеры.Выручка КАК Выручка
|ИЗ
| ВТЛидеры КАК ВТЛидеры
|УПОРЯДОЧИТЬ ПО
| Выручка УБЫВ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Продажи.Период КАК Период,
| Продажи.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| СУММА(Продажи.СуммаВыручкиОборот) КАК Выручка
|ИЗ
| РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(
| &НачалоПериода,
| &КонецПериода,
| Месяц,
| АналитикаУчетаНоменклатуры.Номенклатура В
| (ВЫБРАТЬ
| ВТЛидеры.Номенклатура
| ИЗ
| ВТЛидеры КАК ВТЛидеры)) КАК Продажи
|СГРУППИРОВАТЬ ПО
| Продажи.Период,
| Продажи.АналитикаУчетаНоменклатуры.Номенклатура";
Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(НачалоПериода));
Запрос.УстановитьПараметр("КонецПериода", КонецДня(КонецПериода));
Результаты = Запрос.ВыполнитьПакет();
Диаграмма.Очистить();
Диаграмма.АвтоТранспонирование = Ложь; // обязательно при УстановитьСерию/УстановитьТочку
// Точки создаём заранее: на оси будут и месяцы без продаж, порядок - по датам.
Если ПоМесяцам Тогда
ТекущийМесяц = НачалоМесяца(НачалоПериода);
Пока ТекущийМесяц <= КонецПериода Цикл
Точка = Диаграмма.УстановитьТочку(ТекущийМесяц);
Точка.Текст = Формат(ТекущийМесяц, "ДФ='ММММ гггг'");
ТекущийМесяц = ДобавитьМесяц(ТекущийМесяц, 1);
КонецЦикла;
Иначе
ТочкаИтого = Диаграмма.УстановитьТочку("Итого");
ТочкаИтого.Текст = "За период";
КонецЕсли;
// Серии - в порядке убывания выручки, в том же порядке встанут в легенде.
Цвета = ЦветаСерий();
ВыборкаЛидеров = Результаты[1].Выбрать();
Пока ВыборкаЛидеров.Следующий() Цикл
Серия = Диаграмма.УстановитьСерию(ВыборкаЛидеров.Номенклатура);
Серия.Текст = ВыборкаЛидеров.НоменклатураПредставление;
Серия.Расшифровка = ВыборкаЛидеров.Номенклатура;
Серия.Цвет = Цвета[Диаграмма.Серии.Индекс(Серия) % Цвета.Количество()];
Если Не ПоМесяцам Тогда
Диаграмма.УстановитьЗначение(ТочкаИтого, Серия, ВыборкаЛидеров.Выручка,
ВыборкаЛидеров.Номенклатура);
КонецЕсли;
КонецЦикла;
Если Не ПоМесяцам Тогда
Возврат;
КонецЕсли;
// Значения: точку и серию находим по значению, порядок строк не важен.
Выборка = Результаты[2].Выбрать();
Пока Выборка.Следующий() Цикл
Точка = Диаграмма.УстановитьТочку(Выборка.Период);
Серия = Диаграмма.УстановитьСерию(Выборка.Номенклатура);
Расшифровка = Новый Структура("Номенклатура, Период", Выборка.Номенклатура, Выборка.Период);
Подсказка = СтрШаблон("%1, %2: %3", Серия.Текст, Точка.Текст, Формат(Выборка.Выручка, "ЧДЦ=0"));
Диаграмма.УстановитьЗначение(Точка, Серия, Выборка.Выручка, Расшифровка, Подсказка);
КонецЦикла;
КонецПроцедуры
// Фиксированная палитра: первое место в рейтинге всегда одного цвета.
Функция ЦветаСерий()
Цвета = Новый Массив;
Цвета.Добавить(Новый Цвет(33, 150, 243));
Цвета.Добавить(Новый Цвет(76, 175, 80));
Цвета.Добавить(Новый Цвет(255, 152, 0));
Цвета.Добавить(Новый Цвет(156, 39, 176));
Цвета.Добавить(Новый Цвет(121, 85, 72));
Возврат Цвета;
КонецФункции
Что важно в этом коде:
АвтоТранспонирование = Ложь: справка к УстановитьСерию и УстановитьТочку требует выключать его на время заполнения.УстановитьТочку и УстановитьСерию ищут точку или серию по значению и создают новую, если не нашли. Поэтому третий запрос не сортируется: значения сами встают на места.Текст задаётся явно. Если он пустой, на оси выводится представление значения точки, для даты — со временем, а при включённом АвтоУстановкаТекстаТочек — «Точка1», «Точка2».СтрШаблон.КонецДня(КонецПериода): граница с нулевым временем отрежет продажи последнего дня.ПЕРВЫЕ 5 допустимо только число в тексте запроса, параметр туда не подставить.Текст запроса удобно сначала прогнать в консоли запросов с теми же параметрами периода.
Форма монитора: реквизит ДиаграммаПродаж типа «Диаграмма» с полем на форме, реквизит Период типа «СтандартныйПериод» и пять команд. Оформление задаётся один раз при создании формы, данные перезаполняются по команде.
// Модуль формы «Монитор продаж», управляемая форма.
// Реквизиты формы: ДиаграммаПродаж (тип «Диаграмма») - на форме поле диаграммы
// с тем же именем; Период (тип «СтандартныйПериод»).
// Команды: ОбновитьДиаграмму, ПоказатьГистограмму, ПоказатьГрафик,
// ПоказатьДоли, ПечатьДиаграммы.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Период.Вариант = ВариантСтандартногоПериода.ЭтотГод;
// Оформление задаём один раз: Очистить() его не сбрасывает.
ДиаграммаПродаж.ТипДиаграммы = ТипДиаграммы.Гистограмма;
ДиаграммаПродаж.ОбластьЗаголовка.Текст = "Выручка товаров-лидеров";
ДиаграммаПродаж.ОбластьЗаголовка.Расположение = РасположениеОбластиЗаголовкаДиаграммы.Верх;
ДиаграммаПродаж.ОбластьЛегенды.Расположение = РасположениеЛегендыДиаграммы.Низ;
ДиаграммаПродаж.ВидПодписей = ВидПодписейКДиаграмме.Нет;
ДиаграммаПродаж.ФорматЗначенийВПодписях = "ЧДЦ=0";
ДиаграммаПродаж.Анимация = АнимацияДиаграммы.НеИспользовать;
ЗаполнитьНаСервере(Истина);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьДиаграмму(Команда)
ЗаполнитьНаСервере(ДиаграммаПродаж.ТипДиаграммы <> ТипДиаграммы.Круговая);
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьГистограмму(Команда)
СменитьТип(ТипДиаграммы.Гистограмма, ВидПодписейКДиаграмме.Нет);
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьГрафик(Команда)
СменитьТип(ТипДиаграммы.График, ВидПодписейКДиаграмме.Нет);
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьДоли(Команда)
СменитьТип(ТипДиаграммы.Круговая, ВидПодписейКДиаграмме.Процент);
КонецПроцедуры
&НаКлиенте
Процедура СменитьТип(НовыйТип, НовыеПодписи)
// Гистограмма и график строятся по одним данным: хватает клиента.
// Круговой нужна одна точка, поэтому переход к ней и обратно - через сервер.
НужноПерезаполнить = (ДиаграммаПродаж.ТипДиаграммы = ТипДиаграммы.Круговая)
<> (НовыйТип = ТипДиаграммы.Круговая);
ДиаграммаПродаж.ТипДиаграммы = НовыйТип;
ДиаграммаПродаж.ВидПодписей = НовыеПодписи;
Если НужноПерезаполнить Тогда
ЗаполнитьНаСервере(НовыйТип <> ТипДиаграммы.Круговая);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНаСервере(ПоМесяцам)
ДиаграммыПродажСервер.ЗаполнитьДиаграммуПродаж(ДиаграммаПродаж,
Период.ДатаНачала, Период.ДатаОкончания, ПоМесяцам);
КонецПроцедуры
// Событие ОбработкаРасшифровки поля диаграммы ДиаграммаПродаж.
&НаКлиенте
Процедура ДиаграммаПродажОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
// Приходит то, что передали в УстановитьЗначение или в Серия.Расшифровка.
СтандартнаяОбработка = Ложь;
Если ТипЗнч(Расшифровка) = Тип("Структура") Тогда
ПоказатьЗначение(, Расшифровка.Номенклатура);
ИначеЕсли ЗначениеЗаполнено(Расшифровка) Тогда
ПоказатьЗначение(, Расшифровка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПечатьДиаграммы(Команда)
ТабДок = ПечатнаяФорма(Период.ДатаНачала, Период.ДатаОкончания);
ТабДок.Показать("Выручка товаров-лидеров");
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПечатнаяФорма(Знач НачалоПериода, Знач КонецПериода)
Возврат ДиаграммыПродажСервер.ТабличныйДокументСДиаграммой(НачалоПериода, КонецПериода);
КонецФункции
Гистограмма и график строятся по одним данным, поэтому тип меняется прямо на клиенте: объект «Диаграмма» доступен в тонком и веб-клиенте. Круговой нужна другая раскладка — одна точка «За период» и серии-товары, — и форма перезаполняет диаграмму на сервере. Обработчик ОбработкаРасшифровки назначается в свойствах поля диаграммы и срабатывает по двойному щелчку на значении, точке или серии с заполненной расшифровкой. В параметр Расшифровка приходит то, что положили в УстановитьЗначение или в свойство серии. Вместо карточки товара обычно открывают свой отчёт с отбором по товару и месяцу: данные для этого уже лежат в структуре. Печать вызывает функцию без контекста формы, и на сервер уходят только две даты.
| Что показать | Тип | Почему |
|---|---|---|
| Сравнить товары или склады по месяцам | Гистограмма | Столбики стоят рядом, лидер месяца виден сразу |
| Итог по периодам и его состав | ГистограммаСНакоплением | Высота — итог, сегменты — доли товаров |
| Динамику за год-два, много точек | График | Линия читается и на 24 точках, столбики там сливаются |
| Доли в итоге за один период | Круговая, Кольцевая | Одна точка, до 6–7 секторов |
| Длинные названия категорий | ГистограммаГоризонтальная | Подписи помещаются слева от полос |
Если серий много, а нужна круговая, ограничьте их число: МаксимумСерий = МаксимумСерий.Ограничено и МаксимумСерийКоличество = 6. Платформа покажет пять серий с наибольшими значениями, а остальные сложит в серию «Сводная».
В обычной форме толстого клиента диаграмма пересчитывается и перерисовывается автоматически после изменений. Справка рекомендует на время наполнения данными запрещать обновление — это ускоряет заполнение. Для этого есть свойство Обновление:
// Обычная форма, толстый клиент: перерисовка выключена на время заполнения.
Диаграмма = ЭлементыФормы.ДиаграммаПродаж;
Диаграмма.Обновление = Ложь;
Попытка
ЗаполнитьДиаграмму(Диаграмма); // Очистить, серии, точки, УстановитьЗначение
Исключение
Диаграмма.Обновление = Истина;
ВызватьИсключение;
КонецПопытки;
Диаграмма.Обновление = Истина;
В управляемой форме этот приём ничего не даёт. Синтакс-помощник 8.3.27 говорит прямо: Обновление имеет смысл только для неуправляемых форм, а веб-клиента в списке доступности свойства нет. Реквизит заполняется на сервере и приходит на клиент целиком после вызова, клиент рисует уже готовую диаграмму. Мерцание в управляемой форме дают другие вещи:
Очистить() при смене периода, а заполнение по обработчику ожидания. Между ними пользователь видит пустую диаграмму. Очищайте и заполняйте за один серверный вызов, как в листингах выше;ПодключитьОбработчикОжидания выключайте её: Анимация = АнимацияДиаграммы.НеИспользовать.В печатную форму диаграмма попадает рисунком табличного документа типа ТипРисункаТабличногоДокумента.Диаграмма. Свойство рисунка Объект только для чтения, но возвращает саму диаграмму внутри рисунка — её и заполняем той же процедурой. Так же устроен отчёт «Монитор целевых показателей» в УТ 11.4. Функция лежит в том же общем модуле.
// Общий модуль ДиаграммыПродажСервер (продолжение): печатная форма.
// Диаграмма - рисунок табличного документа, его свойство Объект - сама диаграмма.
Функция ТабличныйДокументСДиаграммой(Знач НачалоПериода, Знач КонецПериода) Экспорт
ТабДок = Новый ТабличныйДокумент;
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТабДок.АвтоМасштаб = Истина;
ЯчейкаЗаголовка = ТабДок.Область("R1C1");
ЯчейкаЗаголовка.Текст = СтрШаблон("Выручка товаров-лидеров с %1 по %2",
Формат(НачалоПериода, "ДЛФ=D"), Формат(КонецПериода, "ДЛФ=D"));
ЯчейкаЗаголовка.Шрифт = Новый Шрифт(, 12, Истина);
Рисунок = ТабДок.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Диаграмма);
Диаграмма = Рисунок.Объект; // не копия: изменения попадут в рисунок
ЗаполнитьДиаграммуПродаж(Диаграмма, НачалоПериода, КонецПериода, Истина);
// Под печать: столбики с накоплением, легенда справа, без белой подложки.
Диаграмма.ТипДиаграммы = ТипДиаграммы.ГистограммаСНакоплением;
Диаграмма.ОбластьЛегенды.Расположение = РасположениеЛегендыДиаграммы.Право;
Диаграмма.ПрозрачныйФон = Истина;
// Размер рисунка = размер области: строки 3-28, колонки 1-14.
Рисунок.Расположить(ТабДок.Область("R3C1:R28C14"));
Возврат ТабДок;
КонецФункции
Размер задаёт Расположить: диаграмма растягивается на указанную область ячеек. ПрозрачныйФон убирает белую подложку. Если печатная форма собирается из макета, диаграмму удобнее нарисовать прямо в области макета, взять по имени рисунка — Макет.ПолучитьОбласть("Диаграмма").Рисунки.Диаграмма.Объект — заполнить и вывести область. Размер и рамку тогда настраивают мышью. Области, вывод и параметры печати разобраны в статье «Табличный документ 1С 8.3: руководство программиста».
Для отчёта код обычно не нужен. В конструкторе схемы компоновки данных на вкладке «Настройки» в структуру добавляют элемент «Диаграмма» (контекстное меню «Добавить» → «Новая диаграмма»). У него две ветки: в «Точки» ставят группировку по периоду, в «Серии» — по номенклатуре или складу, а ресурс отмечают на вкладке «Выбранные поля» этого элемента. Тип задают на вкладке «Другие настройки», а из кода — параметром вывода: ЭлементДиаграмма.ПараметрыВывода.УстановитьЗначениеПараметра("ТипДиаграммы", ТипДиаграммы.График). Группировки в точках и сериях разобраны в статье «Группировки СКД», основы схемы — в «СКД 1С: что такое схема компоновки данных».
&НаКлиенте. Запрос и чтение базы есть только на сервере: на клиенте оставьте вызов, заполнение перенесите в &НаСервере или в серверный общий модуль.&НаСервереБезКонтекста, где данных формы нет. Нужна директива &НаСервере.Текст точки. То же с сериями: «Серия1» вместо названия товара.УстановитьСерию и УстановитьТочку было включено АвтоТранспонирование.Серия.Цвет явно. Если цвет должен навсегда остаться за товаром, храните соответствие «товар — цвет» отдельно.КонецДня.Реквизит добавляется через ИзменитьРеквизиты, поле — через Элементы.Добавить с видом ПолеДиаграммы. Процедуру вызывают из ПриСозданииНаСервере:
// Модуль формы: реквизит и поле диаграммы создаются кодом.
&НаСервере
Процедура ДобавитьДиаграммуНаФорму()
НовыеРеквизиты = Новый Массив;
НовыеРеквизиты.Добавить(Новый РеквизитФормы("ДиаграммаДоп", Новый ОписаниеТипов("Диаграмма")));
ИзменитьРеквизиты(НовыеРеквизиты);
Поле = Элементы.Добавить("ДиаграммаДоп", Тип("ПолеФормы"));
Поле.Вид = ВидПоляФормы.ПолеДиаграммы;
Поле.ПутьКДанным = "ДиаграммаДоп";
// Реквизит создан кодом: в модуле к нему обращаются только через ЭтотОбъект.
НоваяДиаграмма = ЭтотОбъект.ДиаграммаДоп;
НоваяДиаграмма.ТипДиаграммы = ТипДиаграммы.График;
ДиаграммыПродажСервер.ЗаполнитьДиаграммуПродаж(НоваяДиаграмма,
НачалоГода(ТекущаяДатаСеанса()), ТекущаяДатаСеанса());
КонецПроцедуры
Подробнее о реквизитах и элементах, созданных кодом, — в статье «Реквизит формы программно».
ОбластьЛегенды.Расположение = РасположениеЛегендыДиаграммы.Нет, для заголовка — ОбластьЗаголовка.Расположение = РасположениеОбластиЗаголовкаДиаграммы.Нет. Эти свойства появились в 8.3.12. В старом коде, в том числе в УТ 11.4, встречаются ОтображатьЛегенду и ОтображатьЗаголовок: в синтакс-помощнике 8.3.27 их уже нет, в новом коде лучше задавать расположение.
Установите ВидПодписей = ВидПодписейКДиаграмме.Значение и формат ФорматЗначенийВПодписях = "ЧДЦ=0". Для круговой подойдут Процент или СерияПроцент. У гистограмм с накоплением и нормированных подписи всегда стоят по центру сегмента, свойство ПоложениеПодписей на них не влияет.
Метод ПолучитьКартинку(Ширина, Высота, ФорматКартинки) возвращает объект Картинка, из него — двоичные данные для файла, письма или хранилища:
Картинка = ДиаграммаПродаж.ПолучитьКартинку(1200, 600, ФорматКартинки.PNG);
ДвоичныеДанныеКартинки = Картинка.ПолучитьДвоичныеДанные();
Как показать такую картинку на форме или сохранить в базе, — в статье «Картинки 1С программно».
Монитор руководителя на несколько диаграмм с отборами, расшифровкой в отчёты и автообновлением или график в печатной форме типовой без снятия с поддержки проще отдать программисту. Профильная услуга — разработка отчётов и обработок 1С. Опишите, какие показатели и в каких разрезах нужны, и разместите задачу: оценка бесплатная, ответ в течение рабочего дня.
Станьте частью сообщества!
Войдите или зарегистрируйтесь, и вы сможете участвовать в обсуждениях.