Имя: Пароль:
1C
1С v8
Построение круговой диаграммы по результатам теста.
0 Reraru
 
11.02.20
10:41
Есть справочник вопросы и справочник ответы, которые содержат вопросы (реквизит ТекстВопроса) в справочнике вопросы и ответы (реквизит ПравильныеОтветы) к тесту в справочнике Ответы. Регистров накопления, табличной части и документов нет.
Когда пользователь завершил тест то ему формируется то насколько правильно он ответил. Всего 22 вопроса, если вопросы будут удаляться или добавлятся то эти изменения должны отражаться на диаграмме.
Количество верных ответов должно влиять на диаграмму:
оценка 5 - 22, 4 - 19, 3 - 13, 2 - 5.
Я неправильно построил диаграмму и теперь не понимаю что  мне исправить или добавить нужно новые объекты в конфигурацию.

Сама диаграмма имеет реквизит на форме Диаграмма, типа - круговая, а запрос построен по справочнику Ответы. Что как я уже понял - неправильно.

&НаКлиенте
Процедура ЗавершитьТест(Команда)
    ОтветНаВопрос=Вопрос("Вы действительно хотите закончить тест?",РежимДиалогаВопрос.ДаНет);
    if ОтветНаВопрос=КодВозвратаДиалога.Нет then return endif;
    КолПО=0;
    if НЕ ПроверкаОтветаНаВсеВопросы(КолПО) then return endif;
    ТестВПроцессе=Ложь;
    Элементы.Тест.Видимость=Ложь;
    Элементы.РезультатТекст.Заголовок="Вы ответили правильно на "+КолПО+" вопросов из "+ВопросыОтветы.Количество();
    Элементы.РезультатТекст.Видимость=Истина;
    
ВывестиНаСервере();
    
КонецПроцедуры

Процедура ВывестиНаСервере()

        //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

    
КонецПроцедуры
1 vicof
 
11.02.20
10:44
"if ОтветНаВопрос=КодВозвратаДиалога.Нет then return endif;"
Серьезно)
2 vicof
 
11.02.20
10:45
Диаграмма = Элементы.Диаграмма;
Diagram = Elemens.Diagram; не?))
3 Reraru
 
11.02.20
10:47
(1) Это часть кода относящегося именно к диаграмме. Чем дополнить я пока что не знаю.
4 Reraru
 
11.02.20
10:56
(2) если будет проще, то я могу скинуть саму информационную базу.
5 vicof
 
11.02.20
11:00
Спасибо, не надо. Ты даже не описал проблему.
6 Reraru
 
11.02.20
11:05
(5) как не описал? У меня проблема в неправильном выводе диаграммы
7 vicof
 
11.02.20
11:10
И в чем эта неправильность?
8 Reraru
 
11.02.20
11:26
(1) Когда я формирую запрос то из какого справочника мне брать данные? Так как диаграмма строится по количеству правильных ответов я брал справочник Ответы.
9 Reraru
 
11.02.20
11:31
(7) я не знаю как мне правильно построить запрос для вывода нужной мне диаграммы.
10 Reraru
 
11.02.20
11:41
(7) Процедура ВывестиНаСервере()
        
           //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Ответы.ПравильныйОтвет КАК ПравильныйОтвет
        |ИЗ
        |    Справочник.Ответы КАК Ответы
        |
        |СГРУППИРОВАТЬ ПО
        |    Ответы.ПравильныйОтвет
        |
        |УПОРЯДОЧИТЬ ПО
        |    ПравильныйОтвет
        |ИТОГИ ПО
        |    ПравильныйОтвет";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    Диаграмма.Обновление = Ложь;
    Диаграмма.Очистить();
    Диаграмма.АвтоТранспонирование = Ложь;
    
    ВыборкаПравильныйОтвет = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    Пока ВыборкаПравильныйОтвет.Следующий() Цикл
        Серия = Диаграмма.УстановитьСерию(ВыборкаПравильныйОтвет.ПравильныйОтвет);
        Серия.Текст = ВыборкаПравильныйОтвет.ПравильныйОтвет;
        Серия.Расшифровка = ВыборкаПравильныйОтвет.ПравильныйОтвет;
        Диаграмма.УстановитьЗначение(Точка, Серия, ВыборкаПравильныйОтвет., Серия.Расшифровка);
    КонецЦикла;
    
    Диаграмма.АвтоТранспонирование = Истина;
    Диаграмма.Обновление = Истина;
    
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

    
КонецПроцедуры
11 Reraru
 
11.02.20
11:43
(7) Когда я формирую запрос с обработкой результата в диаграмму то получаю следующие ошибки. Эти ошибки появляются сразу после формирования запроса:

{ОбщаяФорма.Главная.Форма(151,69)}: Ожидается идентификатор
        Диаграмма.УстановитьЗначение(Точка, Серия, ВыборкаПравильныйОтвет.<<?>>, Серия.Расшифровка); (Проверка: Сервер)
{ОбщаяФорма.Главная.Форма(151,70)}: Ожидается символ ')'
        Диаграмма.УстановитьЗначение(Точка, Серия, ВыборкаПравильныйОтвет.,<<?>> Серия.Расшифровка); (Проверка: Сервер)
{ОбщаяФорма.Главная.Форма(151,69)}: Ожидается идентификатор
        Диаграмма.УстановитьЗначение(Точка, Серия, ВыборкаПравильныйОтвет.<<?>>, Серия.Расшифровка); (Проверка: Тонкий клиент)
{ОбщаяФорма.Главная.Форма(151,70)}: Ожидается символ ')'
        Диаграмма.УстановитьЗначение(Точка, Серия, ВыборкаПравильныйОтвет.,<<?>> Серия.Расшифровка); (Проверка: Тонкий клиент)
12 vicof
 
11.02.20
12:10
Точки убери
13 Reraru
 
11.02.20
15:07
(12)     Пока ВыборкаПравильныйОтвет.Следующий() Цикл
        Серия = Диаграмма.УстановитьСерию(ВыборкаПравильныйОтвет.ПравильныйОтвет);
        Серия.Текст = ВыборкаПравильныйОтвет.ПравильныйОтвет;
        Серия.Расшифровка = ВыборкаПравильныйОтвет.ПравильныйОтвет;
        Диаграмма.УстановитьЗначение(Точка, Серия, ВыборкаПравильныйОтвет, Серия.Расшифровка);
    КонецЦикла;

{ОбщаяФорма.Главная.Форма(140,32)}: Переменная не определена (Точка)
        Диаграмма.УстановитьЗначение(<<?>>Точка, Серия, ВыборкаПравильныйОтвет, Серия.Расшифровка); (Проверка: Сервер)