/
kotovdima
/
DFI
Обзор
Документация
Войти
/
kotovdima
/
DFI
Код
Запросы
0
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
ModuleDFI.bsl
1 550 строк
110 KB
Alexander Osadchy
Очистка строковых свойств от запрещенных символов
10 май 2022, 13:27
Не верифицирован
10 май 2022, 13:27
9d42568
Код
Авторство
О чём код?
////////////////////////////////////////////////////////////////////////////////// // // Модуль Динамического Формирования Интерфейса // Начало разработки 26.03.2020 года // // Автор и разработчик: Котов Дмитрий Вадимович // При поддержеке участников сообщества GitHub & Infostart // https://github.com/KotovDima1C/DFI // Инфостарт https://infostart.ru/profile/564942/ // telegram: @KotovDima // ////////////////////////////////////////////////////////////////////////////////// #Область ОписаниеТипов ////////////////////////////////////////////////////////////////////////////////// //Создание описание типов // Создание описания типа Строка // // Параметры: // ДлинаСтроки - Число - длина строки // Функция ОписаниеТипаСтрока(ДлинаСтроки = 0) Экспорт Возврат Новый ОписаниеТипов("Строка",,кСтрока(ДлинаСтроки)); КонецФункции // Создание описания типа Число // // Параметры: // ДлинаЧисла - Число - общая длина числа // ТочностьЧисла - Число - количество символов после запятой // Функция ОписаниеТипаЧисло(ДлинаЧисла = 15,ТочностьЧисла = 2) Экспорт Возврат Новый ОписаниеТипов("Число",кЧисло(ДлинаЧисла,ТочностьЧисла)); КонецФункции // Создание описания типа ДатаВремя // // Параметры: // ДатаВремя - Строка - Варианты: "ДатаВремя", "Дата" или "Время" // Функция ОписаниеТипаДатаВремя(ДатаВремя = "ДатаВремя") Экспорт Возврат Новый ОписаниеТипов("Дата",,,кДатаВремя(ДатаВремя)); КонецФункции // Создание типа "Таблица значений" Функция ОписаниеТипаТаблицаЗначений() Экспорт МассивТипаВыбора = Новый Массив; МассивТипаВыбора.Добавить(Тип("ТаблицаЗначений")); Возврат Новый ОписаниеТипов(МассивТипаВыбора); КонецФункции // Создание типа "Динамический список" Функция ОписаниеТипаДинамическийСписок() Экспорт МассивТипаВыбора = Новый Массив; МассивТипаВыбора.Добавить(Тип("ДинамическийСписок")); Возврат Новый ОписаниеТипов(МассивТипаВыбора); КонецФункции // Создание типа "Булево" Функция ОписаниеТипаБулево() Экспорт Возврат Новый ОписаниеТипов("Булево"); КонецФункции // Создание описания ссылочного типа справочника // // Параметры: // ИмяДокумента - Строка - Имя документа в дереве метаданных // Функция ОписаниеТипаДокумент(ИмяДокумента) Экспорт Возврат Новый ОписаниеТипов("ДокументСсылка." + ИмяДокумента); КонецФункции // Создание описания ссылочного типа справочника // // Параметры: // ИмяСправочника - Строка - Имя справочника в дереве метаданных // Функция ОписаниеТипаСправочник(ИмяСправочника) Экспорт Возврат Новый ОписаниеТипов("СправочникСсылка." + ИмяСправочника); КонецФункции // Создание описания типа перечисление // // Параметры: // ИмяПеречисления - Строка - Имя перечисления в дереве метаданных // Функция ОписаниеТипаПеречисление(ИмяПеречисления) Экспорт Возврат Новый ОписаниеТипов("ПеречислениеСсылка." + ИмяПеречисления); КонецФункции /////////////////////////////////////////////////////////////////////////////////// //Создание квалификаторов // Создание квалификатора для типа Строка // // Параметры: // ДлинаСтроки - Число - длина строки // Функция кСтрока(ДлинаСтроки = 0) Экспорт Возврат Новый КвалификаторыСтроки(ДлинаСтроки); КонецФункции // Создание квалификатора для типа Число // // Параметры: // ДлинаЧисла - Число - общая длина числа // ТочностьЧисла - Число - количество символов после запятой // Функция кЧисло(ДлинаЧисла = 15,ТочностьЧисла = 2) Экспорт Возврат Новый КвалификаторыЧисла(ДлинаЧисла,ТочностьЧисла); КонецФункции // Создание квалификатора для типа ДатаВремя // // Параметры: // ДатаВремя - Строка - Варианты: "ДатаВремя", "Дата" или "Время" // Функция кДатаВремя(ДатаВремя = "ДатаВремя") Экспорт Возврат Новый КвалификаторыДаты(ЧастиДаты[ДатаВремя]); КонецФункции #КонецОбласти #Область СозданиеРеквизитовКоманд // Создание одного реквизита // // Параметры: // Форма - ФормаКлиентскогоПриложения - Форма на которой создаются элементы // ИмяРеквизита - Строка - Имя реквизита // ОписаниеТипа - ОписаниеТипа - Описание типа реквизита // Процедура СоздатьРеквизит(Форма,ИмяРеквизита,ОписаниеТипа) Экспорт структураРеквизитов = Новый Структура; структураРеквизитов.Вставить(ОчиститьОтЗапрещенныхСимволов(ИмяРеквизита),ОписаниеТипа); СоздатьРеквизиты(Форма,структураРеквизитов); КонецПроцедуры // Создание реквизитов // // Параметры: // Форма - ФормаКлиентскогоПриложения - Форма на которой создаются элементы // структураРеквизитов - Структура - Где ключ это Имя реквизита, а значение это описание типа реквизита // Процедура СоздатьРеквизиты(Форма,структураРеквизитов) Экспорт ДобавляемыеРеквизиты = Новый Массив; Для Каждого тРеквизит Из структураРеквизитов Цикл НовыйРеквизит = Новый РеквизитФормы(тРеквизит.Ключ,тРеквизит.Значение); ДобавляемыеРеквизиты.Добавить(НовыйРеквизит); КонецЦикла; Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты); КонецПроцедуры // Создание реквизитов для таблицы // // Параметры: // Форма - ФормаКлиентскогоПриложения - Форма на которой создаются элементы // ИмяТаблицы - Строка - Имя таблицы куда добавляете реквизиты // структураРеквизитов - Структура - Где ключ это Имя реквизита, а значение это описание типа реквизита // Процедура СоздатьРеквизитыТаблицы(Форма,ИмяТаблицы,структураРеквизитов) Экспорт ДобавляемыеРеквизиты = Новый Массив; Для Каждого тРеквизит Из структураРеквизитов Цикл НовыйРеквизит = Новый РеквизитФормы(тРеквизит.Ключ,тРеквизит.Значение,ИмяТаблицы); ДобавляемыеРеквизиты.Добавить(НовыйРеквизит); КонецЦикла; Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты); КонецПроцедуры // Создание команды // // Параметры: // Форма - ФормаКлиентскогоПриложения - Форма на которой создаются элементы // ИмяКоманды - Строка - Имя команды // Заголовок - Строка - Заголовок команды // ИмяДействия - Строка - Имя процедуры действия команды // Пример процедуры в модуле формы "Процедура <ИмяДействия>(Команда)" // СтруктураСвойств - Структура - Содержит значения свойств, где ключ название свойства и значение // Процедура СоздатьКоманду(Форма, ИмяКоманды, Заголовок, ИмяДействия, СтруктураСвойств = Неопределено) Экспорт НоваяКоманда = Форма.Команды.Добавить(ОчиститьОтЗапрещенныхСимволов(ИмяКоманды)); НоваяКоманда.Заголовок = Заголовок; НоваяКоманда.Действие = ОчиститьОтЗапрещенныхСимволов(ИмяДействия); ЕслиСтруктураНеопределеноТоНовая(СтруктураСвойств); УстановитьСвойстваЭлементу(НоваяКоманда,СтруктураСвойств); КонецПроцедуры #КонецОбласти #Область ВспомогательныеФункции Процедура ЕслиСтруктураНеопределеноТоНовая(текущаяСруктура) Если текущаяСруктура = Неопределено Тогда текущаяСруктура = Новый Структура; КонецЕсли; КонецПроцедуры Процедура ОпределитьЭлементФормы(Форма,Элемент) Если Элемент = Неопределено Тогда Возврат КонецЕсли; Если ТипЗнч(Элемент) = Тип("Строка") Тогда // может прийти "ИмяТаблицы.КоманднаяПанель" Иерархия = СтрРазделить(Элемент, "."); Элемент = Форма.Элементы; Для Каждого Шаг Из Иерархия Цикл Элемент = Элемент[Шаг]; КонецЦикла; КонецЕсли; КонецПроцедуры Процедура ПолучитьСостояниеРастягиванияЭлементаПоГоризонтали(Элемент,Состояние) Если Состояние = 1 Тогда Элемент.РастягиватьПоГоризонтали = ИСТИНА; ИначеЕсли Состояние = 2 Тогда Элемент.РастягиватьПоГоризонтали = ЛОЖЬ; КонецЕсли; КонецПроцедуры Процедура ПолучитьСостояниеРастягиванияЭлементаПоВертикали(Элемент,Состояние) Если Состояние = 1 Тогда Элемент.РастягиватьПоВертикали = ИСТИНА; ИначеЕсли Состояние = 2 Тогда Элемент.РастягиватьПоВертикали = ЛОЖЬ; КонецЕсли; КонецПроцедуры Процедура ПолучитьСостояниеГруппировкиЭлемента(Элемент,Состояние) Если Состояние = 1 Тогда Элемент.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная; ИначеЕсли Состояние = 2 Тогда Элемент.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяЕслиВозможно; ИначеЕсли Состояние = 3 Тогда Элемент.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда; КонецЕсли; КонецПроцедуры Процедура ПолучитьСостояниеГруппировкиКолонкиЭлемента(Элемент,Состояние) Если Состояние = 1 Тогда Элемент.Группировка = ГруппировкаКолонок.Горизонтальная; ИначеЕсли Состояние = 2 Тогда Элемент.Группировка = ГруппировкаКолонок.Вертикальная; ИначеЕсли Состояние = 3 Тогда Элемент.Группировка = ГруппировкаКолонок.ВЯчейке; КонецЕсли; КонецПроцедуры Процедура УстановитьМножествоСтруктурСвойствЭлементу(Элемент, СтруктураСвойств1, СтруктураСвойств2 = Неопределено, СтруктураСвойств3 = Неопределено, СтруктураСвойств4 = Неопределено, СтруктураСвойств5 = Неопределено, СтруктураСвойств6 = Неопределено, СтруктураСвойств7 = Неопределено, СтруктураСвойств8 = Неопределено, СтруктураСвойств9 = Неопределено, СтруктураСвойств10 = Неопределено) Экспорт УстановитьСвойстваЭлементу(Элемент,СтруктураСвойств1); Если СтруктураСвойств2 <> Неопределено Тогда УстановитьСвойстваЭлементу(Элемент,СтруктураСвойств2) КонецЕсли; Если СтруктураСвойств3 <> Неопределено Тогда УстановитьСвойстваЭлементу(Элемент,СтруктураСвойств3) КонецЕсли; Если СтруктураСвойств4 <> Неопределено Тогда УстановитьСвойстваЭлементу(Элемент,СтруктураСвойств4) КонецЕсли; Если СтруктураСвойств5 <> Неопределено Тогда УстановитьСвойстваЭлементу(Элемент,СтруктураСвойств5) КонецЕсли; Если СтруктураСвойств6 <> Неопределено Тогда УстановитьСвойстваЭлементу(Элемент,СтруктураСвойств6) КонецЕсли; Если СтруктураСвойств7 <> Неопределено Тогда УстановитьСвойстваЭлементу(Элемент,СтруктураСвойств7) КонецЕсли; Если СтруктураСвойств8 <> Неопределено Тогда УстановитьСвойстваЭлементу(Элемент,СтруктураСвойств8) КонецЕсли; Если СтруктураСвойств9 <> Неопределено Тогда УстановитьСвойстваЭлементу(Элемент,СтруктураСвойств9) КонецЕсли; Если СтруктураСвойств10 <> Неопределено Тогда УстановитьСвойстваЭлементу(Элемент,СтруктураСвойств10) КонецЕсли; КонецПроцедуры Процедура УстановитьСвойстваЭлементу(Элемент,СтруктураСвойств) Экспорт Для Каждого тСвойство Из СтруктураСвойств Цикл Элемент[тСвойство.Ключ] = тСвойство.Значение; КонецЦикла; КонецПроцедуры Процедура УстановитьСобытияЭлементу(Элемент,СтруктураСобытий) Экспорт Для Каждого тСвойство Из СтруктураСобытий Цикл Элемент.УстановитьДействие(тСвойство.Ключ,тСвойство.Значение); КонецЦикла; КонецПроцедуры Процедура УстановитьПараметрыЗапросу(РеквизитДинамическийСписок,ПараметрыЗапроса) Экспорт Для Каждого Параметра из ПараметрыЗапроса Цикл РеквизитДинамическийСписок.Параметры.УстановитьЗначениеПараметра(Параметра.Ключ,Параметра.Значение); КонецЦикла; КонецПроцедуры Функция СоздатьЭлементФормы(Форма,ИмяЭлемента,ТипЭлемента,РодительЭлемента,ЭлементПеред = Неопределено) Если ЭлементПеред = Неопределено Тогда НовыйЭлемент = Форма.Элементы.Добавить(ОчиститьОтЗапрещенныхСимволов(ИмяЭлемента),ТипЭлемента,РодительЭлемента); Иначе НовыйЭлемент = Форма.Элементы.Вставить(ОчиститьОтЗапрещенныхСимволов(ИмяЭлемента),ТипЭлемента,РодительЭлемента,ЭлементПеред); КонецЕсли; Возврат НовыйЭлемент; КонецФункции Процедура СоздатьКолонкиДляТаблицыФормы(Форма,ТаблицаФормы,СтруктураКолонок,ЭтоДС = ЛОЖЬ) ИмяСписка = ТаблицаФормы.Имя; Для Каждого тКолонка Из СтруктураКолонок Цикл ИмяКолонки = тКолонка.Ключ; НоваяКолонкаТаблицы = СоздатьЭлементФормы(Форма,ИмяСписка + ИмяКолонки,Тип("ПолеФормы"),ТаблицаФормы); НоваяКолонкаТаблицы.Вид = ?(ЭтоДС,ВидПоляФормы.ПолеНадписи,ВидПоляФормы.ПолеВвода); Если тКолонка.Значение <> "" Тогда НоваяКолонкаТаблицы.Заголовок = тКолонка.Значение КонецЕсли; // ++bugfix https://github.com/JusteRU НоваяКолонкаТаблицы.ПутьКДанным = ТаблицаФормы.ПутьКДанным + "." + ИмяКолонки; // --bugfix КонецЦикла; КонецПроцедуры Функция ПолучитьГоризонтальноеПоложение(ШифрПоложения) Если ШифрПоложения = 1 Тогда нГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Лево; ИначеЕсли ШифрПоложения = 2 Тогда нГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Центр; ИначеЕсли ШифрПоложения = 3 Тогда нГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Право; Иначе нГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Авто; КонецЕсли; Возврат нГоризонтальноеПоложение; КонецФункции #КонецОбласти #Область СозданиеЭлементов // Создать обычную группу без отображения // // Параметры: // Форма - ФормаКлиентскогоПриложения - Форма на которой создаются элементы // ИмяГруппы - Строка - Имя элемента на форме // РодительГруппы - Строка - достаточно указать название элемента формы // - Элементы - можно в качестве родителя передать элемент формы // ГруппировкаОбычнойГруппы - Число - Принимаемые значения: // 1 - Вертикальная // 2 - ГоризонтальнаяЕслиВозможно // 3 - ГоризонтальнаяВсегда // 0 - Авто // РастягиватьГоризонтально - Число - Принимаемые значения: // 1 - ИСТИНА // 2 - ЛОЖЬ // 0 - Авто // РастягиватьВертикально - Число - Принимаемые значения: // 1 - ИСТИНА // 2 - ЛОЖЬ // 0 - Авто // СтруктураСвойств - Структура - Содержит значения свойств, где ключ название свойства и значение // ЭлементПеред - Строка - достаточно указать название элемента формы перед которым требуется вставить новый элемент // - Элементы - можно передать элемент формы // Функция СздГруппаОбычнаяБезОтображения(Форма, ИмяГруппы, РодительГруппы, ГруппировкаОбычнойГруппы = 0, РастягиватьГоризонтально = 0, РастягиватьВертикально = 0, СтруктураСвойств = Неопределено, ЭлементПеред = Неопределено) Экспорт ЕслиСтруктураНеопределеноТоНовая(СтруктураСвойств); ОпределитьЭлементФормы(Форма,РодительГруппы); ОпределитьЭлементФормы(Форма,ЭлементПеред); НовыйЭлемент = СоздатьЭлементФормы(Форма,ИмяГруппы,Тип("ГруппаФормы"),РодительГруппы,ЭлементПеред); НовыйЭлемент.Вид = ВидГруппыФормы.ОбычнаяГруппа; НовыйЭлемент.Отображение = ОтображениеОбычнойГруппы.Нет; НовыйЭлемент.ОтображатьЗаголовок = ЛОЖЬ; ПолучитьСостояниеГруппировкиЭлемента(НовыйЭлемент,ГруппировкаОбычнойГруппы); ПолучитьСостояниеРастягиванияЭлементаПоГоризонтали(НовыйЭлемент,РастягиватьГоризонтально); ПолучитьСостояниеРастягиванияЭлементаПоВертикали(НовыйЭлемент,РастягиватьВертикально); УстановитьСвойстваЭлементу(НовыйЭлемент,СтруктураСвойств); Возврат НовыйЭлемент; КонецФункции // Создать обычную группу // // Параметры: // Форма - ФормаКлиентскогоПриложения - Форма на которой создаются элементы // ИмяГруппы - Строка - Имя элемента на форме // РодительГруппы - Строка - достаточно указать название элемента формы // - Элементы - можно в качестве родителя передать элемент формы // Заголовок - Строка - Заголовок группы // ГруппировкаОбычнойГруппы - Число - Принимаемые значения: // 1 - Вертикальная // 2 - ГоризонтальнаяЕслиВозможно // 3 - ГоризонтальнаяВсегда // 0 - Авто // РастягиватьГоризонтально - Число - Принимаемые значения: // 1 - ИСТИНА // 2 - ЛОЖЬ // 0 - Авто // РастягиватьВертикально - Число - Принимаемые значения: // 1 - ИСТИНА // 2 - ЛОЖЬ // 0 - Авто // СтруктураСвойств - Структура - Содержит значения свойств, где ключ название свойства и значение // ЭлементПеред - Строка - достаточно указать название элемента формы перед которым требуется вставить новый элемент // - Элементы - можно передать элемент формы // Функция СздГруппаОбычная(Форма, ИмяГруппы, РодительГруппы, Заголовок = "", ГруппировкаОбычнойГруппы = 0, РастягиватьГоризонтально = 0, РастягиватьВертикально = 0, СтруктураСвойств = Неопределено, ЭлементПеред = Неопределено) Экспорт ЕслиСтруктураНеопределеноТоНовая(СтруктураСвойств); ОпределитьЭлементФормы(Форма,РодительГруппы); ОпределитьЭлементФормы(Форма,ЭлементПеред); НовыйЭлемент = СоздатьЭлементФормы(Форма,ИмяГруппы,Тип("ГруппаФормы"),РодительГруппы,ЭлементПеред); НовыйЭлемент.Вид = ВидГруппыФормы.ОбычнаяГруппа; НовыйЭлемент.Отображение = ОтображениеОбычнойГруппы.СлабоеВыделение; НовыйЭлемент.ОтображатьЗаголовок = ИСТИНА; ПолучитьСостояниеГруппировкиЭлемента(НовыйЭлемент,ГруппировкаОбычнойГруппы); ПолучитьСостояниеРастягиванияЭлементаПоГоризонтали(НовыйЭлемент,РастягиватьГоризонтально); ПолучитьСостояниеРастягиванияЭлементаПоВертикали(НовыйЭлемент,РастягиватьВертикально); Если Заголовок <> "" Тогда НовыйЭлемент.Заголовок = Заголовок КонецЕсли; УстановитьСвойстваЭлементу(НовыйЭлемент,СтруктураСвойств); Возврат НовыйЭлемент; КонецФункции // Создать группу страниц // // Параметры: // Форма - ФормаКлиентскогоПриложения - Форма на которой создаются элементы // ИмяГруппы - Строка - Имя элемента на форме // РодительГруппы - Строка - достаточно указать название элемента формы // - Элементы - можно в качестве родителя передать элемент формы // РастягиватьГоризонтально - Число - Принимаемые значения: // 1 - ИСТИНА // 2 - ЛОЖЬ // 0 - Авто // РастягиватьВертикально - Число - Принимаемые значения: // 1 - ИСТИНА // 2 - ЛОЖЬ // 0 - Авто // ПриСменеСтраницы - Строка - При смене страницы??? // СтруктураСвойств - Структура - Содержит значения свойств, где ключ название свойства и значение // ЭлементПеред - Строка - достаточно указать название элемента формы перед которым требуется вставить новый элемент // - Элементы - можно передать элемент формы // Функция СздГруппаСтраниц(Форма, ИмяГруппы, РодительГруппы, РастягиватьГоризонтально = 0, РастягиватьВертикально = 0, ПриСменеСтраницы = "", СтруктураСвойств = Неопределено, ЭлементПеред = Неопределено) Экспорт ЕслиСтруктураНеопределеноТоНовая(СтруктураСвойств); ОпределитьЭлементФормы(Форма,РодительГруппы); ОпределитьЭлементФормы(Форма,ЭлементПеред); НовыйЭлемент = СоздатьЭлементФормы(Форма,ИмяГруппы,Тип("ГруппаФормы"),РодительГруппы,ЭлементПеред); НовыйЭлемент.Вид = ВидГруппыФормы.Страницы; ПолучитьСостояниеРастягиванияЭлементаПоГоризонтали(НовыйЭлемент,РастягиватьГоризонтально); ПолучитьСостояниеРастягиванияЭлементаПоВертикали(НовыйЭлемент,РастягиватьВертикально); Если ПриСменеСтраницы <> "" Тогда НовыйЭлемент.ПриСменеСтраницы = ПриСменеСтраницы КонецЕсли; УстановитьСвойстваЭлементу(НовыйЭлемент,СтруктураСвойств); Возврат НовыйЭлемент; КонецФункции // Создать страницу группы страницы // // Параметры: // Форма - ФормаКлиентскогоПриложения - Форма на которой создаются элементы // ИмяСтраницы - Строка - Имя элемента на форме // ГруппаСтраницы - Строка - достаточно указать название элемента формы // - Элементы - можно в качестве родителя передать элемент формы // Заголовок - Строка - Заголовок страницы // ГруппировкаОбычнойГруппы - Число - Принимаемые значения: // 1 - Вертикальная // 2 - ГоризонтальнаяЕслиВозможно // 3 - ГоризонтальнаяВсегда // 0 - Авто // РастягиватьГоризонтально - Число - Принимаемые значения: // 1 - ИСТИНА // 2 - ЛОЖЬ // 0 - Авто // РастягиватьВертикально - Число - Принимаемые значения: // 1 - ИСТИНА // 2 - ЛОЖЬ // 0 - Авто // СтруктураСвойств - Структура - Содержит значения свойств, где ключ название свойства и значение // СтраницаПеред - Строка - достаточно указать название элемента формы перед которым требуется вставить новый элемент // - Элементы - можно передать элемент формы // Функция СздСтраница(Форма, ИмяСтраницы, ГруппаСтраницы, Заголовок = "", ГруппировкаОбычнойГруппы = 0, РастягиватьГоризонтально = 0, РастягиватьВертикально = 0, СтруктураСвойств = Неопределено, СтраницаПеред = Неопределено) Экспорт ЕслиСтруктураНеопределеноТоНовая(СтруктураСвойств); ОпределитьЭлементФормы(Форма,ГруппаСтраницы); ОпределитьЭлементФормы(Форма,СтраницаПеред); НовыйЭлемент = СоздатьЭлементФормы(Форма,ИмяСтраницы,Тип("ГруппаФормы"),ГруппаСтраницы,СтраницаПеред); НовыйЭлемент.Вид = ВидГруппыФормы.Страница; ПолучитьСостояниеГруппировкиЭлемента(НовыйЭлемент,ГруппировкаОбычнойГруппы); ПолучитьСостояниеРастягиванияЭлементаПоГоризонтали(НовыйЭлемент,РастягиватьГоризонтально); ПолучитьСостояниеРастягиванияЭлементаПоВертикали(НовыйЭлемент,РастягиватьВертикально); Если Заголовок <> "" Тогда НовыйЭлемент.Заголовок = Заголовок КонецЕсли; УстановитьСвойстваЭлементу(НовыйЭлемент,СтруктураСвойств); Возврат НовыйЭлемент; КонецФункции // Создать обычную группу // // Параметры: // Форма - ФормаКлиентскогоПриложения - Форма на которой создаются элементы // ИмяГруппы - Строка - Имя элемента на форме // РодительПанели - Строка - достаточно указать название элемента формы // - Элементы - можно в качестве родителя передать элемент формы // СтруктураСвойств - Структура - Содержит значения свойств, где ключ название свойства и значение // ЭлементПеред - Строка - достаточно указать название элемента формы перед которым требуется вставить новый элемент // - Элементы - можно передать элемент формы // Функция СздГруппаКоманднаяПанель(Форма, ИмяПанели, РодительПанели, СтруктураСвойств = Неопределено, ЭлементПеред = Неопределено) Экспорт ЕслиСтруктураНеопределеноТоНовая(СтруктураСвойств); ОпределитьЭлементФормы(Форма,РодительПанели); ОпределитьЭлементФормы(Форма,ЭлементПеред); НовыйЭлемент = СоздатьЭлементФормы(Форма,ИмяПанели,Тип("ГруппаФормы"),РодительПанели,ЭлементПеред); НовыйЭлемент.Вид = ВидГруппыФормы.КоманднаяПанель; УстановитьСвойстваЭлементу(НовыйЭлемент,СтруктураСвойств); Возврат НовыйЭлемент; КонецФункции // Создать группу // // Параметры: // Форма - ФормаКлиентскогоПриложения - Форма на которой создаются элементы // ИмяГруппы - Строка - Имя элемента на форме // РодительГруппы - Строка - достаточно указать название элемента формы // - Элементы - можно в качестве родителя передать элемент формы // СтруктураСвойств - Структура - Содержит значения свойств, где ключ название свойства и значение // ЭлементПеред - Строка - достаточно указать название элемента формы перед которым требуется вставить новый элемент // - Элементы - можно передать элемент формы // Функция СздГруппа(Форма, ИмяГруппы, РодительГруппы, СтруктураСвойств, ЭлементПеред = Неопределено) Экспорт ЕслиСтруктураНеопределеноТоНовая(СтруктураСвойств); ОпределитьЭлементФормы(Форма,РодительГруппы); ОпределитьЭлементФормы(Форма,ЭлементПеред); НовыйЭлемент = СоздатьЭлементФормы(Форма,ИмяГруппы,Тип("ГруппаФормы"),РодительГруппы,ЭлементПеред); УстановитьСвойстваЭлементу(НовыйЭлемент,СтруктураСвойств); Возврат НовыйЭлемент; КонецФункции // Создание поля популярных видов // // Параметры: // Форма - ФормаКлиентскогоПриложения - Форма на которой создаются элементы // ИмяПоля - Строка - Имя элемента на форме // РодительПоля - Строка - достаточно указать название элемента формы // - Элементы - можно в качестве родителя передать элемент формы // Заголовок - Строка - заголовок элемента // ШифрВидаПоля - Число - возможно указать шифр следующих значений: // 1 - ПолеВвода // 2 - ПолеФлажка // 3 - ПолеИндикатора // 4 - ПолеПереключателя // 5 - ПолеПериода // 6 - ПолеHTMLДокумента // 0 - Без указания типа, тип можно передать в структуре свойств // ПутьКДанным - Строка - Путь к данным значения // СтруктураСвойств - Структура - Содержит значения свойств, где ключ название свойства и значение // СтруктураСобытий - Структура - Содержит значения событий, где ключ название события и в значение название процедуры тип "строка" // ЭлементПеред - Строка - достаточно указать название элемента формы перед которым требуется вставить новый элемент // - Элементы - можно передать элемент формы // Функция СздПоле(Форма, ИмяПоля, РодительПоля, Заголовок, ШифрВидаПоля = 0, ПутьКДанным = "", СтруктураСвойств = Неопределено, СтруктураСобытий = Неопределено, ЭлементПеред = Неопределено) Экспорт ЕслиСтруктураНеопределеноТоНовая(СтруктураСвойств); ЕслиСтруктураНеопределеноТоНовая(СтруктураСобытий); ОпределитьЭлементФормы(Форма,РодительПоля); ОпределитьЭлементФормы(Форма,ЭлементПеред); НовыйЭлемент = СоздатьЭлементФормы(Форма,ИмяПоля,Тип("ПолеФормы"),РодительПоля,ЭлементПеред); Если ШифрВидаПоля <> 0 Тогда НаборВидов = "ПолеВвода |ПолеФлажка |ПолеИндикатора |ПолеПереключателя |ПолеПериода |ПолеHTMLДокумента"; ВидПоля = СокрЛП(СтрПолучитьСтроку(НаборВидов,ШифрВидаПоля)); НовыйЭлемент.Вид = ВидПоляФормы[ВидПоля]; КонецЕсли; Если Заголовок <> "" Тогда НовыйЭлемент.Заголовок = Заголовок КонецЕсли; Если ПутьКДанным <> "" Тогда НовыйЭлемент.ПутьКДанным = ПутьКДанным КонецЕсли; УстановитьСвойстваЭлементу(НовыйЭлемент,СтруктураСвойств); УстановитьСобытияЭлементу(НовыйЭлемент,СтруктураСобытий); Возврат НовыйЭлемент; КонецФункции // Создание поля популярных видов // // Параметры: // Форма - ФормаКлиентскогоПриложения - Форма на которой создаются элементы // ИмяПоля - Строка - Имя элемента на форме // РодительПоля - Строка - достаточно указать название элемента формы // - Элементы - можно в качестве родителя передать элемент формы // Заголовок - Строка - заголовок элемента // тВидФлажка - Число - возможные варианты: // 0 - Авто // 1 - Флажок // 2 - Тумблер // 3 - Выключатель // ПутьКДанным - Строка - Путь к данным значения // СтруктураСвойств - Структура - Содержит значения свойств, где ключ название свойства и значение // СтруктураСобытий - Структура - Содержит значения событий, где ключ название события и в значение название процедуры тип "строка" // ЭлементПеред - Строка - достаточно указать название элемента формы перед которым требуется вставить новый элемент // - Элементы - можно передать элемент формы // Функция СздПолеФлажок(Форма, ИмяПоля, РодительПоля, Заголовок, тВидФлажка = 0, ПутьКДанным = "", СтруктураСвойств = Неопределено, СтруктураСобытий = Неопределено, ЭлементПеред = Неопределено) Экспорт НовыйЭлемент = СздПоле(Форма,ИмяПоля,РодительПоля,Заголовок,2,ПутьКДанным,СтруктураСвойств,СтруктураСобытий,ЭлементПеред); Если тВидФлажка <> 0 Тогда НаборВидов = "Флажок |Тумблер |Выключатель"; ВидПоля = СокрЛП(СтрПолучитьСтроку(НаборВидов,тВидФлажка)); НовыйЭлемент.ВидФлажка = ВидФлажка[ВидПоля]; КонецЕсли; КонецФункции //Быстрая функция по созданию декорации надпись // // Параметры: // Форма - ФормаКлиентскогоПриложения - Форма на которой создаются элементы // ИмяДекорации - Строка - Имя элемента на форме // РодительДекорации - Строка - достаточно указать название элемента формы // - Элементы - можно в качестве родителя передать элемент формы // ЗаголовокДекорации - Строка - текст который содержит декорация // РастягиватьПоГоризонтали - Булево - растянуть надпись на всю ширину формы // ЭлементПеред - Строка - достаточно указать название элемента формы перед которым требуется вставить новый элемент // - Элементы - можно передать элемент формы // Функция СздДекорацияНадпись(Форма, ИмяДекорации, РодительДекорации, ЗаголовокДекорации, РастягиватьПоГоризонтали = ИСТИНА, ЭлементПеред = Неопределено) Экспорт ОпределитьЭлементФормы(Форма,РодительДекорации); ОпределитьЭлементФормы(Форма,ЭлементПеред); НовыйЭлемент = СздДекорация(Форма,ИмяДекорации,РодительДекорации,,,ЭлементПеред); НовыйЭлемент.Заголовок = ЗаголовокДекорации; Если РастягиватьПоГоризонтали Тогда НовыйЭлемент.АвтоМаксимальнаяШирина = ЛОЖЬ; НовыйЭлемент.РастягиватьПоГоризонтали = ИСТИНА; КонецЕсли; Возврат НовыйЭлемент; КонецФункции //Быстрая функция по созданию декорации картинки // // Параметры: // Форма - ФормаКлиентскогоПриложения - Форма на которой создаются элементы // ИмяДекорации - Строка - Имя элемента на форме // РодительДекорации - Строка - достаточно указать название элемента формы // - Элементы - можно в качестве родителя передать элемент формы // ИмяКартинки - Строка - Имя картинки в дереве метаданных // ЭлементПеред - Строка - достаточно указать название элемента формы перед которым требуется вставить новый элемент // - Элементы - можно передать элемент формы // Функция СздДекорацияКартинка(Форма, ИмяДекорации, РодительДекорации, ИмяКартинки, ЭлементПеред = Неопределено) Экспорт НовыйЭлемент = СздДекорация(Форма,ИмяДекорации,РодительДекорации,,,ЭлементПеред); НовыйЭлемент.Вид = ВидДекорацииФормы.Картинка; НовыйЭлемент.Картинка = БиблиотекаКартинок[ИмяКартинки]; Возврат НовыйЭлемент; КонецФункции //Общая функция создания декорации с видом надпись и картинка // // Параметры: // Форма - ФормаКлиентскогоПриложения - Форма на которой создаются элементы // ИмяДекорации - Строка - Имя элемента на форме // РодительДекорации - Строка - достаточно указать название элемента формы // - Элементы - можно в качестве родителя передать элемент формы // СтруктураСвойств - Структура - Содержит значения свойств, где ключ название свойства и значение // СтруктураСобытий - Структура - Содержит значения событий, где ключ название события и в значение название процедуры тип "строка" // ЭлементПеред - Строка - достаточно указать название элемента формы перед которым требуется вставить новый элемент // - Элементы - можно передать элемент формы // Функция СздДекорация(Форма, ИмяДекорации, РодительДекорации, СтруктураСвойств = Неопределено, СтруктураСобытий = Неопределено, ЭлементПеред = Неопределено) Экспорт ЕслиСтруктураНеопределеноТоНовая(СтруктураСвойств); ЕслиСтруктураНеопределеноТоНовая(СтруктураСобытий); ОпределитьЭлементФормы(Форма,РодительДекорации); ОпределитьЭлементФормы(Форма,ЭлементПеред); НовыйЭлемент = СоздатьЭлементФормы(Форма,ИмяДекорации,Тип("ДекорацияФормы"),РодительДекорации,ЭлементПеред); УстановитьСвойстваЭлементу(НовыйЭлемент,СтруктураСвойств); УстановитьСобытияЭлементу(НовыйЭлемент,СтруктураСобытий); Возврат НовыйЭлемент; КонецФункции //Общая функция создания кнопки // // Параметры: // Форма - ФормаКлиентскогоПриложения - Форма на которой создаются элементы // ИмяКнопки - Строка - Имя элемента на форме // РодительКнопки - Строка - достаточно указать название элемента формы // - Элементы - можно в качестве родителя передать элемент формы // ЗаголовокКнопки - Строка - отображаемый заголовок кнопки // ИмяКоманды - Строка - Имя команды // ВидКнопки - Число - Принимаемые значения // 1 - Обычная кнопка // 2 - Гиперссылка // СтруктураСвойств - Структура - Содержит значения свойств, где ключ название свойства и значение // СтруктураСобытий - Структура - Содержит значения событий, где ключ название события и в значение название процедуры тип "строка" // ЭлементПеред - Строка - достаточно указать название элемента формы перед которым требуется вставить новый элемент // - Элементы - можно передать элемент формы // Функция СздКнопка(Форма, ИмяКнопки, РодительКнопки, ЗаголовокКнопки = "", ИмяКоманды = "", ВидКнопки = 0, СтруктураСвойств = Неопределено, ЭлементПеред = Неопределено) Экспорт ЕслиСтруктураНеопределеноТоНовая(СтруктураСвойств); ОпределитьЭлементФормы(Форма,РодительКнопки); ОпределитьЭлементФормы(Форма,ЭлементПеред); //НовыйЭлемент = СоздатьЭлементФормы(Форма,ИмяКнопки,Тип("ДекорацияФормы"),РодительКнопки,ЭлементПеред); НовыйЭлемент = СоздатьЭлементФормы(Форма,ИмяКнопки,Тип("КнопкаФормы"),РодительКнопки,ЭлементПеред); Если ВидКнопки <> 0 Тогда НаборВидов = "ОбычнаяКнопка |Гиперссылка"; ВидПоля = СокрЛП(СтрПолучитьСтроку(НаборВидов,ВидКнопки)); НовыйЭлемент.Вид = ВидКнопкиФормы[ВидПоля]; КонецЕсли; Если ЗаголовокКнопки <> "" Тогда НовыйЭлемент.Заголовок = ЗаголовокКнопки; КонецЕсли; Если ИмяКоманды <> "" Тогда НовыйЭлемент.ИмяКоманды = ИмяКоманды; КонецЕсли; УстановитьСвойстваЭлементу(НовыйЭлемент,СтруктураСвойств); Возврат НовыйЭлемент; КонецФункции // Создаем динамический список версия 2.0 // // Параметры: // Форма - ФормаКлиентскогоПриложения - Форма на которой создаются элементы // ИмяСписка - Строка - Имя будущей таблицы формы // РодительСписка - Строка - достаточно указать название элемента формы // - Элементы - можно в качестве родителя передать элемент формы // ТекстЗапроса - Строка - если не заполнен, то обязательно должен быть заполнен параметр ТаблицаСписка // ПараметрыЗапроса - Структура - Содержит параметры для запроса, где ключ - имя параметры, а значение соответственно // ТаблицаСписка - Строка - имя таблицы списка, // СтруктураКолонок - Структура - Ключ имя колонки в динамическом списке, значение это заголовок колонки // Для сложных случаев лучше передать "неопределено" и впоспользоваться процедурой формирования колонок таблицы формы этого же модуля ДФИ // СвояКоманднаяПанель - Булево - используется если требуется снять флаг "Автозаполнение" и наполнить самостоятельно // Из-за специфики работы, нет программной возможности снятия флага "Автозаполнение", по этому создается своя командная панель, а стандартная скрывается полностью. // Имя новой командной панели <ИмяСписка>+"КоманднаяПанель2" // СтруктураСвойств - Структура - Содержит значения свойств, где ключ название свойства и значение // СтруктураСобытий - Структура - Содержит значения событий, где ключ название события и в значение название процедуры тип "строка" // ЭлементПеред - Строка - достаточно указать название элемента формы перед которым требуется вставить новый элемент // - Элементы - можно передать элемент формы // Функция СздДинамическийСписок(Форма, ИмяСписка = "Список", РодительСписка, ТекстЗапроса = "", ПараметрыЗапроса = Неопределено, ТаблицаСписка = "", СтруктураКолонок = Неопределено, СтруктураСвойств = Неопределено, СтруктураСобытий = Неопределено, СвояКоманднаяПанель = ЛОЖЬ, ЭлементПеред = Неопределено ) Экспорт СоздатьРеквизит(Форма,ИмяСписка,ОписаниеТипаДинамическийСписок()); РеквизитДинамическийСписок = Форма[ИмяСписка]; Если ТекстЗапроса = "" Тогда РеквизитДинамическийСписок.ПроизвольныйЗапрос = ЛОЖЬ; РеквизитДинамическийСписок.ОсновнаяТаблица = ТаблицаСписка; Иначе РеквизитДинамическийСписок.ПроизвольныйЗапрос = ИСТИНА; РеквизитДинамическийСписок.ТекстЗапроса = ТекстЗапроса; Если ТаблицаСписка <> "" Тогда РеквизитДинамическийСписок.ОсновнаяТаблица = ТаблицаСписка; КонецЕсли; КонецЕсли; ЕслиСтруктураНеопределеноТоНовая(ПараметрыЗапроса); УстановитьПараметрыЗапросу(РеквизитДинамическийСписок,ПараметрыЗапроса); ТаблицаФормы = СздТаблицаФормы(Форма,ИмяСписка,РодительСписка,ИмяСписка,СтруктураКолонок,СтруктураСвойств,СтруктураСобытий,СвояКоманднаяПанель,ЭлементПеред); Возврат ТаблицаФормы; КонецФункции // Создаем колонку для Таблицы формы (Динамического списка) // // Параметры: // Форма - ФормаКлиентскогоПриложения - Форма на которой создаются элементы // ИмяКолонки - Строка - Имя будущей колонки // ТипКолонки - Число - Принимаемые значения: // 0 - Поле вводы // 1 - Поле надписи // 2 - Поле флажка // 3 - Поле картинки // Заголовок - Строка - Заголовок колонки // ПутьКДанным - Строка - Путь к данным, не забывайте про точку и "Объект", пример "Объект.Товары.Номенклатура" // СтруктураСвойств - Структура - Содержит значения свойств, где ключ название свойства и значение // СтруктураСобытий - Структура - Содержит значения событий, где ключ название события и в значение название процедуры тип "строка" // ЭлементПеред - Строка - достаточно указать название элемента формы перед которым требуется вставить новый элемент // - Элементы - можно передать элемент формы // Функция СздКолонкаТаблицыФормы(Форма, ИмяКолонки, Родитель, ТипКолонки = 0, Заголовок = "", ПутьКДанным, ОтображатьШапку = ИСТИНА, ОтображатьПодвал = ЛОЖЬ, СтруктураСвойств = Неопределено, СтруктураСобытий = Неопределено, ЭлементПеред = Неопределено ) Экспорт ЕслиСтруктураНеопределеноТоНовая(СтруктураСвойств); ЕслиСтруктураНеопределеноТоНовая(СтруктураСобытий); ОпределитьЭлементФормы(Форма,Родитель); ОпределитьЭлементФормы(Форма,ЭлементПеред); Если ТипКолонки <> 0 Тогда НаборВидов = "ПолеНадписи |ПолеФлажка |ПолеКартинки"; ВидПоля = СокрЛП(СтрПолучитьСтроку(НаборВидов,ТипКолонки)); Иначе ВидПоля = "ПолеВвода"; КонецЕсли; НовыйЭлемент = СоздатьЭлементФормы(Форма,ИмяКолонки,Тип("ПолеФормы"),Родитель,ЭлементПеред); НовыйЭлемент.Вид = ВидПоляФормы[ВидПоля]; НовыйЭлемент.ПутьКДанным = ПутьКДанным; НовыйЭлемент.ОтображатьВШапке = ОтображатьШапку; НовыйЭлемент.ОтображатьВПодвале = ОтображатьПодвал; УстановитьСвойстваЭлементу(НовыйЭлемент,СтруктураСвойств); УстановитьСобытияЭлементу(НовыйЭлемент,СтруктураСобытий); Возврат НовыйЭлемент; КонецФункции // Создаем Таблицу формы // // Параметры: // Форма - ФормаКлиентскогоПриложения - Форма на которой создаются элементы // ИмяТаблицы - Строка - Имя будущей таблицы // РодительТаблицы - Строка - достаточно указать название элемента формы перед которым требуется вставить новый элемент // - Элементы - можно передать элемент формы // ПутьКДанным - Строка - Путь к данным реквизита // СтруктураКолонок - Структура - Содержит значения колонок, где ключ имя колонки и значение это заголовок если необходимо изменить, иначе можно передать "" // СтруктураСвойств - Структура - Содержит значения свойств, где ключ название свойства и значение // СтруктураСобытий - Структура - Содержит значения событий, где ключ название события и в значение название процедуры тип "строка" // СвояКоманднаяПанель - Булево - используется если требуется снять флаг "Автозаполнение" и наполнить самостоятельно // Из-за специфики работы, нет программной возможности снятия флага "Автозаполнение", по этому создается своя командная панель, а стандартная скрывается полностью. // Имя новой командной панели <ИмяСписка>+"КоманднаяПанель2" // ЭлементПеред - Строка - достаточно указать название элемента формы перед которым требуется вставить новый элемент // - Элементы - можно передать элемент формы // Функция СздТаблицаФормы(Форма, ИмяТаблицы, РодительТаблицы, ПутьКДанным, СтруктураКолонок = Неопределено, СтруктураСвойств = Неопределено, СтруктураСобытий = Неопределено, СвояКоманднаяПанель = ЛОЖЬ, ЭлементПеред = Неопределено ) Экспорт ЕслиСтруктураНеопределеноТоНовая(СтруктураКолонок); ЕслиСтруктураНеопределеноТоНовая(СтруктураСвойств); ЕслиСтруктураНеопределеноТоНовая(СтруктураСобытий); ОпределитьЭлементФормы(Форма,РодительТаблицы); ОпределитьЭлементФормы(Форма,ЭлементПеред); Если СвояКоманднаяПанель Тогда ГруппаДинамическогоСписка = СздГруппаОбычнаяБезОтображения(Форма,"ДополнительнаяГруппаКоманднаяПанель" + ИмяТаблицы,РодительТаблицы,1,1,1,,ЭлементПеред); КоманднаяПанельСписка = СздГруппаКоманднаяПанель(Форма,ИмяТаблицы + "КоманднаяПанель2",ГруппаДинамическогоСписка); ТаблицаФормы = СоздатьЭлементФормы(Форма,ИмяТаблицы,Тип("ТаблицаФормы"),ГруппаДинамическогоСписка); ТаблицаФормы.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет; Иначе ТаблицаФормы = СоздатьЭлементФормы(Форма,ИмяТаблицы,Тип("ТаблицаФормы"),РодительТаблицы,ЭлементПеред); КонецЕсли; ТаблицаФормы.ПутьКДанным = ПутьКДанным; СоздатьКолонкиДляТаблицыФормы(Форма,ТаблицаФормы,СтруктураКолонок); УстановитьСвойстваЭлементу(ТаблицаФормы,СтруктураСвойств); УстановитьСобытияЭлементу(ТаблицаФормы,СтруктураСобытий); Возврат ТаблицаФормы; КонецФункции // Создать обычную группу без отображения // // Параметры: // Форма - ФормаКлиентскогоПриложения - Форма на которой создаются элементы // ИмяГруппы - Строка - Имя элемента на форме // РодительГруппы - Строка - достаточно указать название элемента формы // - Элементы - можно в качестве родителя передать элемент формы // ГруппировкаГруппы - Число - Принимаемые значения: // 1 - Горизонтальная // 2 - Вертикальная // 3 - В ячейке // 0 - Авто // РастягиватьГоризонтально - Число - Принимаемые значения: // 1 - ИСТИНА // 2 - ЛОЖЬ // 0 - Авто // ОтображатьВШапке - Булево - Если необходимо вывести заголовок // СтруктураСвойств - Структура - Содержит значения свойств, где ключ название свойства и значение // ЭлементПеред - Строка - достаточно указать название элемента формы перед которым требуется вставить новый элемент // - Элементы - можно передать элемент формы // Функция СздГруппаКолонокТаблицыФормы(Форма, ИмяГруппы, РодительГруппы, ГруппировкаГруппы = 0, РастягиватьГоризонтально = 0, ОтображатьВШапке = ЛОЖЬ, Заголовок = "", СтруктураСвойств = Неопределено, ЭлементПеред = Неопределено) Экспорт ЕслиСтруктураНеопределеноТоНовая(СтруктураСвойств); ОпределитьЭлементФормы(Форма,РодительГруппы); ОпределитьЭлементФормы(Форма,ЭлементПеред); НовыйЭлемент = СоздатьЭлементФормы(Форма,ИмяГруппы,Тип("ГруппаФормы"),РодительГруппы,ЭлементПеред); НовыйЭлемент.Вид = ВидГруппыФормы.ГруппаКолонок; НовыйЭлемент.ОтображатьВШапке = ОтображатьВШапке; НовыйЭлемент.Заголовок = Заголовок; ПолучитьСостояниеГруппировкиКолонкиЭлемента(НовыйЭлемент,ГруппировкаГруппы); ПолучитьСостояниеРастягиванияЭлементаПоГоризонтали(НовыйЭлемент,РастягиватьГоризонтально); УстановитьСвойстваЭлементу(НовыйЭлемент,СтруктураСвойств); Возврат НовыйЭлемент; КонецФункции // Создание специфического элемента, выпадающий список. // Создается автоматически строковый реквизит с идентичным названием // // Параметры: // Форма - ФормаКлиентскогоПриложения - Форма на которой создаются элементы // ИмяСписка - Строка - Имя элемента на форме // РодительСписка - Строка - достаточно указать название элемента формы // - Элементы - можно в качестве родителя передать элемент формы // Заголовок - Строка - отображаемый заголовок кнопки // МассивЗначений - Массив - массив значений выбора из списка (содержит строковый тип) // РедактированиеТекста - Булево - Редактирование текста, если ЛОЖЬ, то можно выбирать только из списка // СтруктураСвойств - Структура - Содержит значения свойств, где ключ название свойства и значение // СтруктураСобытий - Структура - Содержит значения событий, где ключ название события и в значение название процедуры тип "строка" // ЭлементПеред - Строка - достаточно указать название элемента формы перед которым требуется вставить новый элемент // - Элементы - можно передать элемент формы // Функция СздВыпадающийСписок(Форма, ИмяСписка, РодительСписка, ЗаголовокЭлемента = "", МассивЗначений, РедактированиеТекста = ЛОЖЬ, СтруктураСвойств = Неопределено, СтруктураСобытий = Неопределено, ЭлементПеред = Неопределено ) Экспорт СоздатьРеквизит(Форма,ИмяСписка,ОписаниеТипаСтрока(100)); НовыйРеквизит = Форма[ИмяСписка]; НовыйЭлемент = СздПоле(Форма,ИмяСписка,РодительСписка,ЗаголовокЭлемента,1,ИмяСписка,СтруктураСвойств,СтруктураСобытий,ЭлементПеред); НовыйЭлемент.КнопкаВыпадающегоСписка = ИСТИНА; Для Каждого текЭлемент Из МассивЗначений Цикл НовыйЭлемент.СписокВыбора.Добавить(текЭлемент); КонецЦикла; Если ЗаголовокЭлемента <> "" Тогда НовыйЭлемент.Заголовок = ЗаголовокЭлемента; КонецЕсли; НовыйЭлемент.РедактированиеТекста = РедактированиеТекста; Возврат НовыйЭлемент; КонецФункции // Создание специфического элемента, переключатель // Создается автоматически реквизит с типом число с идентичным названием // // Параметры: // Форма - ФормаКлиентскогоПриложения - Форма на которой создаются элементы // ИмяПереключателя - Строка - Имя элемента на форме // РодительЭлемента - Строка - достаточно указать название элемента формы // - Элементы - можно в качестве родителя передать элемент формы // Заголовок - Строка - отображаемый заголовок кнопки // МассивЗначений - Массив - Массив значений выбора из списка (содержит строковый тип), // Важно отметить, что номер в массиве соответствует номеру в списке выбора переключателя. // тВидПереключателя - Число - Принимает значения: // 1 - Переключатель // 2 - Тумблер // СтруктураСвойств - Структура - Содержит значения свойств, где ключ название свойства и значение // СтруктураСобытий - Структура - Содержит значения событий, где ключ название события и в значение название процедуры тип "строка" // ЭлементПеред - Строка - достаточно указать название элемента формы перед которым требуется вставить новый элемент // - Элементы - можно передать элемент формы // Функция СздПереключатель(Форма, ИмяПереключателя, РодительЭлемента, ЗаголовокЭлемента = "", МассивЗначений, тВидПереключателя, СтруктураСвойств = Неопределено, СтруктураСобытий = Неопределено, ЭлементПеред = Неопределено ) Экспорт СоздатьРеквизит(Форма,ИмяПереключателя,ОписаниеТипаЧисло(10,0)); НовыйРеквизит = Форма[ИмяПереключателя]; НовыйЭлемент = СздПоле(Форма,ИмяПереключателя,РодительЭлемента,ЗаголовокЭлемента,4,ИмяПереключателя,СтруктураСвойств,СтруктураСобытий,ЭлементПеред); Если ЗаголовокЭлемента <> "" Тогда НовыйЭлемент.Заголовок = ЗаголовокЭлемента; КонецЕсли; Если тВидПереключателя <> 0 Тогда НаборВидов = "Переключатель |Тумблер"; ВидПоля = СокрЛП(СтрПолучитьСтроку(НаборВидов,тВидПереключателя)); НовыйЭлемент.ВидПереключателя = ВидПереключателя[ВидПоля]; КонецЕсли; Счетчик = 0; Для Каждого текЭлемент Из МассивЗначений Цикл НовыйЭлемент.СписокВыбора.Добавить(Счетчик,текЭлемент); Счетчик = Счетчик + 1; КонецЦикла; Возврат НовыйЭлемент; КонецФункции // Создание поля гиперссылки // // Параметры: // Форма - ФормаКлиентскогоПриложения - Форма на которой создаются элементы // ИмяПоля - Строка - Имя элемента на форме // РодительПоля - Строка - достаточно указать название элемента формы // - Элементы - можно в качестве родителя передать элемент формы // Заголовок - Строка - заголовок элемента // БезЗаголовка - Булево - по умолчанию заголовок не выводится // ПутьКДанным - Строка - Путь к данным значения // СтруктураСвойств - Структура - Содержит значения свойств, где ключ название свойства и значение // СтруктураСобытий - Структура - Содержит значения событий, где ключ название события и в значение название процедуры тип "строка" // ЭлементПеред - Строка - достаточно указать название элемента формы перед которым требуется вставить новый элемент // - Элементы - можно передать элемент формы // Функция СздПолеГиперссылка(Форма, ИмяПоля, РодительПоля, Заголовок = "", БезЗаголовка = ИСТИНА, ПутьКДанным = "", СтруктураСвойств = Неопределено, СтруктураСобытий = Неопределено, ЭлементПеред = Неопределено) Экспорт ЕслиСтруктураНеопределеноТоНовая(СтруктураСвойств); ЕслиСтруктураНеопределеноТоНовая(СтруктураСобытий); ОпределитьЭлементФормы(Форма,РодительПоля); ОпределитьЭлементФормы(Форма,ЭлементПеред); НовыйЭлемент = СоздатьЭлементФормы(Форма,ИмяПоля,Тип("ПолеФормы"),РодительПоля,ЭлементПеред); НовыйЭлемент.Вид = ВидПоляФормы.ПолеНадписи; НовыйЭлемент.Гиперссылка = ИСТИНА; Если БезЗаголовка Тогда НовыйЭлемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет КонецЕсли; Если Заголовок <> "" Тогда НовыйЭлемент.Заголовок = Заголовок КонецЕсли; Если ПутьКДанным <> "" Тогда НовыйЭлемент.ПутьКДанным = ПутьКДанным КонецЕсли; УстановитьСвойстваЭлементу(НовыйЭлемент,СтруктураСвойств); УстановитьСобытияЭлементу(НовыйЭлемент,СтруктураСобытий); Возврат НовыйЭлемент; КонецФункции // Создание поля Надпись // // Параметры: // Форма - ФормаКлиентскогоПриложения - Форма на которой создаются элементы // ИмяПоля - Строка - Имя элемента на форме // РодительПоля - Строка - достаточно указать название элемента формы // - Элементы - можно в качестве родителя передать элемент формы // Заголовок - Строка - заголовок элемента // БезЗаголовка - Булево - по умолчанию заголовок не выводится // ПутьКДанным - Строка - Путь к данным значения // СтруктураСвойств - Структура - Содержит значения свойств, где ключ название свойства и значение // СтруктураСобытий - Структура - Содержит значения событий, где ключ название события и в значение название процедуры тип "строка" // ЭлементПеред - Строка - достаточно указать название элемента формы перед которым требуется вставить новый элемент // - Элементы - можно передать элемент формы // Функция СздПолеНадписи(Форма, ИмяПоля, РодительПоля, Заголовок = "", БезЗаголовка = ИСТИНА, ПутьКДанным = "", СтруктураСвойств = Неопределено, СтруктураСобытий = Неопределено, ЭлементПеред = Неопределено) Экспорт ЕслиСтруктураНеопределеноТоНовая(СтруктураСвойств); ЕслиСтруктураНеопределеноТоНовая(СтруктураСобытий); ОпределитьЭлементФормы(Форма,РодительПоля); ОпределитьЭлементФормы(Форма,ЭлементПеред); НовыйЭлемент = СоздатьЭлементФормы(Форма,ИмяПоля,Тип("ПолеФормы"),РодительПоля,ЭлементПеред); НовыйЭлемент.Вид = ВидПоляФормы.ПолеНадписи; Если БезЗаголовка Тогда НовыйЭлемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет КонецЕсли; Если Заголовок <> "" Тогда НовыйЭлемент.Заголовок = Заголовок КонецЕсли; Если ПутьКДанным <> "" Тогда НовыйЭлемент.ПутьКДанным = ПутьКДанным КонецЕсли; УстановитьСвойстваЭлементу(НовыйЭлемент,СтруктураСвойств); УстановитьСобытияЭлементу(НовыйЭлемент,СтруктураСобытий); Возврат НовыйЭлемент; КонецФункции #КонецОбласти #Область УдалениеЭлементовИРеквизитов //Удалить реквизиты ранее созданный программно! // //Параметры: // МассивУдаляемыхРеквизитов - Массив - Содержит строковые типы с именами реквизитов, ТОЛЬКО СОЗДАННЫЕ ПРОГРАММНО! Процедура УдлРеквизиты(Форма,МассивУдаляемыхРеквизитов) Экспорт Форма.ИзменитьРеквизиты(,МассивУдаляемыхРеквизитов); КонецПроцедуры //Удалить реквизит ранее созданный программно! // //Параметры: // ИмяРеквизита - Строка - Имя удаляемого реквизита, ТОЛЬКО СОЗДАННЫЕ ПРОГРАММНО! Процедура УдлРеквизит(Форма,ИмяРеквизита) Экспорт МассивУдаляемыхРеквизитов = Новый Массив; МассивУдаляемыхРеквизитов.Добавить(ИмяРеквизита); УдлРеквизиты(Форма,МассивУдаляемыхРеквизитов); КонецПроцедуры //Удалить элементы ранее созданный программно! // //Параметры: // МассивУдаляемыхЭлементов - Массив - Содержит строковые типы с именами удаляемых элементов, ТОЛЬКО СОЗДАННЫЕ ПРОГРАММНО! Процедура УдлЭлементы(Форма,МассивУдаляемыхЭлементов) Экспорт Для Каждого текЭлемент Из МассивУдаляемыхЭлементов Цикл Если Форма.Элементы.Найти(текЭлемент) <> Неопределено Тогда Форма.Элементы.Удалить(Форма.Элементы[текЭлемент]); КонецЕсли; КонецЦикла; КонецПроцедуры //Удалить элемент ранее созданный программно! // //Параметры: // ИмяРеквизита - Строка - Имя удаляемого элемента на форме, ТОЛЬКО СОЗДАННЫЕ ПРОГРАММНО! Процедура УдлЭлемент(Форма,ИмяЭлемента) Экспорт МассивУдаляемыхЭлементов = Новый Массив; МассивУдаляемыхЭлементов.Добавить(ИмяЭлемента); УдлЭлементы(Форма,МассивУдаляемыхЭлементов); КонецПроцедуры //Удалить элемент и реквизит ранее созданный программно! // //Параметры: // ИмяРеквизитаЭлемента - Строка - Имя удаляемого элемента и реквизита на форме СОВПАДАЕТ!!! и ТОЛЬКО СОЗДАННЫЕ ПРОГРАММНО! Процедура УдлРеквизитИЭлемент(Форма,ИмяРеквизитаЭлемента) Экспорт УдлРеквизит(Форма,ИмяРеквизитаЭлемента); УдлЭлемент(Форма,ИмяРеквизитаЭлемента); КонецПроцедуры #КонецОбласти #Область Свойства //Основные свойства поля ввода // // Параметры: //Заголовок - Строка - Заголовок поля на форме //Вид - ВидПоляФормы - Вид поля формы клиентского приложения //ПутьКДанным - Строка - Путь к данным реквизита формы или объекта //ПоложениеЗаголовка - ПоложениеЗаголовкаЭлементаФормы - Определяет положение заголовка относительно поля в макете формы. Следует заметить, что для отключения вывода заголовка следует установить это свойство в значение Нет. //Видимость - Булево - Видимость элемента на форме //Доступность - Булево - Доступность элемента на форме //ТолькоПросмотр - Булево - Только просмотр элемента на форме //ПропускатьПриВводе - Булево - Указывает необходимость пропуска поля при вводе данных // - Неопределено - Авто //АктивизироватьПоУмолчанию - Булево - Если свойство установлено, данный элемент будет активизирован при открытии формы //ВажностьПриОтображении - ВажностьПриОтображении - Указывает важность элемента при отображении (используется для адаптации формы к ширине экрана мобильного устройства) //Маска - Строка - (Поле ввода) Содержит посимвольную строку маски интерактивного ввода текста в поле. //В строке маски допустимо использование следующих специальных символов: //! - любой введенный символ преобразуется в верхний регистр; //9 - допустимо ввести произвольный символ цифры; //# - допустимо ввести произвольный символ цифры или - (знак минус) или + (знак плюс) или пробел; //N - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры); //U - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) и любой введенный символ преобразуется в верхний регистр; //X (латинского алфавита) - допустимо ввести произвольный символ; //^ - недопустимо вводить этот символ интерактивно пользователем, он может устанавливаться только из языка; //h - допустим ввод символов обозначения шестнадцатеричных цифр; //@ - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) в верхнем регистре или пробел. //Если в маске из специальных символов используются только символы "@", то все символы текста, соответствующие символам маски, не являющимся специальными символами, удаляются после последнего непустого блока из символов "@". Например, при маске "@@.@@.@@." текст "41. 2. ." преобразуется в "41.2". //Для того, чтобы использовать в маске один из специальных символов, нужно использовать перед ним символ "\". //Допускается указание нескольких масок в одном параметре. Маски разделяются символом ";". В этом случае использоваться будет та маска, к которой подходит введенный текст. //РежимПароля - Булево - (Поле ввода, поле надписи) Содержит признак специального режима для ввода пароля, в котором все вводимые символы отображаются символом "*" (звездочка). // - Неопределено - Авто //МногострочныйРежим - Булево - Управляет многострочным режимом в поле ввода. //РасширенноеРедактирование - Булево - (Поле ввода) Если свойство установлено в Истина, то включается расширенный режим редактирования, при котором само поле ввода обрабатывает нажатие клавиши TAB (в текст вставляется символ табуляции и переход к следующему полю не происходит), а также доступен поиск по тексту с помощью стандартных действий. //Гиперссылка - Булево - (Поле надписи, поле картинки) можно обработать событие гиперссылки "ОбработкаНавигационнойСсылки" // Функция СтруктураСвойствОсновные(Заголовок = "", Вид = Неопределено, ПутьКДанным = "", ПоложениеЗаголовка = Неопределено, Видимость = Неопределено, Доступность = Неопределено, ТолькоПросмотр = Неопределено, ПропускатьПриВводе = Неопределено, АктивизироватьПоУмолчанию = Неопределено, Маска = "", РежимПароля = Неопределено, МногострочныйРежим = Неопределено, РасширенноеРедактирование = Неопределено, Гиперссылка = Неопределено) Экспорт СтруктураСвойств = Новый Структура; Если Заголовок <> "" Тогда СтруктураСвойств.Вставить("Заголовок",Заголовок) КонецЕсли; Если Вид <> Неопределено Тогда СтруктураСвойств.Вставить("Вид",Вид) КонецЕсли; Если ПутьКДанным <> "" Тогда СтруктураСвойств.Вставить("ПутьКДанным",ПутьКДанным) КонецЕсли; Если ПоложениеЗаголовка <> Неопределено Тогда СтруктураСвойств.Вставить("ПоложениеЗаголовка",ПоложениеЗаголовка) КонецЕсли; Если Видимость <> Неопределено Тогда СтруктураСвойств.Вставить("Видимость",Видимость) КонецЕсли; Если Доступность <> Неопределено Тогда СтруктураСвойств.Вставить("Доступность",Доступность) КонецЕсли; Если ТолькоПросмотр <> Неопределено Тогда СтруктураСвойств.Вставить("ТолькоПросмотр",ТолькоПросмотр) КонецЕсли; Если ПропускатьПриВводе <> Неопределено Тогда СтруктураСвойств.Вставить("ПропускатьПриВводе",ПропускатьПриВводе) КонецЕсли; Если АктивизироватьПоУмолчанию <> Неопределено Тогда СтруктураСвойств.Вставить("АктивизироватьПоУмолчанию",АктивизироватьПоУмолчанию) КонецЕсли; Если Маска <> "" Тогда СтруктураСвойств.Вставить("Маска",Маска) КонецЕсли; Если РежимПароля <> Неопределено Тогда СтруктураСвойств.Вставить("РежимПароля",РежимПароля) КонецЕсли; Если МногострочныйРежим <> Неопределено Тогда СтруктураСвойств.Вставить("МногострочныйРежим",МногострочныйРежим) КонецЕсли; Если РасширенноеРедактирование <> Неопределено Тогда СтруктураСвойств.Вставить("РасширенноеРедактирование",РасширенноеРедактирование) КонецЕсли; Если Гиперссылка <> Неопределено Тогда СтруктураСвойств.Вставить("Гиперссылка",Гиперссылка) КонецЕсли; Возврат СтруктураСвойств; КонецФункции //Свойства Подсказка // // Параметры: // Подсказка - Строка - Текст подсказки // ОтображениеПодсказки - ОтображениеПодсказки - Задает способ отображения подсказки элемента формы // ПодсказкаВвода - Строка - Текст подсказки ввода в поле формы Функция СтруктураСвойствПодсказка(Подсказка = Неопределено, ОтображениеПодсказки = Неопределено, ПодсказкаВвода = Неопределено) Экспорт СтруктураСвойств = Новый Структура; Если Подсказка <> Неопределено Тогда СтруктураСвойств.Вставить("Подсказка",Подсказка) КонецЕсли; Если ОтображениеПодсказки <> Неопределено Тогда СтруктураСвойств.Вставить("ОтображениеПодсказки",ОтображениеПодсказки) КонецЕсли; Если ПодсказкаВвода <> Неопределено Тогда СтруктураСвойств.Вставить("ПодсказкаВвода",ПодсказкаВвода) КонецЕсли; Возврат СтруктураСвойств; КонецФункции //Свойства размеров // // Параметры: // Ширина - Число - Ширина элемента // Высота - Число - Высота элемента // АвтоМаксимальнаяШирина - Булево - Отключение автоматической ширины // МаксимальнаяШирина - Число - Максимальная ширина элемента на форме, работает если АвтоМаксимальнаяШирина - ОТКЛЮЧЕНА // АвтоМаксимальнаяВысота - Булево - Отключение автоматической высоты // МаксимальнаяВысота - Число - Максимальная высота элемента на форме, работает если АвтоМаксимальнаяВысота - ОТКЛЮЧЕНА // РастягиватьПоГоризонтали - Булево - Если требуется принудительно задать автоматическое растягивание по ширине // РастягиватьПоВертикали - Булево - Если требуется принудительно задать автоматическое растягивание по высоте // тГоризонтальноеПоложение - Число - Принимаемые значения: // 1 - Лево // 2 - Центр // 3 - Право // 0 - Авто // тГоризонтальноеПоложениеВШапке - Число - Принимаемые значения: // 1 - Лево // 2 - Центр // 3 - Право // 0 - Авто // тГоризонтальноеПоложениеВПодвале - Число - Принимаемые значения: // 1 - Лево // 2 - Центр // 3 - Право // 0 - Авто // Функция СтруктураСвойствРасположение(Ширина = Неопределено, Высота = Неопределено, АвтоМаксимальнаяШирина = Неопределено, МаксимальнаяШирина = Неопределено, АвтоМаксимальнаяВысота = Неопределено, МаксимальнаяВысота = Неопределено, РастягиватьПоГоризонтали = Неопределено, РастягиватьПоВертикали = Неопределено, тГоризонтальноеПоложение = Неопределено, тГоризонтальноеПоложениеВШапке = Неопределено, тГоризонтальноеПоложениеВПодвале = Неопределено) Экспорт СтруктураСвойств = Новый Структура; Если Ширина <> Неопределено Тогда СтруктураСвойств.Вставить("Ширина",Ширина) КонецЕсли; Если Высота <> Неопределено Тогда СтруктураСвойств.Вставить("Высота",Высота) КонецЕсли; Если АвтоМаксимальнаяШирина <> Неопределено Тогда СтруктураСвойств.Вставить("АвтоМаксимальнаяШирина",АвтоМаксимальнаяШирина) КонецЕсли; Если МаксимальнаяШирина <> Неопределено Тогда СтруктураСвойств.Вставить("МаксимальнаяШирина",МаксимальнаяШирина) КонецЕсли; Если АвтоМаксимальнаяВысота <> Неопределено Тогда СтруктураСвойств.Вставить("АвтоМаксимальнаяВысота",АвтоМаксимальнаяВысота) КонецЕсли; Если МаксимальнаяВысота <> Неопределено Тогда СтруктураСвойств.Вставить("МаксимальнаяВысота",МаксимальнаяВысота) КонецЕсли; Если РастягиватьПоГоризонтали <> Неопределено Тогда СтруктураСвойств.Вставить("РастягиватьПоГоризонтали",РастягиватьПоГоризонтали) КонецЕсли; Если РастягиватьПоВертикали <> Неопределено Тогда СтруктураСвойств.Вставить("РастягиватьПоВертикали",РастягиватьПоВертикали) КонецЕсли; Если тГоризонтальноеПоложение <> Неопределено Тогда СтруктураСвойств.Вставить("ГоризонтальноеПоложение",ПолучитьГоризонтальноеПоложение(тГоризонтальноеПоложение)) КонецЕсли; Если тГоризонтальноеПоложениеВШапке <> Неопределено Тогда СтруктураСвойств.Вставить("ГоризонтальноеПоложениеВШапке",ПолучитьГоризонтальноеПоложение(тГоризонтальноеПоложениеВШапке)) КонецЕсли; Если тГоризонтальноеПоложениеВПодвале <> Неопределено Тогда СтруктураСвойств.Вставить("ГоризонтальноеПоложениеВПодвале",ПолучитьГоризонтальноеПоложение(тГоризонтальноеПоложениеВПодвале)) КонецЕсли; Возврат СтруктураСвойств; КонецФункции //Свойства Таблицы формы // // Параметры: // Отображение - ОтображениеТаблицы - Отображение данных в таблице // РежимВводаСтрок - РежимВводаСтрокТаблицы - Режим ввода строк в таблице // РежимВыделения - РежимВыделенияТаблицы - Определяет режим выделения строк в таблице // РежимВыделенияСтроки - РежимВыделенияСтрокиТаблицы - Определяет режим выделения строки в таблице // Шапка - Булево - Определяет наличие шапки у таблицы // Подвал - Булево - Определяет наличие подвала у таблицы // АвтоВводНовойСтроки - Булево - Содержит признак автоматического ввода новой строки после заполнения текущей // ВысотаВСтрокахТаблицы - Число - Содержит высоту таблицы. Задается в строках. Указывает количество строк, отображаемых в области данных таблицы. Таблица занимает такую высоту, чтобы разместились шапка, подвал и заданное число строк в области данных. Число строк в общем случае не является числом записей данных, отображаемых в таблице, так как одна запись данных может выводиться в несколько строк таблицы. Более того, разные строки данных могут занимать разную высоту Функция СтруктураСвойствТаблицыФормы(Отображение = Неопределено, РежимВводаСтрок = Неопределено, РежимВыделения = Неопределено, РежимВыделенияСтроки = Неопределено, Шапка = Неопределено, Подвал = Неопределено, АвтоВводНовойСтроки = Неопределено, ВысотаВСтрокахТаблицы = Неопределено) Экспорт СтруктураСвойств = Новый Структура; Если Отображение <> Неопределено Тогда СтруктураСвойств.Вставить("Отображение",Отображение) КонецЕсли; Если РежимВводаСтрок <> Неопределено Тогда СтруктураСвойств.Вставить("РежимВводаСтрок",РежимВводаСтрок) КонецЕсли; Если РежимВыделения <> Неопределено Тогда СтруктураСвойств.Вставить("РежимВыделения",РежимВыделения) КонецЕсли; Если РежимВыделенияСтроки <> Неопределено Тогда СтруктураСвойств.Вставить("РежимВыделенияСтроки",РежимВыделенияСтроки) КонецЕсли; Если Шапка <> Неопределено Тогда СтруктураСвойств.Вставить("Шапка",Шапка) КонецЕсли; Если Подвал <> Неопределено Тогда СтруктураСвойств.Вставить("Подвал",Подвал) КонецЕсли; Если АвтоВводНовойСтроки <> Неопределено Тогда СтруктураСвойств.Вставить("АвтоВводНовойСтроки",АвтоВводНовойСтроки) КонецЕсли; Если ВысотаВСтрокахТаблицы <> Неопределено Тогда СтруктураСвойств.Вставить("ВысотаВСтрокахТаблицы",ВысотаВСтрокахТаблицы) КонецЕсли; Возврат СтруктураСвойств; КонецФункции #КонецОбласти #Область СлужебныеПроцедурыИФункции // Функция - Очистить от запрещенных символов // // Параметры: // ПроверяемаяСтрока - Строка - Имя элемента // ДопРазрешенныеСимволы - Строка - Дополнительно разрешенные символы // // Возвращаемое значение: // Строка - Имя элемента очищенное от запрещенных символов // Функция ОчиститьОтЗапрещенныхСимволов(ПроверяемаяСтрока, ДопРазрешенныеСимволы = Неопределено) Если НЕ ЗначениеЗаполнено(ПроверяемаяСтрока) Тогда Возврат ПроверяемаяСтрока; КонецЕсли; ОчищеннаяСтрока = ""; РазрешенныеСимволы = "абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ" + "abcdefghijklmnopqrstuvwxyzQWERTYUIOPASDFGHJKLZXCVBNM" + "0123456789_"; Если ЗначениеЗаполнено(ДопРазрешенныеСимволы) Тогда РазрешенныеСимволы = РазрешенныеСимволы + ДопРазрешенныеСимволы; КонецЕсли; Для Сч = 1 по СтрДлина(СокрЛП(ПроверяемаяСтрока)) Цикл ТекСимв = Сред(ПроверяемаяСтрока, Сч, 1); Если Найти(РазрешенныеСимволы, ТекСимв) > 0 Тогда ОчищеннаяСтрока = ОчищеннаяСтрока + ТекСимв; КонецЕсли; КонецЦикла; Возврат ОчищеннаяСтрока; КонецФункции #КонецОбласти