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