Показано с 1 по 2 из 2
  1. #1
    Гость форума Аватар для Reraru
    Регистрация
    13.02.2020
    Сообщений
    2
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях

    Smile Разработка конфигурации Тест.

    Есть справочник Вопросы содержащий реквизит ТекстВопроса (тип строка) и справочник Ответы с реквизитом правильный ответ (булево). Вместе, эти 2 справочника нужны чтобы пользователь мог составить тест тому кого собирается тестировать: вводится текст вопроса в реквизит ТекстВопроса
    1 Перемешивание вопросов и ответов которые заданы к вопросу.
    Какую задать команду или обработчик чтобы порядок реквизитов каждый раз был бы случайным?
    Пользователь при нажатии на кнопку перемешает созданный порядок вопросов и ответов к ним, причём изменяются только номер вопроса и положение реквизитов в созданном вопросе.
    Возможный вариант: прикрутить ГСЧ к их именам, но я пока не знаю как именно это нужно сделать.
    Второй вариант: код справочника рандомно прописывается по нажатию кнопки. И выводи вопросы отсортированные по коду. Но здесь следует учесть что код будет в пределах заданных ответов отдельно к каждому вопросу: в одном вопросе может быть разное число ответов.
    2 Выбор нескольких вариантов правильных ответов проходящим тест и их засчитывание как верное, если пользователь при создании вопроса задал несколько правильных ответов. Пока что я не знаю как это реализовать, у меня получилось сделать пока что только так: 1 вопрос - 1 верный ответ.
    3 Как уместить несколько вопросов с ответами на одной странице, и кнопкам: назад и вперед задать горячие клавиши на лево и право (я про кнопки в виде стрелок) ?

    [Только зарегистрированные пользователи могут видеть ссылки. ]

    1. Код формы Главная: эта страница по которой пользователь после авторизации или регистрации, в случае если он гость, попадает на страницу где по нажатию кнопки Начать тест он проходит тест.

    Код:
    &НаКлиенте
    Процедура НачатьТест(Команда)
    	ТестВПроцессе=Истина;
    	ЗапВопросыОтветы();
    	Если ВопросыОтветы.Количество()=0 Тогда
    		Предупреждение ("Тест не найден. Обратитесь к администратору");
    		Возврат;
    	КонецЕсли;	
    	Элементы.Начало.Видимость=Ложь;
    	Элементы.Тест.Видимость=Истина;
    	НомерТекущегоВопроса=1;
    	ЗапОтветы();
    КонецПроцедуры
    
    
    &НаКлиенте
    Процедура УстановитьВидимость()
    	Если НомерТекущегоВопроса=1 Тогда
    		Элементы.Назад.Видимость=Ложь;
    		Элементы.ЗавершитьТест.Видимость=Ложь;
    	ИначеЕсли ВопросыОтветы.Количество()= НомерТекущегоВопроса Тогда
    		Элементы.Вперед.Видимость=Ложь;
    		Элементы.ЗавершитьТест.Видимость=Истина;
    	Иначе	
    		Элементы.Назад.Видимость=Истина;
    		Элементы.Вперед.Видимость=Истина;
    		Элементы.ЗавершитьТест.Видимость=Ложь;
    	КонецЕсли;	
    КонецПроцедуры	
    
    &НаКлиенте
    Процедура Вперед(Команда)
    	НомерТекущегоВопроса=НомерТекущегоВопроса+1;
    	ЗапОтветы();
    КонецПроцедуры
    
    &НаКлиенте
    Процедура Назад(Команда)
    	НомерТекущегоВопроса=НомерТекущегоВопроса-1;
    	ЗапОтветы();
    КонецПроцедуры
    
    &НаКлиенте
    Процедура ЗапОтветы()
    	УстановитьВидимость();
    	ЗапОтветыНаСервере();
    КонецПроцедуры	
    
    &НаСервере
    Процедура ЗапОтветыНаСервере()
    	ВариантОтвета.Очистить();
    	Стр=ВопросыОтветы.Получить(НомерТекущегоВопроса-1);
    	З=Новый Запрос;
    	З.Текст="
    	|ВЫБРАТЬ
    	|	Ссылка
        |ИЗ
        |	Справочник.Ответы
    	|ГДЕ Владелец=&Вопрос
    	|УПОРЯДОЧИТЬ ПО КОД";
    	З.УстановитьПараметр("Вопрос",Стр.Вопрос);
    	Выб=З.Выполнить().Выбрать();
    	Пока Выб.Следующий() Цикл
    		ВариантОтвета.Добавить(Выб.Ссылка,Выб.Ссылка.Наименование);
    	КонецЦикла;	
    	Если НЕ Стр.Ответ.Пустая() Тогда
    		Зн=ВариантОтвета.НайтиПоЗначению(Стр.Ответ);
    		Зн.Пометка=Истина;
    	КонецЕсли;	
    	Элементы.ТекстВопроса.Заголовок=Стр.Вопрос.Наименование+Символы.ПС+Стр.Вопрос.ТекстВопроса;
    КонецПроцедуры	
    
    &НаСервере
    Процедура ЗапВопросыОтветы()
    	З=Новый Запрос;
    	З.Текст="
    	|ВЫБРАТЬ
    	|Ссылка КАК Вопрос
    	|ИЗ Справочник.Вопросы
    	|ГДЕ НЕ ПометкаУдаления
    	|УПОРЯДОЧИТЬ ПО Код";
    	ВопросыОтветы.Загрузить(З.Выполнить().Выгрузить());
    КонецПроцедуры	
    
    &НаСервере
    Функция ПроверкаОтветаНаВсеВопросы(КолПО)
    	фл=Истина;
    	Для Каждого Стр Из ВопросыОтветы Цикл
    		Если Стр.Ответ.Пустая() Тогда
    			фл=Ложь;
    			Сообщить("Вы не ответили на "+Стр.Вопрос.Наименование);
    		КонецЕсли;	
    		Если Стр.Ответ.ПравильныйОтвет Тогда КолПО=КолПО+1; КонецЕсли;
    	КонецЦикла;	
    	Возврат фл;
    КонецФункции	
    
    &НаКлиенте
    Процедура ЗавершитьТест(Команда)
    	ОтветНаВопрос=Вопрос("Вы действительно хотите закончить тест?",РежимДиалогаВопрос.ДаНет);
        Если ОтветНаВопрос=КодВозвратаДиалога.Нет Тогда Возврат КонецЕсли;
    	КолПО=0;
    	Если НЕ ПроверкаОтветаНаВсеВопросы(КолПО) Тогда Возврат КонецЕсли;
    	ТестВПроцессе=Ложь;
    	Элементы.Тест.Видимость=Ложь;
    	Элементы.РезультатТекст.Заголовок="Вы ответили правильно на "+КолПО+" вопросов из "+ВопросыОтветы.Количество();
    	Элементы.РезультатТекст.Видимость=Истина;
    	
    	
    КонецПроцедуры
    
    
    &НаКлиенте
    Процедура ВариантОтветаПометкаПриИзменении(Элемент)
    	Стр=Элементы.ВариантОтвета.ТекущиеДанные;
    	Если Стр.Пометка Тогда
    		Для Каждого Зн Из ВариантОтвета Цикл
    			Если Стр.Значение=Зн.Значение Тогда Продолжить КонецЕсли;
    			Зн.Пометка=Ложь;
    		КонецЦикла;
    		Зн=ВопросыОтветы.Получить(НомерТекущегоВопроса-1);
    		Зн.Ответ=Стр.Значение;
    	Иначе	
    		Зн=ВопросыОтветы.Получить(НомерТекущегоВопроса-1);
    		Зн.Ответ=NULL;
    	КонецЕсли;	
    КонецПроцедуры
    
    &НаКлиенте
    Процедура ПриОткрытии(Отказ)
    	ТестВПроцессе=Ложь;
    КонецПроцедуры
    
    &НаКлиенте
    Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
    	Отказ=ТестВПроцессе;
    КонецПроцедуры
    
    &НаКлиенте
    Процедура Войти(Команда)
    	ОткрытьФорму("ОбщаяФорма.Авторизация");
    КонецПроцедуры
    2. Код формы элемента и формы списка справочника Вопросы.
    [Только зарегистрированные пользователи могут видеть ссылки. ]
    [Только зарегистрированные пользователи могут видеть ссылки. ]

    Справочник Ответы имеет форму элемента и форму списка: пока что без кода.

  2. #2
    Гость форума Аватар для Reraru
    Регистрация
    13.02.2020
    Сообщений
    2
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях

    По умолчанию Re: Разработка конфигурации Тест.

    Я жду ответы, консультации и помощи с примерным кодом.

Похожие темы

  1. Тест для андроид 1С Профессионал Управление торговлей 8
    от pogoda74 в разделе Обучение 1с. Курсы. Подготовка к экзаменам, тестам 1с
    Ответов: 0
    Последнее сообщение: 05.07.2016, 19:52
  2. Разработка конфигурации
    от ganster123 в разделе Конфигурирование, программирование 1С - Предприятие
    Ответов: 2
    Последнее сообщение: 24.02.2014, 14:55
  3. Прокси HTTP и SOCKS от AwmProxy! Бесплатный тест
    от awmproxy в разделе Интернет и сети
    Ответов: 1
    Последнее сообщение: 01.09.2011, 08:59
  4. Сравнительный тест веб-браузеров от ArsTechnica
    от DEL в разделе Новости Microsoft Windows
    Ответов: 0
    Последнее сообщение: 19.10.2010, 15:50
  5. Тест американских военных пилотов. Испытайте себя!
    от Speaker18 в разделе Комната отдыха
    Ответов: 2
    Последнее сообщение: 15.02.2008, 19:38

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •