Добрый день.
Кто знает, как правильно построить свечной график не прибегая ни к каким HTML и Java?
Всё сделал, как написано в инструкции https://its.1c.ru/db/metod8dev/content/2862/hdoc
Но только тип диаграммы = Биржевая "свеча"
Приготовил запрос, написал код заполнения:

```1c
    Элементы.График.Видимость = Истина;
    График.Обновление = Ложь;
    График.Очистить();

    Серия = График.Серии.Добавить("Курс");

    Для Каждого Курс Из тзКурсы Цикл
    КурсМин = Мин(КурсМин, Курс.Мин);
    Свеча = Новый СписокЗначений;
    Свеча.Добавить(Курс.Откр,"open");
    Свеча.Добавить(Курс.Макс,"high");
    Свеча.Добавить(Курс.Мин,"low");
    Свеча.Добавить(Курс.Закр,"close");
    Точка = График.УстановитьТочку(Формат(Курс.Период, ФорматнаяСтрока));
    График.УстановитьЗначение(Точка, Серия, Свеча);
    КонецЦикла;
    ОсьY = График.ОсьЗначений;
    ОсьY.МинимальноеЗначение = КурсМин;
    ОсьY.СпособОпределенияМинимальногоЗначения = СпособОпределенияОграничивающегоЗначенияДиаграммы.ИспользоватьЗначение;
    График.Обновление = Истина;
```

Но график остаётся пустым. Как правильно передать 4 значения свечи?
---
Истребитель мне в ангар!
Я методом тыка сам допёр, слава богам!
Оказывается, для того чтобы указать 4 значения свечи нужно создать 4 точки с разным значением. Значение первой точки будет отражено в подписи значений оси X.

Вот полный код, если кому интересно:

```1c
    &НаСервере
    Процедура ОбновитьГрафикНаСервере()
    Запрос = Новый Запрос;
    Если ТекущийТаймФрейм = Перечисления.РасшРС_Таймфреймы.M1 Тогда
    Запрос.Текст =
    "...";
    ФорматнаяСтрока = "ДФ='dd.MM HH:mm'";
    ИначеЕсли ТекущийТаймФрейм = Перечисления.РасшРС_Таймфреймы.M30 Тогда
    Запрос.Текст =
    "...";
    Запрос.УстановитьПараметр("ДваМесяцаНазад", ТекущаяДата() - 2 * 30 * 24*3600);
    ФорматнаяСтрока = "ДФ='dd.MM HH:mm'";
    ИначеЕсли ТекущийТаймФрейм = Перечисления.РасшРС_Таймфреймы.H1 Тогда
    Запрос.Текст =
    "...";
    Запрос.УстановитьПараметр("ДваМесяцаНазад", ТекущаяДата() - 2 * 30 * 24*3600);
    ФорматнаяСтрока = "ДФ='dd.MM HH:mm'";
    ИначеЕсли ТекущийТаймФрейм = Перечисления.РасшРС_Таймфреймы.H4 Тогда
    Запрос.Текст =
    "...";
    Запрос.УстановитьПараметр("ДваМесяцаНазад", ТекущаяДата() - 2 * 30 * 24*3600);
    ФорматнаяСтрока = "ДФ='dd.MM.yy HH:mm'";
    Иначе //Дни
    Запрос.Текст =
    "ВЫБРАТЬ
    | РасшРС_ИсторияБиржевыхКурсов.Период КАК Период,
    | РасшРС_ИсторияБиржевыхКурсов.Курс КАК Курс
    |ПОМЕСТИТЬ КурсВалютнойПары
    |ИЗ
    | РегистрСведений.РасшРС_ИсторияБиржевыхКурсов КАК РасшРС_ИсторияБиржевыхКурсов
    |ГДЕ
    | РасшРС_ИсторияБиржевыхКурсов.Период МЕЖДУ &НачалоПериода И &КонецПериода
    | И РасшРС_ИсторияБиржевыхКурсов.Биржа = &Биржа
    | И РасшРС_ИсторияБиржевыхКурсов.ВалютаЧислитель = &ВалютаЧислитель
    | И РасшРС_ИсторияБиржевыхКурсов.ВалютаЗнаменатель = &ВалютаЗнаменатель
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | НАЧАЛОПЕРИОДА(КурсВалютнойПары.Период, ДЕНЬ) КАК Период,
    | МАКСИМУМ(КурсВалютнойПары.Курс) КАК Макс,
    | МИНИМУМ(КурсВалютнойПары.Курс) КАК Мин,
    | МИНИМУМ(КурсВалютнойПары.Период) КАК ПериодОткрытия,
    | МАКСИМУМ(КурсВалютнойПары.Период) КАК ПериодЗакрытия
    |ПОМЕСТИТЬ МаксМин
    |ИЗ
    | КурсВалютнойПары КАК КурсВалютнойПары
    |
    |СГРУППИРОВАТЬ ПО
    | НАЧАЛОПЕРИОДА(КурсВалютнойПары.Период, ДЕНЬ)
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ ПЕРВЫЕ 200
    | МаксМин.Период КАК Период,
    | КурсОткрытия.Курс КАК Откр,
    | МаксМин.Макс КАК Макс,
    | МаксМин.Мин КАК Мин,
    | КурсЗакрытия.Курс КАК Закр
    |ИЗ
    | МаксМин КАК МаксМин
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ КурсВалютнойПары КАК КурсОткрытия
    | ПО МаксМин.ПериодОткрытия = КурсОткрытия.Период
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ КурсВалютнойПары КАК КурсЗакрытия
    | ПО МаксМин.ПериодЗакрытия = КурсЗакрытия.Период
    |
    |УПОРЯДОЧИТЬ ПО
    | Период УБЫВ";
    ФорматнаяСтрока = "ДФ=dd.MM.yy";
    КонецЕсли;

    Запрос.УстановитьПараметр("НачалоПериода", Период.ДатаНачала);
    Запрос.УстановитьПараметр("КонецПериода", Период.ДатаОкончания);
    Запрос.УстановитьПараметр("Биржа", Биржа);
    Запрос.УстановитьПараметр("ВалютаЧислитель", ВалютаЧислитель);
    Запрос.УстановитьПараметр("ВалютаЗнаменатель", ВалютаЗнаменатель);

    тзКурсы = Запрос.Выполнить().Выгрузить();
    тзКурсы.Сортировать("Период");
    КурсМин = 10000000000000;

    Элементы.График.Видимость = Истина;
    График.Обновление = Ложь;
    График.Очистить();

    Серия = График.Серии.Добавить(
    ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВалютаЧислитель,"Наименование")+"/"
    +ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВалютаЗнаменатель,"Наименование")
    );

    Для Каждого Курс Из тзКурсы Цикл
    КурсМин = Мин(КурсМин, Курс.Мин);
    Точка = График.УстановитьТочку(Формат(Курс.Период, ФорматнаяСтрока));
    График.УстановитьЗначение(Точка, Серия, Курс.Откр);
    Точка = График.УстановитьТочку(Формат(Курс.Период, ФорматнаяСтрока)+"_High");
    График.УстановитьЗначение(Точка, Серия, Курс.Макс);
    Точка = График.УстановитьТочку(Формат(Курс.Период, ФорматнаяСтрока)+"_Low");
    График.УстановитьЗначение(Точка, Серия, Курс.Мин);
    Точка = График.УстановитьТочку(Формат(Курс.Период, ФорматнаяСтрока)+"_Close");
    График.УстановитьЗначение(Точка, Серия, Курс.Закр);
    КонецЦикла;

    ОсьY = График.ОсьЗначений;
    ОсьY.МинимальноеЗначение = КурсМин;
    ОсьY.СпособОпределенияМинимальногоЗначения = СпособОпределенияОграничивающегоЗначенияДиаграммы.ИспользоватьЗначение;
    График.Обновление = Истина;

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

p/s Конфигуратор платформы 8.3.17.1549 падает, если выставить тип диаграммы Биржевая "свеча". Поэтому в свойствах снимаем флажок с Видимость, и программно его в коде ставим = Истина.
---
Истребитель мне в ангар!
Я методом тыка сам допёр, слава богам!
Оказывается, для того чтобы указать 4 значения свечи нужно создать 4 точки с разным значением. Значение первой точки будет отражено в подписи значений оси X.

Вот полный код, если кому интересно:

```1c
    &НаСервере
    Процедура ОбновитьГрафикНаСервере()
    Запрос = Новый Запрос;
    Если ТекущийТаймФрейм = Перечисления.РасшРС_Таймфреймы.M1 Тогда
    Запрос.Текст =
    "...";
    ФорматнаяСтрока = "ДФ='dd.MM HH:mm'";
    ИначеЕсли ТекущийТаймФрейм = Перечисления.РасшРС_Таймфреймы.M30 Тогда
    Запрос.Текст =
    "...";
    Запрос.УстановитьПараметр("ДваМесяцаНазад", ТекущаяДата() - 2 * 30 * 24*3600);
    ФорматнаяСтрока = "ДФ='dd.MM HH:mm'";
    ИначеЕсли ТекущийТаймФрейм = Перечисления.РасшРС_Таймфреймы.H1 Тогда
    Запрос.Текст =
    "...";
    Запрос.УстановитьПараметр("ДваМесяцаНазад", ТекущаяДата() - 2 * 30 * 24*3600);
    ФорматнаяСтрока = "ДФ='dd.MM HH:mm'";
    ИначеЕсли ТекущийТаймФрейм = Перечисления.РасшРС_Таймфреймы.H4 Тогда
    Запрос.Текст =
    "...";
    Запрос.УстановитьПараметр("ДваМесяцаНазад", ТекущаяДата() - 2 * 30 * 24*3600);
    ФорматнаяСтрока = "ДФ='dd.MM.yy HH:mm'";
    Иначе //Дни
    Запрос.Текст =
    "ВЫБРАТЬ
    | РасшРС_ИсторияБиржевыхКурсов.Период КАК Период,
    | РасшРС_ИсторияБиржевыхКурсов.Курс КАК Курс
    |ПОМЕСТИТЬ КурсВалютнойПары
    |ИЗ
    | РегистрСведений.РасшРС_ИсторияБиржевыхКурсов КАК РасшРС_ИсторияБиржевыхКурсов
    |ГДЕ
    | РасшРС_ИсторияБиржевыхКурсов.Период МЕЖДУ &НачалоПериода И &КонецПериода
    | И РасшРС_ИсторияБиржевыхКурсов.Биржа = &Биржа
    | И РасшРС_ИсторияБиржевыхКурсов.ВалютаЧислитель = &ВалютаЧислитель
    | И РасшРС_ИсторияБиржевыхКурсов.ВалютаЗнаменатель = &ВалютаЗнаменатель
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | НАЧАЛОПЕРИОДА(КурсВалютнойПары.Период, ДЕНЬ) КАК Период,
    | МАКСИМУМ(КурсВалютнойПары.Курс) КАК Макс,
    | МИНИМУМ(КурсВалютнойПары.Курс) КАК Мин,
    | МИНИМУМ(КурсВалютнойПары.Период) КАК ПериодОткрытия,
    | МАКСИМУМ(КурсВалютнойПары.Период) КАК ПериодЗакрытия
    |ПОМЕСТИТЬ МаксМин
    |ИЗ
    | КурсВалютнойПары КАК КурсВалютнойПары
    |
    |СГРУППИРОВАТЬ ПО
    | НАЧАЛОПЕРИОДА(КурсВалютнойПары.Период, ДЕНЬ)
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ ПЕРВЫЕ 200
    | МаксМин.Период КАК Период,
    | КурсОткрытия.Курс КАК Откр,
    | МаксМин.Макс КАК Макс,
    | МаксМин.Мин КАК Мин,
    | КурсЗакрытия.Курс КАК Закр
    |ИЗ
    | МаксМин КАК МаксМин
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ КурсВалютнойПары КАК КурсОткрытия
    | ПО МаксМин.ПериодОткрытия = КурсОткрытия.Период
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ КурсВалютнойПары КАК КурсЗакрытия
    | ПО МаксМин.ПериодЗакрытия = КурсЗакрытия.Период
    |
    |УПОРЯДОЧИТЬ ПО
    | Период УБЫВ";
    ФорматнаяСтрока = "ДФ=dd.MM.yy";
    КонецЕсли;

    Запрос.УстановитьПараметр("НачалоПериода", Период.ДатаНачала);
    Запрос.УстановитьПараметр("КонецПериода", Период.ДатаОкончания);
    Запрос.УстановитьПараметр("Биржа", Биржа);
    Запрос.УстановитьПараметр("ВалютаЧислитель", ВалютаЧислитель);
    Запрос.УстановитьПараметр("ВалютаЗнаменатель", ВалютаЗнаменатель);

    тзКурсы = Запрос.Выполнить().Выгрузить();
    тзКурсы.Сортировать("Период");
    КурсМин = 10000000000000;

    Элементы.График.Видимость = Истина;
    График.Обновление = Ложь;
    График.Очистить();

    Серия = График.Серии.Добавить(
    ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВалютаЧислитель,"Наименование")+"/"
    +ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВалютаЗнаменатель,"Наименование")
    );

    Для Каждого Курс Из тзКурсы Цикл
    КурсМин = Мин(КурсМин, Курс.Мин);
    Точка = График.УстановитьТочку(Формат(Курс.Период, ФорматнаяСтрока));
    График.УстановитьЗначение(Точка, Серия, Курс.Откр);
    Точка = График.УстановитьТочку(Формат(Курс.Период, ФорматнаяСтрока)+"_High");
    График.УстановитьЗначение(Точка, Серия, Курс.Макс);
    Точка = График.УстановитьТочку(Формат(Курс.Период, ФорматнаяСтрока)+"_Low");
    График.УстановитьЗначение(Точка, Серия, Курс.Мин);
    Точка = График.УстановитьТочку(Формат(Курс.Период, ФорматнаяСтрока)+"_Close");
    График.УстановитьЗначение(Точка, Серия, Курс.Закр);
    КонецЦикла;

    ОсьY = График.ОсьЗначений;
    ОсьY.МинимальноеЗначение = КурсМин;
    ОсьY.СпособОпределенияМинимальногоЗначения = СпособОпределенияОграничивающегоЗначенияДиаграммы.ИспользоватьЗначение;
    График.Обновление = Истина;

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

p/s Конфигуратор платформы 8.3.17.1549 падает, если выставить тип диаграммы Биржевая "свеча". Поэтому в свойствах снимаем флажок с Видимость, и программно его в коде ставим = Истина.
---
в актуальных версиях платформы уже не падает конфигуратор, с флажком "Видимость" уже можно не шаманить