// Общий модуль "Быстрые управляймые формы"
// Версия 1.0
// Разработчик: Молчанов Г.А.
//
// Контакты для связи:
// Telegramm: Gosha_Felliny
// Email: GoshaFelliny@yandex.ru
//
// Зависимость: Динамическое формирование интерфейса (ДФИ) //infostart.ru/1c/articles/1284403/?ysclid=mp409x017k630244327
// Функция генерирует контейнер, строки и колонки на основе заданных пропорций.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - Форма, на которой создаются элементы сетки.
// ПрефиксИмени - Строка - Базовое имя для генерации имен элементов сетки (по умолчанию "Сетка").
// Родитель - Строка или ГруппаФормы - Имя элемента или сам элемент, внутри которого будет создана сетка.
// КоличествоСтрок - Число - Количество горизонтальных строк (рядов) в сетке (0 - если нужны только колонки).
// НастройкиСтолбцов - Число, Массив или Строка - Настройки ширин колонок (0 - если нужны только строки):
// Число - количество равных колонок.
// Массив - массив чисел, где каждое число - вес колонки.
// Строка - веса колонок через запятую (например, "30, 40, 30").
// РастягиватьГоризонтально - Число - Принимаемые значения: 1 - ИСТИНА, 2 - ЛОЖЬ, 0 - Авто.
// РастягиватьВертикально - Число - Принимаемые значения: 1 - ИСТИНА, 2 - ЛОЖЬ, 0 - Авто.
// МожноДвигать - Булево - Если Истина, группы строк не объединяются (включает стандартные отступы 1С между ячейками).
// ЭлементПеред - Строка или ЭлементФормы - Элемент, перед которым требуется вставить сетку.
//
// Возвращаемое значение:
// Массив - Структура массива зависит от параметров (1D для колонок/строк, 2D для полноценной сетки).
//
Функция СоздатьСетку(Форма,
ПрефиксИмени = "Сетка",
Родитель,
КоличествоСтрок,
НастройкиСтолбцов,
РастягиватьГоризонтально = 0,
РастягиватьВертикально = 0,
МожноДвигать = Ложь,
ЭлементПеред = Неопределено) Экспорт
КонтейнерСетки = ДФИ.СздГруппаОбычная(Форма, ПрефиксИмени, Родитель, "",,,,,ЭлементПеред);
КонтейнерСетки.Отображение = ОтображениеОбычнойГруппы.Нет;
КонтейнерСетки.ОтображатьЗаголовок = Ложь;
КонтейнерСетки.Объединенная = Истина;
ПолучитьСостояниеРастягиванияЭлементаПоГоризонтали(КонтейнерСетки, РастягиватьГоризонтально);
ПолучитьСостояниеРастягиванияЭлементаПоВертикали(КонтейнерСетки, РастягиватьВертикально);
МассивШирин = Новый Массив;
Если ТипЗнч(НастройкиСтолбцов) = Тип("Число") Тогда
Для Индекс = 1 По НастройкиСтолбцов Цикл
МассивШирин.Добавить(0);
КонецЦикла;
ИначеЕсли ТипЗнч(НастройкиСтолбцов) = Тип("Массив") Тогда
МассивШирин = НастройкиСтолбцов;
ИначеЕсли ТипЗнч(НастройкиСтолбцов) = Тип("Строка") Тогда
МассивСтрок = СтрРазделить(НастройкиСтолбцов, ",", Ложь);
Для Каждого СтрЗнач Из МассивСтрок Цикл
МассивШирин.Добавить(Число(СтрЗнач));
КонецЦикла;
КонецЕсли;
КоличествоСтолбцов = МассивШирин.Количество();
МассивСетки = Новый Массив;
Если КоличествоСтрок = 0 И КоличествоСтолбцов > 0 Тогда
КонтейнерСетки.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда;
КонтейнерСетки.Объединенная = МожноДвигать;
Для ИндексКолонки = 1 По КоличествоСтолбцов Цикл
ИмяЯчейки = ПрефиксИмени + "Кол" + ИндексКолонки;
ГруппаЯчейка = ДФИ.СздГруппаОбычная(Форма, ИмяЯчейки, КонтейнерСетки, "");
ГруппаЯчейка.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
ГруппаЯчейка.Ширина = МассивШирин[ИндексКолонки - 1];
ГруппаЯчейка.РастягиватьПоГоризонтали = Истина;
ГруппаЯчейка.РастягиватьПоВертикали = Истина;
МассивСетки.Добавить(ГруппаЯчейка);
КонецЦикла;
ИначеЕсли КоличествоСтрок > 0 Тогда
КонтейнерСетки.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
Для ИндексСтроки = 1 По КоличествоСтрок Цикл
ИмяСтроки = ПрефиксИмени + "Ряд" + ИндексСтроки;
ГруппаСтрока = ДФИ.СздГруппаОбычная(Форма, ИмяСтроки, КонтейнерСетки, "");
ГруппаСтрока.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда;
ГруппаСтрока.Объединенная = МожноДвигать;
ГруппаСтрока.РастягиватьПоВертикали = Истина;
ГруппаСтрока.РастягиватьПоГоризонтали = Истина;
ГруппаСтрока.Отображение = ОтображениеОбычнойГруппы.Нет;
ГруппаСтрока.ОтображатьЗаголовок = Ложь;
Если КоличествоСтолбцов > 0 Тогда
СтрокаЯчеек = Новый Массив;
Для ИндексКолонки = 1 По КоличествоСтолбцов Цикл
ИмяЯчейки = ИмяСтроки + "Кол" + ИндексКолонки;
ГруппаЯчейка = ДФИ.СздГруппаОбычная(Форма, ИмяЯчейки, ГруппаСтрока, "");
ГруппаЯчейка.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
ГруппаЯчейка.Ширина = МассивШирин[ИндексКолонки - 1];
ГруппаЯчейка.РастягиватьПоГоризонтали = Истина;
ГруппаЯчейка.РастягиватьПоВертикали = Истина;
ГруппаЯчейка.Отображение = ОтображениеОбычнойГруппы.Нет;
ГруппаЯчейка.ОтображатьЗаголовок = Ложь;
СтрокаЯчеек.Добавить(ГруппаЯчейка);
КонецЦикла;
МассивСетки.Добавить(СтрокаЯчеек);
Иначе
МассивСетки.Добавить(ГруппаСтрока);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Возврат МассивСетки;
КонецФункции
// Создает поле ввода, настроенное для многострочного ввода текста.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - Форма, на которой создаются элементы.
// ИмяПоля - Строка - Имя создаваемого элемента на форме.
// Родитель - Строка или ГруппаФормы - Контейнер для поля ввода.
// Заголовок - Строка - Отображаемый заголовок поля ввода.
// ПутьКДанным - Строка - Путь к реквизиту формы или объекта (например, "Объект.Комментарий").
// СтартоваяВысота - Число - Начальная высота поля ввода в строках (по умолчанию 3).
// ЭлементПеред - Строка или ЭлементФормы - Элемент, перед которым требуется вставить поле.
//
// Возвращаемое значение:
// ПолеФормы - Созданный элемент управления типа ПолеВвода.
//
Функция СоздатьМногострочноеПолеВвода(Форма,
ИмяПоля,
Родитель,
Заголовок,
ПутьКДанным = "",
СтартоваяВысота = 3,
ЭлементПеред = Неопределено) Экспорт
Поле = ДФИ.СздПоле(Форма, ИмяПоля, Родитель, Заголовок, 1, ПутьКДанным, ЭлементПеред);
Поле.МногострочныйРежим = Истина;
Поле.АвтоПереносСтрок = Истина;
Поле.Высота = СтартоваяВысота;
Поле.РастягиватьПоВертикали = Ложь;
Возврат Поле;
КонецФункции
// Создает кнопку на форме с автоматическим созданием команды формы (если она еще не создана).
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - Форма, на которой создаются элементы.
// ИмяКнопки - Строка - Имя создаваемого элемента на форме.
// Родитель - Строка или ГруппаФормы - Контейнер для кнопки.
// Заголовок - Строка - Текст, отображаемый на кнопке.
// ИмяДействия - Строка - Имя процедуры в модуле формы, которая будет вызвана при нажатии.
// ВидКнопки - Число - 1 - Обычная кнопка, 2 - Гиперссылка (по умолчанию 1).
// ЭлементПеред - Строка или ЭлементФормы - Элемент, перед которым требуется вставить кнопку.
//
// Возвращаемое значение:
// КнопкаФормы - Созданный элемент управления кнопка.
//
Функция СоздатьКнопкуСКомандой(Форма, ИмяКнопки, Родитель, Заголовок, ИмяДействия, ВидКнопки = Неопределено, ЭлементПеред = Неопределено) Экспорт
Если ЗначениеЗаполнено(ИмяДействия) И Форма.Команды.Найти(ИмяДействия) = Неопределено Тогда
ДФИ.СоздатьКоманду(Форма, ИмяДействия, Заголовок, ИмяДействия);
КонецЕсли;
Если ВидКнопки = Неопределено Тогда
Кнопка = ДФИ.СздКнопка(Форма, ИмяКнопки, Родитель, Заголовок, ИмяДействия);
Иначе
Кнопка = ДФИ.СздКнопка(Форма, ИмяКнопки, Родитель, Заголовок, ИмяДействия, ВидКнопки,,ЭлементПеред);
КонецЕсли;
Возврат Кнопка;
КонецФункции
// Наполняет существующую группу страниц (вкладок) страницами согласно переданному массиву заголовков.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - Форма, на которой создаются элементы.
// Родитель - ГруппаФормы - Обязательный контейнер (с видом ГруппаСтраниц), в который будут добавлены страницы.
// МассивЗаголовков - Массив - Массив строк с отображаемыми заголовками создаваемых страниц.
//
// Возвращаемое значение:
// Структура - Коллекция, где Ключ - Заголовок вкладки, Значение - созданная ГруппаФормы (страница).
//
Функция СоздатьСтраницы(Форма, Родитель, МассивЗаголовков) Экспорт
Результат = Новый Структура;
ТекущийПрефикс = Родитель.Имя;
Для Каждого ЗаголовокВкладки Из МассивЗаголовков Цикл
ИмяБезСпецсимволов = ОчиститьОтЗапрещенныхСимволов(ЗаголовокВкладки);
Если ПустаяСтрока(ИмяБезСпецсимволов) Тогда
ИмяБезСпецсимволов = "Стр" + СтрЗаменить(Строка(Новый УникальныйИдентификатор), "-", "");
КонецЕсли;
ИмяВкладки = ТекущийПрефикс + "" + Трег(ИмяБезСпецсимволов);
Страница = ДФИ.СздСтраница(Форма, ИмяВкладки, Родитель);
Страница.Заголовок = ЗаголовокВкладки;
Страница.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
Результат.Вставить(ЗаголовокВкладки, Страница);
КонецЦикла;
Возврат Результат;
КонецФункции
// Создает визуальный блок "Карточка" с картинкой слева и текстом (заголовком и описанием) справа.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - Форма, на которой создаются элементы.
// ПрефиксИмени - Строка - Базовое имя для генерации имен внутренних элементов карточки.
// Родитель - Строка или ГруппаФормы - Контейнер для карточки.
// ЗаголовокКарточки - Строка - Главный текст карточки (жирным шрифтом).
// ИмяКартинки - Строка - Имя картинки из библиотеки картинок конфигурации.
// ТекстОписания - Строка - Дополнительный поясняющий текст (серым цветом).
// ИмяДействия - Строка - Имя процедуры-обработчика нажатия на заголовок.
// Интерактивная - Булево - Если Истина, заголовок становится гиперссылкой; если Ложь - обычной надписью.
// ЭлементПеред - Строка или ЭлементФормы - Элемент, перед которым требуется вставить карточку.
//
// Возвращаемое значение:
// ГруппаФормы - Главный контейнер (группа) созданной карточки.
//
Функция СоздатьКарточку(Форма, ПрефиксИмени, Родитель, ЗаголовокКарточки, ИмяКартинки, ТекстОписания, ИмяДействия = "", Интерактивная = Истина, ЭлементПеред = Неопределено) Экспорт
Карточка = ДФИ.СздГруппаОбычная(Форма, "Карточка" + ПрефиксИмени, Родитель, "", 3,,,,ЭлементПеред);
Карточка.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда;
Карточка.Отображение = ОтображениеОбычнойГруппы.Нет;
Карточка.ОтображатьЗаголовок = Ложь;
Картинка = ДФИ.СздДекорацияКартинка(Форма, "Картинка" + ПрефиксИмени, Карточка, ИмяКартинки);
Картинка.ВертикальноеПоложениеВГруппе = ВертикальноеПоложениеЭлемента.Верх;
Если Интерактивная Тогда
Если ЗначениеЗаполнено(ИмяДействия) Тогда
ДФИ.СоздатьКоманду(Форма, ИмяДействия, "Команда" + ИмяДействия, ИмяДействия);
КонецЕсли;
ЗаголовокЭлемент = ДФИ.СздКнопка(Форма, "КнопкаЗаголовок" + ПрефиксИмени, Карточка, ЗаголовокКарточки, ИмяДействия, 2);
Иначе
ЗаголовокЭлемент = ДФИ.СздДекорацияНадпись(Форма, "НадписьЗаголовок" + ПрефиксИмени, Карточка, ЗаголовокКарточки);
КонецЕсли;
ЗаголовокЭлемент.Шрифт = Новый Шрифт(,, Истина);
ЗаголовокЭлемент.ОтображениеПодсказки = ОтображениеПодсказки.ОтображатьСнизу;
ЗаголовокЭлемент.РасширеннаяПодсказка.Заголовок = ТекстОписания;
Возврат Карточка;
КонецФункции
// Создает сворачиваемую группу с возможностью задания разных заголовков для состояний.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - Форма, на которой создаются элементы.
// ИмяГруппы - Строка - Имя создаваемой группы на форме.
// Родитель - Строка или ГруппаФормы - Контейнер для группы.
// Заголовок - Строка - Текст заголовка в развернутом состоянии.
// ИзначальноСвернута - Булево - Если Истина, при создании группа будет свернута.
// ЗаголовокСвернутой - Строка - Текст заголовка в свернутом состоянии. Если Неопределено, равен основному заголовку.
//
// Возвращаемое значение:
// ГруппаФормы - Созданная сворачиваемая группа.
//
Функция СоздатьСворачиваемуюГруппу(Форма, ИмяГруппы, Родитель, Заголовок, ИзначальноСвернута = Истина, ЗаголовокСвернутой = Неопределено) Экспорт
Если ЗаголовокСвернутой = Неопределено Тогда
ЗаголовокСвернутой = Заголовок;
КонецЕсли;
ГруппаСворачиваемая = ДФИ.СздГруппаОбычнаяБезОтображения(Форма, ИмяГруппы, Родитель);
ГруппаСворачиваемая.Заголовок = Заголовок;
ГруппаСворачиваемая.ЗаголовокСвернутогоОтображения = ЗаголовокСвернутой;
ГруппаСворачиваемая.ОтображатьЗаголовок = Истина;
ГруппаСворачиваемая.Поведение = ПоведениеОбычнойГруппы.Свертываемая;
ГруппаСворачиваемая.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
ГруппаСворачиваемая.Объединенная = Истина;
// Обращение к методам расширения группы формы (доступны только в контексте выполнения)
Если ИзначальноСвернута Тогда
ГруппаСворачиваемая.Скрыть();
Иначе
ГруппаСворачиваемая.Показать();
КонецЕсли;
Возврат ГруппаСворачиваемая;
КонецФункции
// Создает всплывающую группу для отображения дополнительной информации поверх формы.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - Форма, на которой создаются элементы.
// ИмяГруппы - Строка - Имя создаваемой группы на форме.
// Родитель - Строка или ГруппаФормы - Контейнер для группы.
// Заголовок - Строка - Отображаемый заголовок всплывающего окна.
//
// Возвращаемое значение:
// ГруппаФормы - Созданная всплывающая группа.
//
Функция СоздатьВсплывающуюГруппу(Форма, ИмяГруппы, Родитель, Заголовок) Экспорт
ГруппаВсплывающая = ДФИ.СздГруппаОбычнаяБезОтображения(Форма, ИмяГруппы, Родитель);
ГруппаВсплывающая.Заголовок = Заголовок;
ГруппаВсплывающая.ОтображатьЗаголовок = Истина;
ГруппаВсплывающая.Поведение = ПоведениеОбычнойГруппы.Всплывающая;
ГруппаВсплывающая.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
ГруппаВсплывающая.Объединенная = Истина;
Возврат ГруппаВсплывающая;
КонецФункции
// Создает текстовую карточку (без картинки) с заголовком и поясняющим текстом.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - Форма, на которой создаются элементы.
// ПрефиксИмени - Строка - Базовое имя для генерации имен элементов карточки.
// Родитель - Строка или ГруппаФормы - Контейнер для карточки.
// ЗаголовокКарточки - Строка - Главный текст карточки (жирным шрифтом).
// ТекстОписания - Строка - Дополнительный поясняющий текст (серым цветом).
// ИмяДействия - Строка - Имя процедуры-обработчика нажатия на заголовок.
// Интерактивная - Булево - Если Истина, заголовок становится гиперссылкой; если Ложь - обычной надписью.
// ЭлементПеред - Строка или ЭлементФормы - Элемент, перед которым требуется вставить карточку.
//
// Возвращаемое значение:
// ГруппаФормы - Контейнер созданной карточки.
//
Функция СоздатьТекстовуюКарточку(Форма, ПрефиксИмени, Родитель, ЗаголовокКарточки, ТекстОписания, ИмяДействия = "", Интерактивная = Истина, ЭлементПеред = Неопределено) Экспорт
Карточка = ДФИ.СздГруппаОбычнаяБезОтображения(Форма, "КарточкаТекст" + ПрефиксИмени, Родитель,,,,,ЭлементПеред);
Карточка.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
Если Интерактивная Тогда
Если ЗначениеЗаполнено(ИмяДействия) Тогда
ДФИ.СоздатьКоманду(Форма, ИмяДействия, "Команда" + ИмяДействия, ИмяДействия);
КонецЕсли;
ЗаголовокЭлемент = ДФИ.СздКнопка(Форма, "КнопкаЗаголовок" + ПрефиксИмени, Карточка, ЗаголовокКарточки, ИмяДействия, 2);
ЗаголовокЭлемент.Шрифт = Новый Шрифт(,, Истина);
Иначе
ЗаголовокЭлемент = ДФИ.СздДекорацияНадпись(Форма, "НадписьЗаголовок" + ПрефиксИмени, Карточка, ЗаголовокКарточки);
ЗаголовокЭлемент.Шрифт = Новый Шрифт(,, Истина);
КонецЕсли;
Описание = ДФИ.СздДекорацияНадпись(Форма, "Описание" + ПрефиксИмени, Карточка, ТекстОписания);
Описание.ЦветТекста = ЦветаСтиля.ПоясняющийТекст;
Описание.Высота = 2;
Описание.РастягиватьПоГоризонтали = Истина;
Возврат Карточка;
КонецФункции
// Инструмент разработчика для визуальной отладки структуры формы.
// Рекурсивно раскрашивает фон всех групп на форме в контрастные пастельные тона.
//
// Параметры:
// КоллекцияЭлементов - КоллекцияЭлементовФормы - Элементы, которые необходимо раскрасить.
// ГСЧ - ГенераторСлучайныхЧисел - Служебный параметр для рекурсии.
//
Процедура РаскраситьСеткуВерстки(КоллекцияЭлементов, ГСЧ = Неопределено) Экспорт
Если ГСЧ = Неопределено Тогда
ГСЧ = Новый ГенераторСлучайныхЧисел();
КонецЕсли;
Для Каждого ТекущийЭлемент Из КоллекцияЭлементов Цикл
ТипЭл = ТипЗнч(ТекущийЭлемент);
Если ТипЭл = Тип("ГруппаФормы") Тогда
Если ТекущийЭлемент.Вид = ВидГруппыФормы.ОбычнаяГруппа Тогда
УровеньВложенности = 0;
ТекущийРодитель = ТекущийЭлемент.Родитель;
Пока ТипЗнч(ТекущийРодитель) = Тип("ГруппаФормы") Или ТипЗнч(ТекущийРодитель) = Тип("ТаблицаФормы") Цикл
УровеньВложенности = УровеньВложенности + 1;
ТекущийРодитель = ТекущийРодитель.Родитель;
КонецЦикла;
Остаток = УровеньВложенности % 3;
Если Остаток = 0 Тогда
ЦветР = ГСЧ.СлучайноеЧисло(240, 255);
ЦветГ = ГСЧ.СлучайноеЧисло(180, 210);
ЦветБ = ГСЧ.СлучайноеЧисло(180, 210);
ИначеЕсли Остаток = 1 Тогда
ЦветР = ГСЧ.СлучайноеЧисло(180, 210);
ЦветГ = ГСЧ.СлучайноеЧисло(220, 240);
ЦветБ = ГСЧ.СлучайноеЧисло(240, 255);
Иначе
ЦветР = ГСЧ.СлучайноеЧисло(180, 210);
ЦветГ = ГСЧ.СлучайноеЧисло(240, 255);
ЦветБ = ГСЧ.СлучайноеЧисло(180, 210);
КонецЕсли;
ТекущийЭлемент.ЦветФона = Новый Цвет(ЦветР, ЦветГ, ЦветБ);
КонецЕсли;
РаскраситьСеткуВерстки(ТекущийЭлемент.ПодчиненныеЭлементы, ГСЧ);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
// Создает группу полей ввода на основе переданной коллекции (Соответствия или Структуры).
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - Форма, на которой создаются элементы.
// Родитель - Строка или ГруппаФормы - Контейнер для полей ввода.
// КоллекцияПолей - Соответствие ИЛИ Структура - Ключ: ПутьКДанным, Значение: Заголовок.
//
// Возвращаемое значение:
// Массив - Массив созданных элементов управления формы (полей ввода).
//
Функция СоздатьПоля(Форма, Родитель, КоллекцияПолей) Экспорт
СозданныеПоля = Новый Массив;
Для Каждого НастройкаПоля Из КоллекцияПолей Цикл
ПутьКДанным = НастройкаПоля.Ключ;
Заголовок = НастройкаПоля.Значение;
ШифрВида = 1;
ИмяЭлемента = Родитель.Имя + Заголовок;
НовоеПоле = ДФИ.СздПоле(Форма, ИмяЭлемента, Родитель, Заголовок, ШифрВида, ПутьКДанным);
СозданныеПоля.Добавить(НовоеПоле);
КонецЦикла;
Возврат СозданныеПоля;
КонецФункции
// Создает группу полей типа "Флажок" (чекбоксов) на основе переданной коллекции.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - Форма, на которой создаются элементы.
// Родитель - Строка или ГруппаФормы - Контейнер для чекбоксов.
// КоллекцияПолей - Соответствие ИЛИ Структура - Ключ: ПутьКДанным, Значение: Заголовок.
//
// Возвращаемое значение:
// Массив - Массив созданных элементов управления формы (флажков).
//
Функция СоздатьПоляЧекбоксов(Форма, Родитель, КоллекцияПолей) Экспорт
СозданныеПоля = Новый Массив;
Для Каждого НастройкаПоля Из КоллекцияПолей Цикл
ПутьКДанным = НастройкаПоля.Ключ;
Заголовок = НастройкаПоля.Значение;
ШифрВида = 2;
ИмяЭлемента = Родитель.Имя + Заголовок;
НовоеПоле = ДФИ.СздПоле(Форма, ИмяЭлемента, Родитель, Заголовок, ШифрВида, ПутьКДанным);
НовоеПоле.ВидФлажка = ВидФлажка["Флажок"];
СозданныеПоля.Добавить(НовоеПоле);
КонецЦикла;
Возврат СозданныеПоля;
КонецФункции
Процедура ПолучитьСостояниеРастягиванияЭлементаПоГоризонтали(Элемент,Состояние)
Если Состояние = 1 Тогда
Элемент.РастягиватьПоГоризонтали = ИСТИНА;
ИначеЕсли Состояние = 2 Тогда
Элемент.РастягиватьПоГоризонтали = ЛОЖЬ;
КонецЕсли;
КонецПроцедуры
Процедура ПолучитьСостояниеРастягиванияЭлементаПоВертикали(Элемент,Состояние)
Если Состояние = 1 Тогда
Элемент.РастягиватьПоВертикали = ИСТИНА;
ИначеЕсли Состояние = 2 Тогда
Элемент.РастягиватьПоВертикали = ЛОЖЬ;
КонецЕсли;
КонецПроцедуры
// Очищает строку от любых символов, кроме букв, цифр и знака подчеркивания.
//
// Параметры:
// ПроверяемаяСтрока - Строка - Исходная строка для очистки.
// ДопРазрешенныеСимволы - Строка - Дополнительные символы, которые не нужно удалять.
//
// Возвращаемое значение:
// Строка - Строка без спецсимволов.
//
Функция ОчиститьОтЗапрещенныхСимволов(ПроверяемаяСтрока, ДопРазрешенныеСимволы = Неопределено)
Если НЕ ЗначениеЗаполнено(ПроверяемаяСтрока) Тогда
Возврат ПроверяемаяСтрока;
КонецЕсли;
ОчищеннаяСтрока = "";
РазрешенныеСимволы = "абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ" +
"abcdefghijklmnopqrstuvwxyzQWERTYUIOPASDFGHJKLZXCVBNM" +
"0123456789_";
Если ЗначениеЗаполнено(ДопРазрешенныеСимволы) Тогда
РазрешенныеСимволы = РазрешенныеСимволы + ДопРазрешенныеСимволы;
КонецЕсли;
Для Сч = 1 по СтрДлина(СокрЛП(ПроверяемаяСтрока)) Цикл
ТекСимв = Сред(ПроверяемаяСтрока, Сч, 1);
Если Найти(РазрешенныеСимволы, ТекСимв) > 0 Тогда
ОчищеннаяСтрока = ОчищеннаяСтрока + ТекСимв;
КонецЕсли;
КонецЦикла;
Возврат ОчищеннаяСтрока;
КонецФункции