Представляет собой коллекцию линий тренда.
Полное описание, параметры и ограничения
ЛинииТрендаДиаграммы (ChartTrendlines)
ЛинииТрендаДиаграммы (ChartTrendlines)
Доступен, начиная с версии 8.3.10.
Элементы коллекции:
ЛинияТрендаДиаграммы
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются линии тренда.
Возможно обращение к линии тренда посредством оператора [...]. В качестве аргумента передается индекс линии тренда (нумерация с 0).
Методы:
Вставить (Insert)
Добавить (Add)
Индекс (IndexOf)
Количество (Count)
Получить (Get)
Удалить (Delete)
Описание:
Представляет собой коллекцию линий тренда.
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Сериализуется. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.2/data/chart}. Имя типа XDTO: ChartTrendlines.
Использование в версии:
Доступен, начиная с версии 8.3.10.
Методическая информация
Практические примеры
Собрать биржевую диаграмму из двух учебных групп по четыре значения
В этом виде одна отображаемая точка состоит из четырёх исходных точек: открытие, максимум, минимум, закрытие. Это особый контракт API, не четыре независимые серии.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
В учебной базе создайте новую внешнюю обработку УчебнаяДиаграмма с пустой управляемой формой; назначьте форму основной.
Не создавайте реквизит График и поле ДиаграммаТоваров вручную: код создаёт их в ПриСозданииНаСервере.
В свойствах формы → События назначьте ПриСозданииНаСервере одноимённой процедуре. Сохраните EPF и откройте её в учебном тонком клиенте Windows.
Каждый урок использует отдельный модуль/копию формы. Данные вымышлены: план и факт в штуках за три месяца, не данные учёта.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
НовыеРеквизиты = Новый Массив;
НовыеРеквизиты.Добавить(Новый РеквизитФормы("График", Новый ОписаниеТипов("Диаграмма")));
ЭтаФорма.ИзменитьРеквизиты(НовыеРеквизиты);
Диаграмма = Новый Диаграмма;
Диаграмма.ТипДиаграммы = ТипДиаграммы.Биржевая;
Котировка = Диаграмма.УстановитьСерию("training-price");
Котировка.Текст = "Вымышленные числа для изучения API";
Диаграмма.АктивнаяСерия = Котировка;
Дни = Новый Массив;
Дни.Добавить(Новый Структура("День,Открытие,Максимум,Минимум,Закрытие", "15.09", 100, 110, 95, 105));
Дни.Добавить(Новый Структура("День,Открытие,Максимум,Минимум,Закрытие", "16.09", 105, 115, 102, 112));
Для Каждого День Из Дни Цикл
Если День.Минимум > День.Открытие Или День.Минимум > День.Закрытие
Или День.Максимум < День.Открытие Или День.Максимум < День.Закрытие Тогда
ВызватьИсключение "Учебный минимум/максимум не охватывает открытие и закрытие";
КонецЕсли;
Значения = Новый Массив;
Значения.Добавить(День.Открытие);
Значения.Добавить(День.Максимум);
Значения.Добавить(День.Минимум);
Значения.Добавить(День.Закрытие);
Для Индекс = 0 По 3 Цикл
Точка = Диаграмма.УстановитьТочку(День.День + ":" + Строка(Индекс));
Если Индекс = 0 Тогда
Точка.Текст = День.День;
Точка.Расшифровка = Новый Структура("День", День.День);
Иначе
Точка.Текст = "";
КонецЕсли;
Диаграмма.УстановитьЗначение(Точка, Котировка, Значения.Получить(Индекс));
КонецЦикла;
КонецЦикла;
ТрендЗакрытия = Котировка.ЛинииТренда.Добавить();
ТрендЗакрытия.ИспользуемоеЗначениеТочкиБиржевойДиаграммы = ИспользуемоеЗначениеТочкиБиржевойДиаграммы.Закрытие;
ТрендЗакрытия.ТипАппроксимации = ТипАппроксимацииЛинииТрендаДиаграммы.Линейный;
ТрендЗакрытия.Текст = "Учебная линия по закрытию, не прогноз";
Сообщить(Диаграмма.Точки.Количество() = 8);
Сообщить(Диаграмма.ПолучитьЗначение(Диаграмма.Точки.Получить(3), Котировка).Значение = 105);
Сообщить(Диаграмма.ПолучитьЗначение(Диаграмма.Точки.Получить(7), Котировка).Значение = 112);
Диаграмма.ОбластьЗаголовка.Текст = "Два учебных дня: 8 исходных значений, 2 биржевые группы";
ЭтаФорма.График = Диаграмма;
Поле = Элементы.Добавить("ДиаграммаТоваров", Тип("ПолеФормы"));
Поле.Вид = ВидПоляФормы.ПолеДиаграммы;
Поле.ПутьКДанным = "График";
Поле.РастягиватьПоГоризонтали = Истина;
Поле.РастягиватьПоВертикали = Истина;
КонецПроцедуры
Разбор по шагам
Данные полностью вымышлены и предназначены для изучения типа диаграммы, не для инвестиционных решений.
Для каждого дня проверяем диапазон и добавляем четыре значения в обязательном порядке: открытие, максимум, минимум, закрытие.
Всего исходных точек восемь. Подпись и расшифровка отображаемой группы берутся из первых точек 0 и 4.
АктивнаяСерия указывает единственную серию котировок, которую следует строить биржевым способом.
Линии тренда явно выбирают закрытие внутри группы, а не каждое из четырёх значений как независимое измерение.
Через ПолучитьЗначение контролируем закрытия 105 и 112 на индексах 3 и 7.
Как проверить результат
Три сообщения Истина: исходных точек 8, закрытия двух групп 105 и 112.
На форме две биржевые группы с подписями дней, а не восемь самостоятельных дней.
Ожидаемый результат
Особый формат четырёх значений и выбор активной серии разобраны на контролируемом источнике.
На что обратить внимание
Группы меньше четырёх значений не строятся. Не выдавайте неполную группу за день без изменений.
Перестановка максимума и минимума нарушает контракт, даже если все числа успешно установлены.
Два вымышленных наблюдения и их линия не дают основания для прогноза или оценки реального рынка.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Построить аппроксимацию первой степени для собственных чисел y=2x
Числовая координата точки, её порядковый номер и подпись — разные понятия. Выбираем именно значение точки для аргумента модели.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
В учебной базе создайте новую внешнюю обработку УчебнаяДиаграмма с пустой управляемой формой; назначьте форму основной.
Не создавайте реквизит График и поле ДиаграммаТоваров вручную: код создаёт их в ПриСозданииНаСервере.
В свойствах формы → События назначьте ПриСозданииНаСервере одноимённой процедуре. Сохраните EPF и откройте её в учебном тонком клиенте Windows.
Каждый урок использует отдельный модуль/копию формы. Данные вымышлены: план и факт в штуках за три месяца, не данные учёта.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
НовыеРеквизиты = Новый Массив;
НовыеРеквизиты.Добавить(Новый РеквизитФормы("График", Новый ОписаниеТипов("Диаграмма")));
ЭтаФорма.ИзменитьРеквизиты(НовыеРеквизиты);
Диаграмма = Новый Диаграмма;
Диаграмма.ТипДиаграммы = ТипДиаграммы.График;
Серия = Диаграмма.УстановитьСерию("training");
Серия.Текст = "Собственные значения y=2x";
Серия.Маркер = ТипМаркераДиаграммы.Круг;
Для X = 1 По 5 Цикл
Точка = Диаграмма.УстановитьТочку(X);
Точка.Текст = "x=" + Строка(X);
Диаграмма.УстановитьЗначение(Точка, Серия, 2 * X);
КонецЦикла;
Тренды = Серия.ЛинииТренда;
Тренд = Тренды.Добавить();
Тренд.ТипАппроксимации = ТипАппроксимацииЛинииТрендаДиаграммы.Полиномиальный;
Тренд.ПорядокАппроксимации = 1;
Тренд.Фактор = ФакторЛинииТрендаДиаграммы.ЗначениеТочки;
Тренд.Текст = "Аппроксимация степени 1 по x";
Тренд.Цвет = Новый Цвет(185, 95, 20);
Тренд.Линия = Новый Линия(ТипЛинииДиаграммы.Пунктир, 2);
Тренд.Маркер = ТипМаркераДиаграммы.Нет;
Тренд.ОтображатьВЛегенде = Истина;
Тренд.ОтображатьУравнение = Истина;
Тренд.ОтображатьКоэффициентДетерминации = Истина;
Тренд.Расшифровка = Новый Структура("Вид,Степень", "training-fit", 1);
Тренд.ОбластьУравнения.Шрифт = Новый Шрифт("Arial", 10);
Тренд.ОбластьУравнения.ЦветТекста = Новый Цвет(90, 55, 20);
Черновая = Тренды.Вставить(0);
Черновая.Текст = "Удаляемый собственный черновик";
Сообщить(Тренды.Индекс(Тренд) = 1);
Тренды.Удалить(Тренды.Индекс(Черновая));
Сообщить(Тренды.Количество() = 1);
Сообщить(Тренды.Получить(0).ПорядокАппроксимации = 1);
Сообщить(Диаграмма.ПолучитьЗначение(Диаграмма.Точки.Получить(4), Серия).Значение = 10);
Диаграмма.ОбластьЗаголовка.Текст = "Пять учебных точек; известная зависимость y=2x";
ЭтаФорма.График = Диаграмма;
Поле = Элементы.Добавить("ДиаграммаТоваров", Тип("ПолеФормы"));
Поле.Вид = ВидПоляФормы.ПолеДиаграммы;
Поле.ПутьКДанным = "График";
Поле.РастягиватьПоГоризонтали = Истина;
Поле.РастягиватьПоВертикали = Истина;
КонецПроцедуры
Разбор по шагам
Значения точек X=1..5 задаются числовыми ключами; подпись x=... нужна лишь читателю.
Полиномиальный с порядком 1 соответствует прямой. Фактор ЗначениеТочки использует X, а не локализованную подпись и не индекс коллекции.
Уравнение и коэффициент детерминации отображаются для контроля известной зависимости. Точное оформление текста зависит от клиента и локали.
Пунктирный оранжевый тренд и название в легенде отличаются от исходных маркеров измерений.
Вставляем и удаляем только собственную черновую линию. Удалить принимает индекс, который получаем через Индекс(Черновая).
Проверяем последнюю исходную точку 10; аппроксимация не заменяет и не перезаписывает источник.
Как проверить результат
Четыре сравнения Истина. Тренд один, степень 1, последняя исходная Y равна 10.
На форме уравнение должно соответствовать y=2x с коэффициентом детерминации около 1; проверьте отображение, а не точную строку форматирования.
Ожидаемый результат
Выбор аргумента и степени аппроксимации объяснён на заранее известной математической зависимости.
На что обратить внимание
R² около 1 здесь ожидаем для искусственного источника; это не доказывает причинность или качество прогноза реальных данных.
ПорядокАппроксимации применяется к полиномиальному типу; изменение этого поля при Линейный не выбирает другую степень.
Удалить у коллекции трендов принимает индекс, а у коллекции информационных линий — объект. Не переносите сигнатуру между ними.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.