Дипломная работа: Автоматизация процесса управления знаниями в ПАО "Нижнекамскенефтехим"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
107
ТЗ.ПолучитьСтрокуПоНомеру(Рандом);
ВарОтв = 0;
ПравОтв = 0;
НескОтв = "";
НескПрав = "";
НескОтв_1 = 0;
НескОтв_2 = 0;
НескОтв_3 = 0;
НескОтв_4 = 0;
ТекстВопр = ТЗ.ТекстВопроса;
Отв1 = ТЗ.Ответ1;
Отв2 = ТЗ.Ответ2;
Отв3 = ТЗ.Ответ3;
Отв4 = ТЗ.Ответ4;
Если ТЗ.ПравНесколько = Перечисление.ДаНет.Нет Тогда
ПравОтв = ТЗ.ПравОтв;
Форма.ИспользоватьСлой("ОдинОтвет", 1);
Форма.ИспользоватьСлой("НесколькоОтветов", 0);
Иначе
НП_1 = ТЗ.НескПрав_1;
НП_2 = ТЗ.НескПрав_2;
НП_3 = ТЗ.НескПрав_3;
НП_4 = ТЗ.НескПрав_4;
Форма.ИспользоватьСлой("ОдинОтвет", 0);
Форма.ИспользоватьСлой("НесколькоОтветов", 1);
КонецЕсли;
Иначе
//ТАЙМЕР
Таймер("Стоп");
ДокРез.ВремяСдачи = глВремяНаФорме;
ДокРез.ЗакончилосьВремя = Перечисление.ДаНет.Нет;
ДокРез.Процент = Окр(КолПрав/КолВопр*100,1,1);
Если ДокРез.Процент >= Константа.ПроцентСдачи Тогда
ДокРез.ТестСдан = Перечисление.ДаНет.Да;
Предупреждение("Тест окончен!
|Вы ответили правильно на " +
ДокРез.Процент + "% вопросов.
|Поздравляю! Тест сдан!");
Иначе
ДокРез.ТестСдан = Перечисление.ДаНет.Нет;
Предупреждение("Тест окончен!
108
|Вы ответили правильно на " +
ДокРез.Процент + "% вопросов.
|Для успешной сдачи теста нужно
правильно
|ответить не менее чем на " +
Константа.ПроцентСдачи + "% вопросов.");
КонецЕсли;
ДокРез.ТестОкончен = Перечисление.ДаНет.Да;
флОкончания = 1;
ДокРез.Записать();
ОткрытьФорму(ДокРез.ТекущийДокумент(),,1);
Форма.Закрыть();
КонецЕсли;
КонецПроцедуры
//**********************************************************************************
***
Процедура ЗаписатьОтвет()
ДокРез.НоваяСтрока();
ДокРез.Вопрос = ТекстВопр;
Если ТЗ.ПравНесколько = Перечисление.ДаНет.Нет Тогда
ДокРез.ДанОтв = ВарОтв;
ДокРез.ПравОтв = ПравОтв;
Иначе
ДокРез.ДанОтв = НескОтв;
ДокРез.ПравОтв = НескПрав;
КонецЕсли;
ДокРез.Верно = Верно;
ТЗ.УдалитьСтроку();
КонецПроцедуры
//**********************************************************************************
***
Процедура ДатьОтвет()
Если ТЗ.ПравНесколько = Перечисление.ДаНет.Нет Тогда
Если ВарОтв <> 0 Тогда
Если ПравОтв = ВарОтв Тогда
КолПрав = КолПрав + 1;
Верно = Перечисление.ДаНет.Да;
Иначе
Верно = Перечисление.ДаНет.Нет;
КонецЕсли;
109
ЗаписатьОтвет();
ТекВопр = ТекВопр + 1;
ПолучитьСлучайныйЭлемент();
Иначе
Предупреждение("Вы не выбрали вариант ответа!");
КонецЕсли;
Иначе
Если (НескОтв_1 = 0) И (НескОтв_2 = 0) И (НескОтв_3 = 0) И (НескОтв_4 = 0) Тогда
Предупреждение("Вы не выбрали вариант ответа!");
Иначе
Если (НескОтв_1 = НП_1) И (НескОтв_2 = НП_2) И (НескОтв_3 =
НП_3) И (НескОтв_4 = НП_4) Тогда
КолПрав = КолПрав + 1;
Верно = Перечисление.ДаНет.Да;
Иначе
Верно = Перечисление.ДаНет.Нет;
КонецЕсли;
Если НП_1 = 1 Тогда
НескПрав = Строка(НескПрав) + "1, ";
КонецЕсли;
Если НП_2 = 1 Тогда
НескПрав = Строка(НескПрав) + "2, ";
КонецЕсли;
Если НП_3 = 1 Тогда
НескПрав = Строка(НескПрав) + "3, ";
КонецЕсли;
Если НП_4 = 1 Тогда
НескПрав = Строка(НескПрав) + "4";
КонецЕсли;
Если НескОтв_1 = 1 Тогда
НескОтв = Строка(НескОтв) + "1, ";
КонецЕсли;
Если НескОтв_2 = 1 Тогда
НескОтв = Строка(НескОтв) + "2, ";
КонецЕсли;
Если НескОтв_3 = 1 Тогда
НескОтв = Строка(НескОтв) + "3, ";
КонецЕсли;
Если НескОтв_4 = 1 Тогда
НескОтв = Строка(НескОтв) + "4";
110
КонецЕсли;
ЗаписатьОтвет();
ТекВопр = ТекВопр + 1;
ПолучитьСлучайныйЭлемент();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
//**********************************************************************************
***
Функция КоличествоВопросовВТесте()
Если (Константа.КолВопрВТесте = 0) Или (ТЗ.КоличествоСтрок() <
Константа.КолВопрВТесте) Тогда
КолВопр = ТЗ.КоличествоСтрок();
Иначе
КолВопр = Константа.КолВопрВТесте;
КонецЕсли;
Возврат КолВопр;
КонецФункции
//**********************************************************************************
***
Процедура ПодготовкаВопросов(Тема)
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("ТекстВопроса");
ТЗ.НоваяКолонка("Ответ1");
ТЗ.НоваяКолонка("Ответ2");
ТЗ.НоваяКолонка("Ответ3");
ТЗ.НоваяКолонка("Ответ4");
ТЗ.НоваяКолонка("ПравОтв");
ТЗ.НоваяКолонка("ПравНесколько");
ТЗ.НоваяКолонка("НескПрав_1");
ТЗ.НоваяКолонка("НескПрав_2");
ТЗ.НоваяКолонка("НескПрав_3");
ТЗ.НоваяКолонка("НескПрав_4");
СпрВопросы = СоздатьОбъект("Справочник.Вопросы");
СпрВопросы.НайтиЭлемент(Тема);
СпрВопросы.ИспользоватьРодителя(СпрВопросы.ТекущийЭлемент());
СпрВопросы.ВыбратьЭлементы();
Пока СпрВопросы.ПолучитьЭлемент() = 1 Цикл
111
СправочникВТЗ();
КонецЦикла;
// Сообщить(ТЗ.КоличествоСтрок());
КолВопр = КоличествоВопросовВТесте();
КонецПроцедуры
//**********************************************************************************
***
Процедура ПересдатьТест()
ДокРез = СоздатьОбъект("Документ.РезультатТестирования");
ДокРез.НайтиПоНомеру(глНомерДок);
ДокРез.УдалитьСтроки();
КатегорияПересдаваемогоТеста = ДокРез.ПолучитьАтрибут("Категория");
ПодготовкаВопросов(КатегорияПересдаваемогоТеста);
ТекВопр = 1;
ПолучитьСлучайныйЭлемент();
Форма.ИспользоватьСлой("Начало", 0);
Форма.ИспользоватьСлой("Основной, Вопрос", 1);
//ТАЙМЕР
Таймер("Запуск");
КонецПроцедуры
//**********************************************************************************
***
Процедура ПродолжитьТестирование()
Если Вопрос("Внимание! У Вас есть неоконченный тест!
|Пока Вы его не сдадите, Вы не сможете сдавать другие тесты!
|Хотите продолжить его сдачу?", "Да+Нет", 0) = "Да" Тогда
ПодготовкаВопросов(глКатегорияПродолжаемогоТеста);
ДокРез = СоздатьОбъект("Документ.РезультатТестирования");
ДокРез.НайтиПоНомеру(глНомерДок);
ДокРез.ВыбратьСтроки();
Пока ДокРез.ПолучитьСтроку() = 1 Цикл
Если ДокРез.ПолучитьАтрибут("Верно") = Перечисление.ДаНет.Да
Тогда
КолПрав = КолПрав + 1;
КонецЕсли;
ТЗ.ВыбратьСтроки();
Источник: https://baza.diplomsite.ru/previewfile/2144