Имя: Пароль:
1C
1С v8
Диаграмма в УФ
0 Kurbash
 
29.01.14
13:26
всем привет. на форме есть элемент с типом диаграмма. Есть запрос, который выводит данные для диаграммы. Как их увязать между собой или где почитатьь про это? гуглить пробовал
1 patapum
 
29.01.14
13:28
(0) СКД умеет сама в диаграмму выводить
2 jsmith82
 
29.01.14
13:28
плохо гуглил
3 Kurbash
 
29.01.14
13:29
(1)-мне надо на форму выводить, форма уже готова, из-за диаграммы неохота переделывать
(2)-вроде нормально, про УФ нет ничего
4 jsmith82
 
29.01.14
13:31
так же как и в 8.1 по сути
не знаю, что конкретно ты имеешь в виду
вот например
    Диаграмма = Продажи; // Продажи - реквизит формы
    Диаграмма.ТипДиаграммы = ТипДиаграммы.КруговаяОбъемная;
    Диаграмма.КоличествоТочек = 1;
    Диаграмма.КоличествоСерий = Таблица.Количество();
    Диаграмма.ВидПодписей = ВидПодписейКДиаграмме.Значение;
    
    Диаграмма.Точки[0].Текст = "";
    

    Для Итер =  0 По Таблица.Количество() - 1 Цикл
        Диаграмма.УстановитьЗначение(0, Итер, Таблица[Итер].Количество);
        Диаграмма.Серии[Итер].Текст = Таблица[Итер].НомГруппа.Наименование;
    КонецЕсли;
5 Kurbash
 
29.01.14
13:44
делаю так:

&НаСервере
Процедура СформироватьДиаграммуНаСервере()
    ЗапросПоТоварам=Новый запрос;
    ЗапросПоТоварам.Текст="ВЫБРАТЬ
                          |    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстаток КАК СуммаНачальныйОстаток,
                          |    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток КАК СуммаКонечныйОстаток,
                          |    ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК СуммаОборотДт,
                          |    ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КАК СуммаОборотКт,
                          |    ХозрасчетныйОстаткиИОбороты.Период
                          |ИЗ
                          |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачПер, &КонПер, Регистратор, , Счет = &СчетРасчетов, , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты";
    ЗапросПоТоварам.УстановитьПараметр("НачПер",Новый Граница(НачалоДня(ДатаС), ВидГраницы.Включая));
    ЗапросПоТоварам.УстановитьПараметр("КонПер",Новый Граница(КонецДня(ДатаПо), ВидГраницы.Включая));
    ЗапросПоТоварам.УстановитьПараметр("СчетРасчетов",ДСТовары);
    ЗапросПоТоварам.УстановитьПараметр("Организация",Организация);

    РезультатПоТоварам=запросПоТоварам.Выполнить().Выбрать();
    ТАбСчетов=новый ТаблицаЗначений;
ТабСчетов=запросПоТоварам.Выполнить().Выгрузить();
    Диаграмма = Диаграмма; // Продажи - реквизит формы

    Диаграмма.ТипДиаграммы = ТипДиаграммы.КруговаяОбъемная;
    Диаграмма.КоличествоТочек = 1;
    Диаграмма.КоличествоСерий = ТАбСчетов.Количество();
    Диаграмма.ВидПодписей = ВидПодписейКДиаграмме.Значение;
    
    Диаграмма.Точки[0].Текст = "";
    

    Для Итер =  0 По ТАбСчетов.Количество() - 1 Цикл
        Диаграмма.УстановитьЗначение(0, Итер, ТАбСчетов[Итер].Количество);
        Диаграмма.Серии[Итер].Текст = ТАбСчетов[Итер].НомГруппа.Наименование;
    КонецЦИкла;
КонецПроцедуры

ругается на поле не найдено(ТАбСчетов[Итер].Количество)
что не так сделал?
6 jsmith82
 
29.01.14
13:47
ну дык ставь то, что есть
типа ТАбСчетов[Итер].СуммаНачальныйОстаток
7 jsmith82
 
29.01.14
13:47
и вообще, что за диаграмму ты хочешь
график, круговая, гистограмма..
8 jsmith82
 
29.01.14
13:48
тебе, видимо, гистограмма нужна
9 RomaH
 
naïve
29.01.14
13:48
Функция ПолучитьАудиограммуПоТаблице(ТаблицаПроводимости,СреднееПоРечевымЧастотам = 0) Экспорт
    
    Макет = Документы.ИсследованиеСурдолога.ПолучитьМакет("ШаблонАудиограммы");
    
    Диаграмма = Макет.Рисунки.Аудиограмма1.Объект;
    
    //Диаграмма.УстановитьТочку(125);
    Диаграмма.УстановитьТочку(250);
    Диаграмма.УстановитьТочку(500);
    Диаграмма.УстановитьТочку(1000);
    Диаграмма.УстановитьТочку(2000);
    Диаграмма.УстановитьТочку(4000);
    Диаграмма.УстановитьТочку(8000);
    
    СуммаРечевых = 0;
    Делитель = 0;
    
    СерияЗаполнена = Ложь;

    Для Каждого ТочкаДиаграммы Из Диаграмма.Точки Цикл
        
        ЗначениеТочки = ТочкаДиаграммы.Значение;
        
        ПараметрыОтбора = Новый Структура("ТипУшнойПроводимости,Частота",Перечисления.ТипыУшнойПроводимости.ВоздушнаяПроводимость,ЗначениеТочки);
        
        СтрокиПроводимости = ТаблицаПроводимости.НайтиСтроки(ПараметрыОтбора);
        
        Если СтрокиПроводимости.Количество() > 0 Тогда
            Диаграмма.УстановитьЗначение(ТочкаДиаграммы,0,-СтрокиПроводимости[0].Децибел);
            Если СтрокиПроводимости[0].Децибел <> 0 Тогда
                СерияЗаполнена = Истина;    
            КонецЕсли;
        Иначе
            Диаграмма.УстановитьЗначение(ТочкаДиаграммы,0,0);
        КонецЕсли;
        
    КонецЦикла; //Получили заполненную серию по воздушной проводимости
    
    СуммаРечевых = СуммаРечевых
                    + Диаграмма.ПолучитьЗначение(1,0).Значение
                    + Диаграмма.ПолучитьЗначение(2,0).Значение
                    + Диаграмма.ПолучитьЗначение(3,0).Значение;
    
    Если Не СерияЗаполнена Тогда
        Диаграмма.Серии[0].Линия = Новый Линия(ТипЛинииДиаграммы.НетЛинии);    
        Диаграмма.Серии[0].Маркер = ТипМаркераДиаграммы.Нет;
    Иначе
        Делитель = Делитель + 3;
    КонецЕсли;
    
    СерияЗаполнена = Ложь;

    Для Каждого ТочкаДиаграммы Из Диаграмма.Точки Цикл
        
        ЗначениеТочки = ТочкаДиаграммы.Значение;
        
        ПараметрыОтбора = Новый Структура("ТипУшнойПроводимости,Частота",Перечисления.ТипыУшнойПроводимости.КостнаяПроводимость,ЗначениеТочки);
        
        СтрокиПроводимости = ТаблицаПроводимости.НайтиСтроки(ПараметрыОтбора);
        
        Если СтрокиПроводимости.Количество() > 0 Тогда
            Диаграмма.УстановитьЗначение(ТочкаДиаграммы,1,-СтрокиПроводимости[0].Децибел);
            Если СтрокиПроводимости[0].Децибел <> 0 Тогда
                СерияЗаполнена = Истина;    
            КонецЕсли;
        Иначе
            Диаграмма.УстановитьЗначение(ТочкаДиаграммы,1,0);
        КонецЕсли;
        
    КонецЦикла; //Получили заполненную серию по воздушной проводимости
    
    СуммаРечевых = СуммаРечевых
                    + Диаграмма.ПолучитьЗначение(1,1).Значение
                    + Диаграмма.ПолучитьЗначение(2,1).Значение
                    + Диаграмма.ПолучитьЗначение(3,1).Значение;
    
    Если Не СерияЗаполнена Тогда
        Диаграмма.Серии[1].Линия = Новый Линия(ТипЛинииДиаграммы.НетЛинии);    
        Диаграмма.Серии[1].Маркер = ТипМаркераДиаграммы.Нет;
    Иначе
        Делитель = Делитель + 3;
    КонецЕсли;
    
    СреднееПоРечевымЧастотам = -(СуммаРечевых / ?(Делитель = 0, 1, Делитель));
    
    Возврат Диаграмма;
    
КонецФункции
10 jsmith82
 
29.01.14
13:49
хотя нет, круговая
11 Kurbash
 
29.01.14
13:57
ну все, респект и уважуха, домой вовремя сегодня пойду
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.