#Область ОбработкаЭлементовФорм
Функция ДобавитьРеквизитНаФорму(Форма, Родитель = Неопределено, ПутьКДанным, ТипРеквизита = Неопределено, ВидПоля=Неопределено,Позиция = Неопределено,ЭтоДекорация = Ложь,ИмяРеквизита = "",ПараметрыЭлементов=Неопределено) Экспорт
//Значения по умолчанию
Если Родитель = Неопределено Тогда
Родитель = Форма;
КонецЕсли;
Если ТипРеквизита = Неопределено Тогда
ТипРеквизита = Тип("ПолеФормы");
КонецЕсли;
Если ВидПоля = Неопределено Тогда
ВидПоля = ВидПоляФормы.ПолеВвода;
КонецЕсли;
//Получим имя реквизита из ПутьКДанным
МассивПути = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ПутьКДанным, ".");
Если ПустаяСтрока(ИмяРеквизита) Тогда
ИмяРеквизита = МассивПути[МассивПути.Количество()-1];
КонецЕсли;
//Добавим на форму
Попытка
Элемент = Форма.Элементы.Добавить(ИмяРеквизита,ТипРеквизита,Родитель);
Исключение
Возврат Форма.Элементы.Найти(ИмяРеквизита);
КонецПопытки;
Если НЕ ЭтоДекорация Тогда
Элемент.Вид = ВидПоля;
Элемент.ПутьКДанным = ПутьКДанным;
КонецЕсли;
Если Позиция <> Неопределено Тогда
Форма.Элементы.Переместить(Элемент,Родитель,Позиция);
КонецЕсли;
Если ПараметрыЭлементов<>Неопределено Тогда
ЗаполнитьЗначенияСвойств(Элемент,ПараметрыЭлементов);
КонецЕсли;
Возврат Элемент;
КонецФункции
Функция ДобавитьРеквизитФормы(Форма,ИмяРеквизита,ИмяТипаРеквизита,КЧ=Неопределено,Путь = "",Заголовок="")Экспорт
НайденныйРеквизит = НайтиРеквизитФормы(Форма,ИмяРеквизита);
Если НайденныйРеквизит<>Неопределено Тогда
Возврат НайденныйРеквизит;
КонецЕсли;
Если КЧ = Неопределено Тогда
КЧ = Новый КвалификаторыЧисла(14,2);
КонецЕсли;
//Добавим таблицу и колонки
МассивТипаВыбора = Новый Массив;
МассивТипаВыбора.Добавить(Тип(ИмяТипаРеквизита));
ОписаниеТипаВыбора = Новый ОписаниеТипов(МассивТипаВыбора,,,КЧ);
ДобавляемыеРеквизиты = Новый Массив;
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяРеквизита,ОписаниеТипаВыбора,Путь,Заголовок));
Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
КонецФункции
Функция НайтиРеквизитФормы(Форма,ИмяРеквизита) Экспорт
МассивРеквизитов = Форма.ПолучитьРеквизиты();
Для Каждого ТекРеквизит Из МассивРеквизитов Цикл
Если ТекРеквизит.Имя = ИмяРеквизита Тогда
Возврат ТекРеквизит;
КонецЕсли;
КонецЦикла;
//Требуется оптимизация
//Если НайденныйРеквизит <> Неопределено Тогда
// Возврат НайденныйРеквизит;
//КонецЕсли;
КонецФункции
Функция ДобавитьГруппу(Форма,ИмяГруппы,Родитель,ДополнительныеПараметрыДобавления = Неопределено) Экспорт
НовЭлемент = Форма.Элементы.Добавить(ИмяГруппы,Тип("ГруппаФормы"),Родитель);
Если ТипЗнч(ДополнительныеПараметрыДобавления) = Тип("Структура") И ДополнительныеПараметрыДобавления.Свойство("Вид") Тогда
Вид = ДополнительныеПараметрыДобавления.Вид;
Иначе
Вид = ВидГруппыФормы.ОбычнаяГруппа;
КонецЕсли;
НовЭлемент.Вид = Вид;
Если Вид = ВидГруппыФормы.ОбычнаяГруппа Тогда
НовЭлемент.ОтображатьЗаголовок = Ложь;
КонецЕсли;
Если ДополнительныеПараметрыДобавления<>Неопределено Тогда
ЗаполнитьЗначенияСвойств(НовЭлемент,ДополнительныеПараметрыДобавления);
КонецЕсли;
Возврат НовЭлемент;
КонецФункции
Функция ДобавитьГруппуСтраниц(Форма,РодительГруппы,ИмяГруппы) Экспорт
ЭлементСтраницы = Форма.Элементы.Добавить("Группа_"+ИмяГруппы, Тип("ГруппаФормы"), РодительГруппы);
ЭлементСтраницы.Вид = ВидГруппыФормы.Страницы;
ЭлементСтраницы.Заголовок = ИмяГруппы;
Возврат ЭлементСтраницы;
КонецФункции
Функция ДобавитьСтраницу(Форма,ИмяГруппы,РодительСтраницы,Заголовок = "",ДополнительныеПараметрыДобавления = Неопределено) Экспорт
Если ПустаяСтрока(Заголовок) Тогда
Заголовок = ИмяГруппы;
КонецЕсли;
НовЭлемент = Форма.Элементы.Добавить(ИмяГруппы, Тип("ГруппаФормы"), РодительСтраницы);
НовЭлемент.Вид = ВидГруппыФормы.Страница;
НовЭлемент.Заголовок = Заголовок;
Если ДополнительныеПараметрыДобавления<>Неопределено Тогда
ЗаполнитьЗначенияСвойств(НовЭлемент,ДополнительныеПараметрыДобавления);
КонецЕсли;
Возврат НовЭлемент;
КонецФункции
Функция ДобавитьТабличнуюЧастьНаФорму(Форма,ИмяТабЧасти,РодительТаблицы,ПутьКДанным,ДополнительныеПараметрыДобавления = Неопределено) Экспорт
ЭлементыТаблица = Форма.Элементы.Добавить(ИмяТабЧасти, Тип("ТаблицаФормы"), РодительТаблицы);
ЭлементыТаблица.ПутьКДанным = ПутьКДанным;
ИсточникРеквизитов = Форма.Объект.Ссылка.Метаданные().ТабличныеЧасти[ИмяТабЧасти].Реквизиты;
Для Каждого ТекРеквизит Из ИсточникРеквизитов Цикл
Элемент = Форма.Элементы.Добавить("эл_ф__"+ТекРеквизит.Имя,Тип("ПолеФормы"),ЭлементыТаблица);
Элемент.Вид = ВидПоляФормы.ПолеВвода;
Элемент.Заголовок = ТекРеквизит.Синоним;
Элемент.ПутьКДанным = "Объект."+ИмяТабЧасти+"."+ТекРеквизит.Имя;
КонецЦикла;
Если ДополнительныеПараметрыДобавления<>Неопределено Тогда
ЗаполнитьЗначенияСвойств(ЭлементыТаблица,ДополнительныеПараметрыДобавления);
КонецЕсли;
Возврат ЭлементыТаблица;
КонецФункции
Функция ДобавитьГруппуКолонок(Форма,ИмяГруппы,Родитель) Экспорт
НовЭлемент = Форма.Элементы.Добавить(ИмяГруппы,Тип("ГруппаФормы"),Родитель);
НовЭлемент.Вид = ВидГруппыФормы.ГруппаКолонок;
НовЭлемент.ОтображатьЗаголовок = Ложь;
Возврат НовЭлемент;
КонецФункции
Процедура ДобавитьСвязьПоТипу(ЭлементФормы,ИмяСвязи="Отбор.Владелец",ЗначениеСвязи="Объект.Контрагент") Экспорт
НоваяСвязь = Новый СвязьПараметраВыбора(ИмяСвязи, ЗначениеСвязи);
НовыйМассив = Новый Массив(ЭлементФормы.СвязиПараметровВыбора);
НовыйМассив.Добавить(НоваяСвязь);
ЭлементФормы.СвязиПараметровВыбора = Новый ФиксированныйМассив(НовыйМассив);
КонецПроцедуры
Функция ДобавитьКнопку(Форма,Родитель,ИмяКнопки,Заголовок,Действие=Неопределено,ДополнительныеПараметрыДобавления = Неопределено) Экспорт
Если Действие=Неопределено Тогда
Действие = ИмяКнопки;
КонецЕсли;
// создадим команду
НоваяКоманда = Форма.Команды.Добавить("ком"+ИмяКнопки); // Имя нашей команды
НоваяКоманда.Заголовок = ?(НЕ ПустаяСтрока(Заголовок),Заголовок,ИмяКнопки); // заголовок
НоваяКоманда.Действие = Действие; // Имя функции/процедуры
НоваяКнопка = Форма.Элементы.Добавить("кн"+ИмяКнопки, Тип("КнопкаФормы"),Родитель);
НоваяКнопка.ИмяКоманды = "ком"+ИмяКнопки;
Если ДополнительныеПараметрыДобавления<>Неопределено Тогда
ЗаполнитьЗначенияСвойств(НоваяКнопка,ДополнительныеПараметрыДобавления);
КонецЕсли;
Возврат НоваяКнопка;
КонецФункции
#КонецОбласти