Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Процедура ОбновитьОтображениеДинамическихЭлементовНаФорме()
- ТипНадписи = Тип("Надпись");
- ТипПоляВвода = Тип("ПолеВвода");
- Сч = 0;
- Пока Сч < ЭлементыФормы.Количество() Цикл
- Если ТипЗнч(ЭлементыФормы[Сч]) <> ТипНадписи И ТипЗнч(ЭлементыФормы[Сч]) <> ТипПоляВвода Тогда
- Сч = Сч + 1;
- Продолжить;
- КонецЕсли;
- Если СтрНайти(ЭлементыФормы[Сч].Имя, "Пункт") <> 0 ИЛИ СтрНайти(ЭлементыФормы[Сч].Имя, "Текст") <> 0 ИЛИ СтрНайти(ЭлементыФормы[Сч].Имя, "Прокладка") <> 0 Тогда
- ЭлементыФормы.Удалить(ЭлементыФормы[Сч]);
- Сч = Сч - 1;
- КонецЕсли;
- Сч = Сч + 1;
- КонецЦикла;
- Сч = 0;
- Верх = 0;
- НужнаяВысотаПанели = ВычислитьНужнуюВысотуПанели();
- ИзначальнаяВысотаПанели = ЭлементыФормы.Панель1.Высота;
- Для Каждого Строка Из СтруктураШаблона Цикл
- Если Верх + 19 * (Строка.ВысотаПоляВвода + 3) >= ИзначальнаяВысотаПанели Тогда
- ДобавитьПустыеНадписиДляРасширенияФормы(НужнаяВысотаПанели * 2, ИзначальнаяВысотаПанели);
- ДобавитьНадписьНаФорму("Пункт" + Строка.НомерПункта, "Пункт № " + Строка.НомерПункта, Верх);
- Верх = Верх + 19;
- ДобавитьПолеВводаНаФорму("Текст" + Строка.НомерПункта, Строка, Верх);
- НазваниеПоследнегоПоляВводаПанелиВыходящегоЗаЕеПределы = "Текст" + Строка.НомерПункта;
- Сч = Сч + 1;
- Верх = Верх + (19 * Строка.ВысотаПоляВвода) + 19;
- Иначе
- ДобавитьНадписьНаФорму("Пункт" + Строка.НомерПункта, "Пункт № " + Строка.НомерПункта, Верх);
- Верх = Верх + 19;
- ДобавитьПолеВводаНаФорму("Текст" + Строка.НомерПункта, Строка, Верх);
- Сч = Сч + 1;
- НазваниеПоследнегоПоляВводаПанелиВыходящегоЗаЕеПределы = "Текст" + Строка.НомерПункта;
- Верх = Верх + (19 * Строка.ВысотаПоляВвода) + 19;
- КонецЕсли;
- КонецЦикла;
- Сч = 0;
- Пока Сч < ЭлементыФормы.Количество() Цикл
- Если ТипЗнч(ЭлементыФормы[Сч]) <> ТипНадписи Тогда
- Сч = Сч + 1;
- Продолжить;
- КонецЕсли;
- Если СтрНайти(ЭлементыФормы[Сч].Имя, "Прокладка") <> 0 Тогда
- ЭлементыФормы.Удалить(ЭлементыФормы[Сч]);
- Сч = Сч - 1;
- КонецЕсли;
- Сч = Сч + 1;
- КонецЦикла;
- КонецПроцедуры
- Функция ВычислитьНужнуюВысотуПанели()
- НужнаяВысота = 0;
- Для Каждого Строка Из СтруктураШаблона Цикл
- НужнаяВысота = НужнаяВысота + (Строка.ВысотаПоляВвода * 19);
- КонецЦикла;
- НужнаяВысота = НужнаяВысота + (СтруктураШаблона.Количество()-1)* 19;
- Возврат(НужнаяВысота);
- КонецФункции
- Процедура ДобавитьПустыеНадписиДляРасширенияФормы(НужнаяВысотаПанели, ВысотаПанели)
- Верх = ВысотаПанели;
- Сч = 0;
- Пока ВысотаПанели <= НужнаяВысотаПанели Цикл
- Если ЭлементыФормы.Найти("Прокладка" + Сч) = Неопределено Тогда
- ДобавитьНадписьНаФорму("Прокладка" + Сч,, Верх);
- КонецЕсли;
- Сч = Сч + 1;
- Верх = Верх + 38;
- ВысотаПанели = ВысотаПанели + 10;
- КонецЦикла;
- КонецПроцедуры
- Процедура ДобавитьНадписьНаФорму(Имя, Заголовок, Верх)
- НоваяНадпись = ЭлементыФормы.Добавить(Тип("Надпись"), СтрЗаменить(Имя,".","_"), Истина, ЭлементыФормы.Панель1);
- НоваяНадпись.Лево = 10;
- НоваяНадпись.Верх = Верх;
- НоваяНадпись.Ширина = 100;
- НоваяНадпись.Высота = 19;
- НоваяНадпись.Заголовок = Заголовок;
- КонецПроцедуры
- Процедура ДобавитьПолеВводаНаФорму(Имя, Строка, Верх)
- НовоеПолеВвода = ЭлементыФормы.Добавить(Тип("ПолеВвода"), СтрЗаменить(Имя,".","_"), Истина, ЭлементыФормы.Панель1);
- НовоеПолеВвода.Лево = 10;
- НовоеПолеВвода.Верх = Верх;
- Если Ссылка.Типовой = Истина Тогда
- НовоеПолеВвода.Ширина = ЭлементыФормы.Панель1.Ширина - 60;
- Иначе
- НовоеПолеВвода.Ширина = ЭлементыФормы.Панель1.Ширина - 430;
- КонецЕсли;
- НовоеПолеВвода.МногострочныйРежим = Истина;
- НовоеПолеВвода.АвтоПереносСтрок = Истина;
- НовоеПолеВвода.Высота = 19 * Строка.ВысотаПоляВвода;
- НовоеПолеВвода.Значение = Строка.Содержание;
- НовоеПолеВвода.ИзменяетДанные = Истина;
- НовоеПолеВвода.УстановитьДействие("ПриИзменении", Новый Действие("ВыполнитьДействиеПриИзмененииДанных"));
- КонецПроцедуры
- Процедура ВыполнитьДействиеПриИзмененииДанных(Элемент)
- НомерПунктаВИмени = СтрЗаменить(СтрЗаменить(Элемент.Имя, "Текст", ""), "_", ".");
- НужнаяСтрока = СтруктураШаблона.Найти(НомерПунктаВИмени, "НомерПункта");
- НужнаяСтрока.Содержание = Элемент.Значение;
- КонецПроцедуры
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement