В этой статье я продолжу тему графиков и диаграмм, начатую в прошлой статье. На этот раз мне потребовалось мне потребовалось построить на графике такую штуку как линия тренда.
Это можно легко сделать в Excel, но вот в 1С построение линии тренда вызвало у меня некоторое затруднение — поисковик выдавал совсем немного информации.
Но, впрочем, кое что все-таки нашлось, и теперь я спешу об этом поведать — построение линии тренда.
Суть в том, чтобы подобрать коэффициенты a и b для уравнения Y=a+bX.
Это делается с помощью функции, которой передаются данные в массиве:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | Функция РассчитатьКозффициенты(Данные) Y = 0; X = 0; Для К = 0 по Данные.Количество()-1 Цикл Y = Y + Данные[К]; X = X + К; КонецЦикла; X = X/Данные.Количество(); Y = Y/Данные.Количество(); т1 = 0; т2 = 0; Для К = 0 по Данные.Количество()-1 Цикл т1 = т1+(Данные[К]-Y)*(К-X); т2 = т2+(К-X)*(К-X); КонецЦикла; Если т2 <> 0 Тогда b = т1/т2; Иначе Возврат Неопределено; КонецЕсли; a = Y - (b*X); Рез = Новый Структура; Рез.Вставить("a", a); Рез.Вставить("b", b); Возврат Рез; КонецФункции |
Далее я не буду приводить весь код построения диаграммы — все это есть прошлой статье (ссылка есть в начале), приведу только небольшой кусок — заполнение данных графика и тренда:
1 2 3 4 5 6 7 | Коэфф = РассчитатьКозффициенты(мДанные); Для С=1 По 12 Цикл ТочкаДиаграммы = Диаг.УстановитьТочку(С); Диаг.УстановитьЗначение(ТочкаДиаграммы, ПродажиСерия, мДанные[С-1]); Диаг.УстановитьЗначение(ТочкаДиаграммы, ТрендСерия, Коэфф.a+Коэфф.b*С); КонецЦикла; |
Как видите все достаточно просто, в результате у нас получится нечто вроде этого:

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Благодарю, caro collega. Использовал в работе. Конечно просто, но большего не требуется.
«Далее я не буду приводить весь код построения диаграммы — все это есть прошлой статье» — поправьте пожалуйста ссылку.