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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
112
Пока ТЗ.ПолучитьСтроку() = 1 Цикл
Если Найти(СокрЛП(ТЗ.ТекстВопроса),
СокрЛП(ДокРез.ПолучитьАтрибут("Вопрос"))) <> 0 Тогда
ТЗ.УдалитьСтроку();
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ТекВопр = ДокРез.КоличествоСтрок() + 1;
ПолучитьСлучайныйЭлемент();
Форма.ИспользоватьСлой("Начало", 0);
Форма.ИспользоватьСлой("Основной, Вопрос", 1);
//ТАЙМЕР
ТекущееВремя(Часов, Минут, Секунд);
глНачВрем = Секунд + Минут*60 + Часов*60*60 -
Число(Прав(ДокРез.ВремяСдачи, 2));
глМинута = Число(Лев(ДокРез.ВремяСдачи, 2));
глСекунда = 0;
ОбработкаОжидания("глТаймер", 1);
Форма.ОбработкаОжидания("КонтрольВремени", 1);
Иначе
СтатусВозврата(0);
КонецЕсли;
КонецПроцедуры
//**********************************************************************************
***
Процедура НачатьТестирование()
Если глПроверкаПересдачи(Категория.ПолучитьЗначение(Категория.ТекущаяСтрока()))
= 0 Тогда
ПодготовкаВопросов(Категория.ПолучитьЗначение(Категория.ТекущаяСтрока()));
ТекВопр = 1;
ПолучитьСлучайныйЭлемент();
ДокРез = СоздатьОбъект("Документ.РезультатТестирования");
ДокРез.Новый();
ДокРез.Тестируемый = Пользователь;
ДокРез.Категория = Категория.ПолучитьЗначение(Категория.ТекущаяСтрока());
Форма.ИспользоватьСлой("Начало", 0);
113
Форма.ИспользоватьСлой("Основной, Вопрос", 1);
//ТАЙМЕР
Таймер("Запуск");
ИначеЕсли
глПроверкаПересдачи(Категория.ПолучитьЗначение(Категория.ТекущаяСтрока())) = 1 Тогда
Если Вопрос("Вы уже сдавали этот тест!
|Хотите его пересдать?", "Да+Нет", 0) = "Да" Тогда
ПересдатьТест();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
//**********************************************************************************
***
Процедура ПриОткрытии()
глКонтекстОбновляемойФормы = глВзятьКонтекст(Контекст);
Если НазваниеНабораПрав() = "Пользователь" Тогда
Форма.Пользователь.Доступность(0);
Форма.флПараметра.Доступность(1);
Иначе
Форма.флПараметра.Доступность(0);
КонецЕсли;
Если Форма.Параметр = "Пересдача" Тогда
ПересдатьТест();
Иначе
СпрПольз = СоздатьОбъект("Справочник.Пользователи");
СпрПольз.НайтиПоНаименованию(СокрЛП(глПользователь),1,1);
Пользователь = СпрПольз.ТекущийЭлемент();
флПараметра = СпрПольз.Параметр;
СпрВопросы = СоздатьОбъект("Справочник.Вопросы");
Если глПроверкаПродолжения() = 1 Тогда
ПродолжитьТестирование();
Иначе
Форма.ИспользоватьСлой("Основной, Начало", 1);
Форма.ИспользоватьСлой("Вопрос, ОдинОтвет, НесколькоОтветов", 0);
СпрВопросы.ВыбратьЭлементы();
Пока СпрВопросы.ПолучитьЭлемент() = 1 Цикл
Если СпрВопросы.ЭтоГруппа() = 1 Тогда
114
Если СпрВопросы.Доступность =
Перечисление.ДаНет.Да Тогда
Категория.ДобавитьЗначение(СпрВопросы.ТекущийЭлемент());
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если Категория.РазмерСписка() = 0 Тогда
Категория.ДобавитьЗначение("<Нет тестов для сдачи>");
Форма.кнНачать.Доступность(0);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
//**********************************************************************************
***
Процедура ПриЗакрытии()
Если (ТекВопр > 1) И (флОкончания <> 1) Тогда
Если Вопрос("Хотите сохранить предварительные результаты,
|чтобы потом продолжить сдачу теста?", "Да+Нет", 0) = "Да" Тогда
ДокРез.ВремяСдачи = глВремяНаФорме;
ДокРез.ЗакончилосьВремя = Перечисление.ДаНет.Нет;
ДокРез.Процент = Окр(КолПрав/(ТекВопр-1)*100,1,1);
ДокРез.ТестОкончен = Перечисление.ДаНет.Нет;
ДокРез.ТестСдан = Перечисление.ДаНет.Нет;
ДокРез.Записать();
КонецЕсли;
КонецЕсли;
//ТАЙМЕР
Таймер("Стоп");
глВремяНаФорме = "";
КонецПроцедуры
ТекВопр = 0;
КолПрав = 0;
КолВопр = 0;
флОкончания = 0;
Источник: https://baza.diplomsite.ru/previewfile/2144