&НаКлиенте
Процедура ЗаполнитьАнкеты(Команда)
Объект.Анкеты.Очистить();
Для НомерАнкеты = 1 По Объект.ЧислоАнкет Цикл
НоваяСтрока = Объект.Анкеты.Добавить();
НоваяСтрока.Анкета = "Анкета №" + НомерАнкеты;
НоваяСтрока.НомерАнкеты = НомерАнкеты;
КонецЦикла;
ВывестиТекущееЧислоАнкет();
Элементы.ВыигрышнаяКомбинация.Доступность = Истина;
Элементы.Группа1.Доступность = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ВыигрышнаяКомбинацияПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.ВыигрышнаяКомбинация) Тогда
ВыигрышнаяКомбинация = Объект.ВыигрышнаяКомбинация;
ВыигрышнаяКомбинация = СтрЗаменить(ВыигрышнаяКомбинация,",",".");
Объект.ВыигрышнаяКомбинация = ВыигрышнаяКомбинация;
ЧислоАнкет = Объект.Анкеты.Количество();
КакойНомерВыиграет = 0;
ВыполняемыйКод = " = " + ЧислоАнкет + ВыигрышнаяКомбинация;
Выполнить("КакойНомерВыиграет" + ВыполняемыйКод);
КакойНомерВыиграет = Цел(КакойНомерВыиграет);
Если КакойНомерВыиграет = 0 Тогда
Сообщить("Номер анкеты не может быть равен 0");
Возврат;
ИначеЕсли КакойНомерВыиграет < 0 Тогда
//сделаем номер положительным
КакойНомерВыиграет = -КакойНомерВыиграет;
Иначе
//
КонецЕсли;
Элементы.Декорация3.Заголовок = ВыполняемыйКод + " => " + КакойНомерВыиграет;
Элементы.Играть.Доступность = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура АнкетыПослеУдаления(Элемент)
ВывестиТекущееЧислоАнкет();
КонецПроцедуры
&НаКлиенте
Процедура ВывестиТекущееЧислоАнкет()
Элементы.Декорация4.Заголовок = Объект.Анкеты.Количество();
КонецПроцедуры
&НаСервере
Функция ИгратьНаСервере()
ТекущееЧислоАнкет = Объект.Анкеты.Количество();
Если КакойНомерВыиграет > ТекущееЧислоАнкет Тогда
КакойНомерВыиграет = КакойНомерВыиграет - ТекущееЧислоАнкет * Цел(КакойНомерВыиграет/ТекущееЧислоАнкет);
Если КакойНомерВыиграет = 0 Тогда
//то есть выигрышный номер совпал с числом анкет
КакойНомерВыиграет = ТекущееЧислоАнкет;
КонецЕсли;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Анкеты.Анкета КАК Анкета,
| Анкеты.НомерАнкеты КАК НомерАнкеты,
| Анкеты.АнкетаВыиграла КАК АнкетаВыиграла
|ПОМЕСТИТЬ ВТ
|ИЗ
| &ТаблицаАнкет КАК Анкеты
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТ.НомерАнкеты КАК НомерАнкеты,
| ВТ.Анкета КАК Анкета
|ИЗ
| ВТ КАК ВТ
|ГДЕ
| ВТ.АнкетаВыиграла = ЛОЖЬ
| И ВТ.НомерАнкеты = &КакойНомерВыиграет";
Запрос.УстановитьПараметр("ТаблицаАнкет",Объект.Анкеты.Выгрузить());
Запрос.УстановитьПараметр("КакойНомерВыиграет",КакойНомерВыиграет);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
Объект.ВыигравшаяАнкета = ВыборкаДетальныеЗаписи.Анкета;
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("НомерАнкеты", ВыборкаДетальныеЗаписи.НомерАнкеты);
НайденныеСтроки = Объект.Анкеты.НайтиСтроки(ПараметрыОтбора);
НайденныеСтроки[0].АнкетаВыиграла = Истина;
Возврат ВыборкаДетальныеЗаписи.НомерАнкеты;
Иначе
Сообщить("Нет выигравшей анкеты");
КонецЕсли;
Возврат Неопределено;
КонецФункции
&НаКлиенте
Процедура Играть(Команда)
НомерВыигравшейАнкеты = ИгратьНаСервере();
Если Не НомерВыигравшейАнкеты = Неопределено Тогда
Элементы.Анкеты.ТекущаяСтрока = Объект.Анкеты.Получить(НомерВыигравшейАнкеты-1).ПолучитьИдентификатор();
Элементы.НоваяИгра.Доступность = Истина;
Элементы.НовыйПулАнкет.Доступность = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НоваяИгра(Команда)
Элементы.НоваяИгра.Доступность = Ложь;
Элементы.НовыйПулАнкет.Доступность = Ложь;
Объект.ВыигрышнаяКомбинация = "";
Объект.ВыигравшаяАнкета = "";
Элементы.Играть.Доступность = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура НовыйПулАнкет(Команда)
НоваяИгра(Команда);
Элементы.Группа1.Доступность = Истина;
Объект.ЧислоАнкет = 0;
Объект.Анкеты.Очистить();
КонецПроцедуры