Имя: Пароль:
1C
1C 7.7
v7: Построение графика в 7.7.
0 baribars
 
18.01.22
11:34
Есть два показателя - Сумма и количество. Хочу вывести их в график.
Диаграмма.Обновление(0);
Диаграмма.Заголовок = "Продажи ("+ПериодСтр(ВыбНачПериода,ВыбКонПериода)+")";
Диаграмма.УстановитьИмяСерии(1,"Сумма");
Диаграмма.УстановитьИмяСерии(2,"Количество");
Диаграмма.АвтоУстановкаИменТочек(0);
А = 1;
    
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку() = 1 Цикл
Диаграмма.УстановитьИмяТочки(А,ТЗ.ВремяЧека);
Диаграмма.УстановитьЗначение(А, 1, ТЗ.Сумма);
Диаграмма.УстановитьЗначение(А, 2,ТЗ.Количество);
А = А+1;
КонецЦикла;
Диаграмма.Обновление(1);

Но почему-то выводит только один показатель, второй - количество всегда одинаков. Если убрать сумму, то количество показывает на графике нормально. Два нельзя сделать?
1 Volodja
 
18.01.22
16:45
(0) Можно и больше.
Вот например графики курсов валют
Тип диаграммы  - График

Процедура График_Диаграмма(Диаграмма)
    сзСерии=СоздатьОбъект("СписокЗначений");
    спрВалюты=СоздатьОбъект("Справочник.Валюты");
    спрВалюты.ВыбратьЭлементы();
    Пока спрВалюты.ПолучитьЭлемент() = 1 Цикл
        текВалюта=спрВалюты.ТекущийЭлемент();
        Если текВалюта.ПометкаУдаления()=1 Тогда
            Продолжить;
        КонецЕсли;
        Если (ПустаяСтрока(текВалюта.БуквенныйКод)=1) или (текВалюта.БуквенныйКод="KZT") Тогда
            Продолжить;
        КонецЕсли;
        _НаименованиеВалюты=текВалюта.Наименование;
        сзСерии.ДобавитьЗначение(текВалюта,_НаименованиеВалюты);
        Диаграмма.УстановитьИмяСерии(сзСерии.РазмерСписка(), _НаименованиеВалюты);
    КонецЦикла;
    Диаграмма.Заголовок="Динамика курсов валют за "+ПериодСтр(Дата1,Дата2);
    Диаграмма.Обновление(0);
    
    //Диаграмма.АвтоУстановкаИменТочек(0);
    //Диаграмма.АвтоУстановкаИменСерий(0);
    //Диаграмма.КоличествоСерий(сзСерии.РазмерСписка());

    
    Для _ИндексСерии=1 по сзСерии.РазмерСписка() Цикл
        _Валюта=сзСерии.ПолучитьЗначение(_ИндексСерии);
        _ИндексТочки=0;
        Пока Дата1+_ИндексТочки <= Дата2 Цикл
            _Дата=Дата1+_ИндексТочки;
            _Курс=_Валюта.Курс.Получить(_Дата);
            _ИндексТочки=_ИндексТочки+1;
            Диаграмма.УстановитьИмяТочки(_ИндексТочки, _Дата);
            Диаграмма.УстановитьЗначение(_ИндексТочки,_ИндексСерии,_Курс , СокрЛП(_Курс));
        КонецЦикла;
    КонецЦикла;
    Диаграмма.Обновление(1);
КонецПроцедуры
2 baribars
 
18.01.22
16:53
(1) так почему тогда у меня не выводит? код идентичный вашему
3 Volodja
 
18.01.22
16:56
(2) А количество, случаем, в ТЗ не одинаково ?
4 Volodja
 
18.01.22
17:00
И еще, если  у вас если суммы большие (200000), а количество малое (1 или 2), то график с нулем видимо сливается
5 Volodja
 
18.01.22
17:01
(4) Точно. проверил. Он у меня с 0 слился
6 baribars
 
18.01.22
17:04
(4) да, так и выходит, суммы большие, а количество меньше и линия количества идет всегда по нулю
7 Volodja
 
18.01.22
17:08
(6) Тоже помнится наступал на эти грабли. 1С по другому ,видимо, не может. Автомасштабирование нужно тогда. Умножай количество на некий коэффициент тогда. А в наименовании выводи оригинал. Костыли, конечно.
8 baribars
 
18.01.22
17:23
(7) да, так и вышел из ситуации - количество умножаю на большое число и тогда наглядно выходит. Спасибо за наводку, голову сломал, почему всегда ноль)))
9 Volodja
 
18.01.22
17:30
(8) Еще можно две диаграммы рядом расположить. Так шкала будет в порядке.