#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Параметры);
Если ТипСтрокиДерева = "Раздел" Тогда
Элементы.ГруппаОбязательный.Видимость = Ложь;
Элементы.ЭлементарныйВопрос.Видимость = Ложь;
Элементы.ГруппаПодсказка.Видимость = Ложь;
Элементы.Формулировка.Заголовок = НСтр("ru = 'Имя раздела'");
Заголовок = НСтр("ru = 'Раздел шаблона анкеты'");
КонецЕсли;
Если НЕ ЭлементарныйВопрос.Пустая() Тогда
Элементы.Формулировка.СписокВыбора.Добавить(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЭлементарныйВопрос,"Формулировка"));
КонецЕсли;
Если ТипВопроса = Перечисления.ТипыВопросовШаблонаАнкеты.ВопросСУсловием Тогда
ПараметрыВыбора = Новый Массив;
ПараметрыВыбора.Добавить(Новый ПараметрВыбора("Отбор.ТипОтвета",ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.Булево")));
Элементы.ЭлементарныйВопрос.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбора);
КонецЕсли;
Если ИспользоватьОтказОтОтвета Тогда
ПризнакОбязательный = 2;
ИначеЕсли Обязательный Тогда
ПризнакОбязательный = 1;
Иначе
ПризнакОбязательный = 0;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
УстановитьДоступностьПризнакаФормулировкаОтказаОтОтвета();
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
Если Не ВыполняетсяЗакрытие И ЭтоНоваяСтрока Тогда
Оповестить("ОтменаВводаНовойСтрокиШаблонаАнкеты", , ВладелецФормы);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ЭлементарныйВопросОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
РеквизитыВопрос = РеквизитыВопроса(ВыбранноеЗначение);
Если ПустаяСтрока(Формулировка)
Или Формулировка = ПредыдущаяФормулировкаПоВопросу Тогда
Формулировка = РеквизитыВопрос.Формулировка;
КонецЕсли;
ПредыдущаяФормулировкаПоВопросу = РеквизитыВопрос.Формулировка;
КонецПроцедуры
&НаКлиенте
Процедура ЗаметкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ОповещениеОЗакрытии = Новый ОписаниеОповещения("РедактированиеЗаметкиПриЗакрытии", ЭтотОбъект);
ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияМногострочногоТекста(ОповещениеОЗакрытии, Элемент.ТекстРедактирования, НСтр("ru = 'Заметки'"));
КонецПроцедуры
&НаКлиенте
Процедура ПризнакОбязательныйПриИзменении(Элемент)
Если ПризнакОбязательный = 0 Тогда
Обязательный = Ложь;
ИспользоватьОтказОтОтвета = Ложь;
ИначеЕсли ПризнакОбязательный = 1 Тогда
Обязательный = Истина;
ИспользоватьОтказОтОтвета = Ложь;
ИначеЕсли ПризнакОбязательный = 2 Тогда
Обязательный = Истина;
ИспользоватьОтказОтОтвета = Истина;
КонецЕсли;
УстановитьДоступностьПризнакаФормулировкаОтказаОтОтвета();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ПеренестиВШаблон(Команда)
Отказ = Ложь;
Если Не ЗначениеЗаполнено(Формулировка) Тогда
Отказ = Истина;
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Не заполнена формулировка'"),,"Формулировка");
КонецЕсли;
Если ТипСтрокиДерева = "Вопрос" И (Не ЗначениеЗаполнено(ЭлементарныйВопрос)) Тогда
Отказ = Истина;
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Не указан элементарный вопрос'"),,"ЭлементарныйВопрос");
КонецЕсли;
Если ИспользоватьОтказОтОтвета И Не ЗначениеЗаполнено(ФормулировкаОтказаОтОтвета) Тогда
Отказ = Истина;
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Не заполнена формулировка'"),,"ФормулировкаОтказаОтОтвета");
КонецЕсли;
Если Отказ Тогда
Возврат;
КонецЕсли;
ВыполняетсяЗакрытие = Истина;
Оповестить("ОкончаниеРедактированияПараметровСтрокиШаблонаАнкеты",
СформироватьСтруктуруПараметровДляПередачиВладельцу(), ВладелецФормы);
Закрыть();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Функция СформироватьСтруктуруПараметровДляПередачиВладельцу()
СтруктураВозврата = Новый Структура;
СтруктураВозврата.Вставить("Обязательный", Обязательный);
СтруктураВозврата.Вставить("Формулировка", Формулировка);
СтруктураВозврата.Вставить("ЭлементарныйВопрос", ЭлементарныйВопрос);
СтруктураВозврата.Вставить("Заметки", Заметки);
СтруктураВозврата.Вставить("ЭтоНоваяСтрока", Ложь);
СтруктураВозврата.Вставить("Подсказка", Подсказка);
СтруктураВозврата.Вставить("СпособОтображенияПодсказки", СпособОтображенияПодсказки);
СтруктураВозврата.Вставить("ИспользоватьОтказОтОтвета", ИспользоватьОтказОтОтвета);
СтруктураВозврата.Вставить("ФормулировкаОтказаОтОтвета", ?(ИспользоватьОтказОтОтвета,
ФормулировкаОтказаОтОтвета, ""));
Возврат СтруктураВозврата;
КонецФункции
&НаСервереБезКонтекста
Функция РеквизитыВопроса(Вопрос)
Возврат ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Вопрос,"ЭтоГруппа,ТипОтвета,Формулировка");
КонецФункции
&НаКлиенте
Процедура РедактированиеЗаметкиПриЗакрытии(ТекстВозврата, ДополнительныеПараметры) Экспорт
Если Заметки <> ТекстВозврата Тогда
Заметки = ТекстВозврата;
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьПризнакаФормулировкаОтказаОтОтвета()
Элементы.ФормулировкаОтказаОтОтвета.Доступность = ИспользоватьОтказОтОтвета;
КонецПроцедуры
#КонецОбласти