Диаграмма 1С программно: серии, точки и значения

Дата: 14.10.2026 15:45:51
Диаграмма
Управляемые формы
Табличный документ
Печатные формы
Запросы
СКД
Комментарий:
0
Платформа:
8.3
Конфигурация:
Любая
Формы:
Управляемые

Диаграмма 1С — объект платформы Диаграмма: точки по оси, серии в легенде и числовые значения на их пересечении. Ниже — как заполнять диаграммы 1С программно в платформе 8.3: минимальный пример на форме, заполнение из запроса с расшифровкой и подсказками, смена типа, обновление без мерцания и вывод в печатную форму. Код рассчитан на 8.3.12 и новее: свойства расположения легенды и заголовка появились в этой версии.

Как устроена диаграмма 1С: точки, серии, значения

Задача встречается в трёх местах: монитор продаж или остатков на форме обработки, график в печатной форме и отчёт на СКД, где вместо таблицы нужна картинка. Внутри везде один объект: точки, серии диаграммы и значения.

СущностьЧто этоВ примерах ниже
ТочкаПодпись по оси категорий, коллекция ТочкиМесяц
СерияРяд значений одного цвета и строка легенды, коллекция СерииТовар
ЗначениеЧисло на пересечении точки и серии, к нему — расшифровка и подсказкаВыручка товара за месяц

Значение диаграммы задаёт метод УстановитьЗначение(Точка, Серия, Значение, Расшифровка, Подсказка). Точку и серию передают объектом или индексом. Расшифровка — любое значение, которое вернётся в обработчик двойного щелчка. Подсказка — строка или форматированная строка вместо стандартной всплывающей «серия, точка, значение». Прочитать значение обратно: Диаграмма.ПолучитьЗначение(Точка, Серия).Значение. У круговой диаграммы секторы — это серии, а каждая точка рисуется отдельным кругом. Это важно при смене типа.

Диаграмма на форме: минимальный пример

Диаграмма на форме 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, Точка2» или даты со временем — не задан Текст точки. То же с сериями: «Серия1» вместо названия товара.
  • Значения встали не туда, серии и точки поменялись местами — при заполнении через УстановитьСерию и УстановитьТочку было включено АвтоТранспонирование.
  • Вместо одного круга — десяток маленьких — у круговой несколько точек. Для долей нужна одна точка.
  • Цвета серий меняются после обновления — новые серии получают цвета палитры по порядку создания, а порядок зависит от данных. Задавайте Серия.Цвет явно. Если цвет должен навсегда остаться за товаром, храните соответствие «товар — цвет» отдельно.
  • Нет продаж последнего дня — дата окончания передана без времени. Оборачивайте её в КонецДня.

Частые вопросы

Как создать диаграмму на форме из кода?

Реквизит добавляется через ИзменитьРеквизиты, поле — через Элементы.Добавить с видом ПолеДиаграммы. Процедуру вызывают из ПриСозданииНаСервере:

// Модуль формы: реквизит и поле диаграммы создаются кодом.
&НаСервере
Процедура ДобавитьДиаграммуНаФорму()

	НовыеРеквизиты = Новый Массив;
	НовыеРеквизиты.Добавить(Новый РеквизитФормы("ДиаграммаДоп", Новый ОписаниеТипов("Диаграмма")));
	ИзменитьРеквизиты(НовыеРеквизиты);

	Поле = Элементы.Добавить("ДиаграммаДоп", Тип("ПолеФормы"));
	Поле.Вид = ВидПоляФормы.ПолеДиаграммы;
	Поле.ПутьКДанным = "ДиаграммаДоп";

	// Реквизит создан кодом: в модуле к нему обращаются только через ЭтотОбъект.
	НоваяДиаграмма = ЭтотОбъект.ДиаграммаДоп;
	НоваяДиаграмма.ТипДиаграммы = ТипДиаграммы.График;
	ДиаграммыПродажСервер.ЗаполнитьДиаграммуПродаж(НоваяДиаграмма,
		НачалоГода(ТекущаяДатаСеанса()), ТекущаяДатаСеанса());

КонецПроцедуры

Подробнее о реквизитах и элементах, созданных кодом, — в статье «Реквизит формы программно».

Как убрать легенду или заголовок?

ОбластьЛегенды.Расположение = РасположениеЛегендыДиаграммы.Нет, для заголовка — ОбластьЗаголовка.Расположение = РасположениеОбластиЗаголовкаДиаграммы.Нет. Эти свойства появились в 8.3.12. В старом коде, в том числе в УТ 11.4, встречаются ОтображатьЛегенду и ОтображатьЗаголовок: в синтакс-помощнике 8.3.27 их уже нет, в новом коде лучше задавать расположение.

Как вывести значения прямо на столбцах?

Установите ВидПодписей = ВидПодписейКДиаграмме.Значение и формат ФорматЗначенийВПодписях = "ЧДЦ=0". Для круговой подойдут Процент или СерияПроцент. У гистограмм с накоплением и нормированных подписи всегда стоят по центру сегмента, свойство ПоложениеПодписей на них не влияет.

Как сохранить диаграмму картинкой?

Метод ПолучитьКартинку(Ширина, Высота, ФорматКартинки) возвращает объект Картинка, из него — двоичные данные для файла, письма или хранилища:

Картинка = ДиаграммаПродаж.ПолучитьКартинку(1200, 600, ФорматКартинки.PNG);
ДвоичныеДанныеКартинки = Картинка.ПолучитьДвоичныеДанные();

Как показать такую картинку на форме или сохранить в базе, — в статье «Картинки 1С программно».

Когда проще заказать

Монитор руководителя на несколько диаграмм с отборами, расшифровкой в отчёты и автообновлением или график в печатной форме типовой без снятия с поддержки проще отдать программисту. Профильная услуга — разработка отчётов и обработок 1С. Опишите, какие показатели и в каких разрезах нужны, и разместите задачу: оценка бесплатная, ответ в течение рабочего дня.

По теме

Не хотите разбираться сами?

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

Оставить задачу

Станьте частью сообщества!
Войдите или зарегистрируйтесь, и вы сможете участвовать в обсуждениях.


1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.