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