Имя: Пароль:
1C
1С v8
УТ10.3. Обычные формы и график
0 AlexKulikov
 
08.12.17
11:54
Добрый день, уважаемые форумчане.

Подскажите пожалуйста, как правильно разместить диаграмму на обычной форме?
На данный момент, у меня есть вот такой код:

Процедура КнопкаВыполнитьНажатие(Кнопка)
    
   ЭлементыФормы.ПолеТБ.Очистить();    
   Диаг = ЭлементыФормы.Добавить(Тип("Диаграмма"), "Диаграмма", Истина, ЭлементыФормы.ПолеТБ);
   Диаг.ТипДиаграммы = ТипДиаграммы.График;

    
   Диаг.Обновление = Ложь;
   Диаг.АвтоТранспонирование = Ложь;

   Диаг.Верх = 10;
   Диаг.Лево = 10;

   Диаг.Ширина = 300;
   Диаг.Высота = 150;

   КонтрагентыСоздание = Диаг.УстановитьСерию("Даты создания");

  
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    КОЛИЧЕСТВО(Контрагенты.Ссылка) КАК Ссылка,
                  |    Контрагенты.ДатаСоздания КАК ДатаСоздания
                  |ИЗ
                  |    Справочник.Контрагенты КАК Контрагенты
                  |
                  |СГРУППИРОВАТЬ ПО
                  |    Контрагенты.Ссылка,
                  |    Контрагенты.ДатаСоздания
                  |
                  |УПОРЯДОЧИТЬ ПО
                  |    ДатаСоздания";
   ТаблицаРезультатаЗапроса = Запрос.Выполнить().Выгрузить();
   ТаблицаРезультатаЗапроса.Свернуть("ДатаСоздания","Ссылка");
  
  
   Данные = Новый ГенераторСлучайныхЧисел;
   КоличествоКонтрагентов = ТаблицаРезультатаЗапроса.Количество();
  
   Для Каждого Элемента Из ТаблицаРезультатаЗапроса Цикл
       ДатаСоздания = Формат(Элемента.ДатаСоздания,"ДФ=dd.MM.yy");
       ТочкаДиаграммы = Диаг.УстановитьТочку(ДатаСоздания);
       Диаг.УстановитьЗначение(ТочкаДиаграммы, КонтрагентыСоздание, Элемента.Ссылка );
   КонецЦикла;


   Диаг.Обновление = Истина;
   Диаг.АвтоТранспонирование = Истина;
   Диаг.Видимость = Истина;
    
   КонецПроцедуры

Собственной код работает, но есть одна проблема, связана она вот  с этой строчкой кода:
Диаг = ЭлементыФормы.Добавить(Тип("Диаграмма"), "Диаграмма", Истина, ЭлементыФормы.ПолеТБ);

При повторном вызове этой процедуры, у меня уже есть элемент формы "диаграмма", соответственно мне нужно
либо удалять это элемент, либо каким то другим образом разместить на форме диаграмму.

В интернете есть несколько примеров, когда к диаграмме обращаются так
Диаграмма = ЭлементыФормы.Диаграмма;

Но насколько я понял, диаграмму можно разместить только в табличном документе?

С уважением, Алексей!
1 AlexKulikov
 
08.12.17
12:38
Решил так проблему с повторным вызовом процедуры.

Если ЭтаФорма.ЭлементыФормы.Найти("Диаграмма") <> Неопределено Тогда
       ЭлементыФормы.Диаграмма.Очистить();
       Диаг =  ЭлементыФормы.Диаграмма;
   Иначе
       Диаг = ЭлементыФормы.Добавить(Тип("Диаграмма"), "Диаграмма", Истина, ЭлементыФормы.ПолеТБ);
КонецЕсли;