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