Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

МенеджерВопросов #73

Open
SeiOkami opened this issue Feb 15, 2024 · 0 comments
Open

МенеджерВопросов #73

SeiOkami opened this issue Feb 15, 2024 · 0 comments

Comments

@SeiOkami
Copy link
Owner

SeiOkami commented Feb 15, 2024

#Область МенеджерВопросов

Функция МенеджерВопросов(ОписаниеОповещения) Экспорт
	
	МенеджерВопросов = Новый Структура;
	МенеджерВопросов.Вставить("Вопросы", Новый Массив);
	МенеджерВопросов.Вставить("ТекущийВопрос", Неопределено);
	МенеджерВопросов.Вставить("ОписаниеОповещенияОЗавершении", ОписаниеОповещения);
	
	Возврат МенеджерВопросов;
	
КонецФункции

Функция МенеджерВопросов_ДобавитьВопрос(МенеджерВопросов, 
	ТекстВопроса, Кнопки, Имя = "", ДополнительныеПараметры = Неопределено) Экспорт
	
	ОписаниеВопроса = Новый Структура();
	ОписаниеВопроса.Вставить("Имя", Имя);
	ОписаниеВопроса.Вставить("Ответ", Неопределено);
	ОписаниеВопроса.Вставить("Кнопки", Кнопки);
	ОписаниеВопроса.Вставить("Таймаут", 0);
	ОписаниеВопроса.Вставить("Заголовок", "");
	ОписаниеВопроса.Вставить("ТекстВопроса", ТекстВопроса);
	ОписаниеВопроса.Вставить("КнопкаТаймаута", Неопределено);
	ОписаниеВопроса.Вставить("КнопкаПоУмолчанию", Неопределено);
	ОписаниеВопроса.Вставить("ДополнительныеПараметры", ДополнительныеПараметры);
	
	МенеджерВопросов.Вопросы.Добавить(ОписаниеВопроса);
	
	Возврат ОписаниеВопроса;
	
КонецФункции

Процедура МенеджерВопросов_ПоказатьВопросы(МенеджерВопросов) Экспорт
	
	МенеджерВопросов_ПоказатьСледующийВопрос(МенеджерВопросов);
	
КонецПроцедуры

Процедура МенеджерВопросов_ПоказатьВопрос(МенеджерВопросов, Знач ОписаниеВопроса)
	
	Если ТипЗнч(ОписаниеВопроса) = Тип("Число") Тогда
		ОписаниеВопроса = МенеджерВопросов.Вопросы.Получить(ОписаниеВопроса);
	КонецЕсли;
	
	МенеджерВопросов.ТекущийВопрос = ОписаниеВопроса;
	
	ДополнительныеПараметры = Новый Структура;
	ДополнительныеПараметры.Вставить("МенеджерВопросов", МенеджерВопросов);
	
	ОписаниеОповещения = Новый ОписаниеОповещения("МенеджерВопросов_ОбработатьОтвет", ЭтотОбъект, ДополнительныеПараметры);
	
	ПоказатьВопрос(ОписаниеОповещения, ОписаниеВопроса.ТекстВопроса, ОписаниеВопроса.Кнопки, 
	ОписаниеВопроса.Таймаут, ОписаниеВопроса.КнопкаПоУмолчанию, ОписаниеВопроса.Заголовок, ОписаниеВопроса.КнопкаТаймаута);
	
КонецПроцедуры

Процедура МенеджерВопросов_ПоказатьСледующийВопрос(МенеджерВопросов)
	
	ТекущийВопрос = МенеджерВопросов.ТекущийВопрос;
	Если ТекущийВопрос = Неопределено Тогда
		ТекущийВопрос = 0;
	Иначе
		ТекущийВопрос = МенеджерВопросов.Вопросы.Найти(ТекущийВопрос);
		ТекущийВопрос = ТекущийВопрос + 1;
	КонецЕсли;
	
	Если ТекущийВопрос > МенеджерВопросов.Вопросы.Количество() - 1 Тогда
		МенеджерВопросов_Завершить(МенеджерВопросов);
	Иначе
		МенеджерВопросов_ПоказатьВопрос(МенеджерВопросов, ТекущийВопрос);
	КонецЕсли;
	
КонецПроцедуры

Процедура МенеджерВопросов_Завершить(МенеджерВопросов)
	
	ВыполнитьОбработкуОповещения(МенеджерВопросов.ОписаниеОповещенияОЗавершении, МенеджерВопросов);
	
КонецПроцедуры

Процедура МенеджерВопросов_ОбработатьОтвет(ОтветПользователя, ДополнительныеПараметры) Экспорт
	
	МенеджерВопросов = ДополнительныеПараметры.МенеджерВопросов;
	МенеджерВопросов.ТекущийВопрос.Ответ = ОтветПользователя;
	МенеджерВопросов_ПоказатьСледующийВопрос(МенеджерВопросов);
	
КонецПроцедуры

#КонецОбласти
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant