Версия для печати темы (https://pro1c.org.ua/index.php?s=5ee1b0bcb334be9dd4df424c7db282b8&showtopic=30843)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Диаграмма на форме ОБРАБОТКИ

Автор: Pavlik1c 14.07.16, 12:06

Возможно ли отображение любой диаграммы на форме обработки, а не в отчете? Хочу сделать обработку: по нажатию кнопки чтобы формировалась диаграмма, а данные брались из запроса. Код ниже не работает.

Процедура КнопкаВыполнитьНажатие(Диаграмма)
    
          //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
        |    ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Номенклатура),
        |    РеализацияТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент,
        |    ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Ссылка.Контрагент),
        |    РеализацияТоваровУслугТовары.Сумма КАК Сумма
        |ИЗ
        |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
        |ИТОГИ
        |    СУММА(Сумма)
        |ПО
        |    Номенклатура,
        |    Контрагент";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    Диаграмма.Обновление = Ложь;
    Диаграмма.Очистить();
    Диаграмма.АвтоТранспонирование = Ложь;
    
    ВыборкаНоменклатура = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    Пока ВыборкаНоменклатура.Следующий() Цикл
        Серия = Диаграмма.УстановитьСерию(ВыборкаНоменклатура.Номенклатура);
        Серия.Текст = ВыборкаНоменклатура.НоменклатураПредставление;
        Серия.Расшифровка = ВыборкаНоменклатура.Номенклатура;
    
        ВыборкаКонтрагент = ВыборкаНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
        Пока ВыборкаКонтрагент.Следующий() Цикл
            Точка = Диаграмма.УстановитьТочку(ВыборкаКонтрагент.Контрагент);
            Точка.Текст = ВыборкаКонтрагент.КонтрагентПредставление;
            Точка.Расшифровка = ВыборкаКонтрагент.Контрагент;
            Диаграмма.УстановитьЗначение(Точка, Серия, ВыборкаКонтрагент.Сумма);
        КонецЦикла;
    КонецЦикла;
    
    Диаграмма.АвтоТранспонирование = Истина;
    Диаграмма.Обновление = Истина;
    

    
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

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







Автор: Petre 14.07.16, 12:34

Pavlik1c @ Сегодня, 13:06 *,
Вместо

Процедура КнопкаВыполнитьНажатие(Диаграмма)

напишите
Процедура КнопкаВыполнитьНажатие(Кнопка)
    Диаграмма = ЭлементыФормы.Диаграмма1;

где "Диаграмма1" - имя элемента формы типа "ПолеДиаграммы".

Автор: Pavlik1c 14.07.16, 13:04

Не сработало:


Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    Диаграмма = ЭлементыФормы.Диаграмма1;
    
          //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
     Ном = Справочники.Контрагенты.НайтиПоНаименованию("Епіцентр К, ТОВ");
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
        |    ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Номенклатура),
        |    РеализацияТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент,
        |    ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Ссылка.Контрагент),
        |    РеализацияТоваровУслугТовары.Сумма КАК Сумма
        |ИЗ
        |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
        |ГДЕ
        |    РеализацияТоваровУслугТовары.Номенклатура = &Ном
        |ИТОГИ
        |    СУММА(Сумма)
        |ПО
        |    Номенклатура,
        |    Контрагент";
        Запрос.УстановитьПараметр("Ном",Ном);
        
    
    РезультатЗапроса = Запрос.Выполнить();
        Диаграмма.Обновление = Ложь;
    Диаграмма.Очистить();
    Диаграмма.АвтоТранспонирование = Ложь;
    
    ВыборкаНоменклатура = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    Пока ВыборкаНоменклатура.Следующий() Цикл
        Серия = Диаграмма.УстановитьСерию(ВыборкаНоменклатура.Номенклатура);
        Серия.Текст = ВыборкаНоменклатура.НоменклатураПредставление;
        Серия.Расшифровка = ВыборкаНоменклатура.Номенклатура;
    
        ВыборкаКонтрагент = ВыборкаНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
        Пока ВыборкаКонтрагент.Следующий() Цикл
            Точка = Диаграмма.УстановитьТочку(ВыборкаКонтрагент.Контрагент);
            Точка.Текст = ВыборкаКонтрагент.КонтрагентПредставление;
            Точка.Расшифровка = ВыборкаКонтрагент.Контрагент;
            Диаграмма.УстановитьЗначение(Точка, Серия, ВыборкаКонтрагент.Сумма);
        КонецЦикла;
    КонецЦикла;
    
    Диаграмма.АвтоТранспонирование = Истина;
    Диаграмма.Обновление = Истина;    
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

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


Автор: Petre 14.07.16, 13:11

Pavlik1c @ Сегодня, 14:04 *,
Что не сработало? Элемент "ПолеДиаграммы" есть на форме? Какое имеет имя?

Автор: Pavlik1c 14.07.16, 13:13

Petre @ Сегодня, 14:11 *,
Свойство элемента формы Диаграмма: Имя: Диаграмма1;

Автор: Petre 14.07.16, 13:35

Pavlik1c @ Сегодня, 14:13 *,
На кнопку "Выполнить" нажимали?

Автор: Pavlik1c 14.07.16, 13:37

Petre @ Сегодня, 14:35 *,
:47067070:Много раз нажимал...

Автор: Petre 14.07.16, 13:39

Pavlik1c @ Сегодня, 14:04 *,
Ну да, как вы думаете, существует ли номенклатура равная конрагенту "Эпицентр"?

Автор: Pavlik1c 14.07.16, 13:52

Petre @ Сегодня, 14:39 http://pro1c.org.ua/index.php?act=findpost&pid=114466,
Запутался в 3-ех соснах)))) Перепутал справочник Контрагентов с Номенклатурой)))
Картинка появилась ))) Ура!!!!

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua