Advertisement
Guest User

Untitled

a guest
Jul 29th, 2022
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.06 KB | None | 0 0
  1. Процедура ОбновитьОтображениеДинамическихЭлементовНаФорме()
  2.  
  3. ТипНадписи = Тип("Надпись");
  4. ТипПоляВвода = Тип("ПолеВвода");
  5. Сч = 0;
  6. Пока Сч < ЭлементыФормы.Количество() Цикл
  7. Если ТипЗнч(ЭлементыФормы[Сч]) <> ТипНадписи И ТипЗнч(ЭлементыФормы[Сч]) <> ТипПоляВвода Тогда
  8. Сч = Сч + 1;
  9. Продолжить;
  10. КонецЕсли;
  11. Если СтрНайти(ЭлементыФормы[Сч].Имя, "Пункт") <> 0 ИЛИ СтрНайти(ЭлементыФормы[Сч].Имя, "Текст") <> 0 ИЛИ СтрНайти(ЭлементыФормы[Сч].Имя, "Прокладка") <> 0 Тогда
  12. ЭлементыФормы.Удалить(ЭлементыФормы[Сч]);
  13. Сч = Сч - 1;
  14. КонецЕсли;
  15. Сч = Сч + 1;
  16. КонецЦикла;
  17.  
  18. Сч = 0;
  19. Верх = 0;
  20. НужнаяВысотаПанели = ВычислитьНужнуюВысотуПанели();
  21. ИзначальнаяВысотаПанели = ЭлементыФормы.Панель1.Высота;
  22. Для Каждого Строка Из СтруктураШаблона Цикл
  23. Если Верх + 19 * (Строка.ВысотаПоляВвода + 3) >= ИзначальнаяВысотаПанели Тогда
  24. ДобавитьПустыеНадписиДляРасширенияФормы(НужнаяВысотаПанели * 2, ИзначальнаяВысотаПанели);
  25. ДобавитьНадписьНаФорму("Пункт" + Строка.НомерПункта, "Пункт № " + Строка.НомерПункта, Верх);
  26. Верх = Верх + 19;
  27. ДобавитьПолеВводаНаФорму("Текст" + Строка.НомерПункта, Строка, Верх);
  28. НазваниеПоследнегоПоляВводаПанелиВыходящегоЗаЕеПределы = "Текст" + Строка.НомерПункта;
  29. Сч = Сч + 1;
  30. Верх = Верх + (19 * Строка.ВысотаПоляВвода) + 19;
  31. Иначе
  32. ДобавитьНадписьНаФорму("Пункт" + Строка.НомерПункта, "Пункт № " + Строка.НомерПункта, Верх);
  33. Верх = Верх + 19;
  34. ДобавитьПолеВводаНаФорму("Текст" + Строка.НомерПункта, Строка, Верх);
  35. Сч = Сч + 1;
  36. НазваниеПоследнегоПоляВводаПанелиВыходящегоЗаЕеПределы = "Текст" + Строка.НомерПункта;
  37. Верх = Верх + (19 * Строка.ВысотаПоляВвода) + 19;
  38. КонецЕсли;
  39. КонецЦикла;
  40.  
  41. Сч = 0;
  42. Пока Сч < ЭлементыФормы.Количество() Цикл
  43. Если ТипЗнч(ЭлементыФормы[Сч]) <> ТипНадписи Тогда
  44. Сч = Сч + 1;
  45. Продолжить;
  46. КонецЕсли;
  47. Если СтрНайти(ЭлементыФормы[Сч].Имя, "Прокладка") <> 0 Тогда
  48. ЭлементыФормы.Удалить(ЭлементыФормы[Сч]);
  49. Сч = Сч - 1;
  50. КонецЕсли;
  51. Сч = Сч + 1;
  52. КонецЦикла;
  53.  
  54. КонецПроцедуры
  55.  
  56.  
  57. Функция ВычислитьНужнуюВысотуПанели()
  58.  
  59. НужнаяВысота = 0;
  60. Для Каждого Строка Из СтруктураШаблона Цикл
  61. НужнаяВысота = НужнаяВысота + (Строка.ВысотаПоляВвода * 19);
  62. КонецЦикла;
  63. НужнаяВысота = НужнаяВысота + (СтруктураШаблона.Количество()-1)* 19;
  64. Возврат(НужнаяВысота);
  65.  
  66. КонецФункции
  67.  
  68.  
  69. Процедура ДобавитьПустыеНадписиДляРасширенияФормы(НужнаяВысотаПанели, ВысотаПанели)
  70.  
  71. Верх = ВысотаПанели;
  72. Сч = 0;
  73. Пока ВысотаПанели <= НужнаяВысотаПанели Цикл
  74. Если ЭлементыФормы.Найти("Прокладка" + Сч) = Неопределено Тогда
  75. ДобавитьНадписьНаФорму("Прокладка" + Сч,, Верх);
  76. КонецЕсли;
  77. Сч = Сч + 1;
  78. Верх = Верх + 38;
  79. ВысотаПанели = ВысотаПанели + 10;
  80. КонецЦикла;
  81.  
  82. КонецПроцедуры
  83.  
  84.  
  85.  
  86. Процедура ДобавитьНадписьНаФорму(Имя, Заголовок, Верх)
  87.  
  88. НоваяНадпись = ЭлементыФормы.Добавить(Тип("Надпись"), СтрЗаменить(Имя,".","_"), Истина, ЭлементыФормы.Панель1);
  89. НоваяНадпись.Лево = 10;
  90. НоваяНадпись.Верх = Верх;
  91. НоваяНадпись.Ширина = 100;
  92. НоваяНадпись.Высота = 19;
  93. НоваяНадпись.Заголовок = Заголовок;
  94.  
  95. КонецПроцедуры
  96.  
  97. Процедура ДобавитьПолеВводаНаФорму(Имя, Строка, Верх)
  98.  
  99. НовоеПолеВвода = ЭлементыФормы.Добавить(Тип("ПолеВвода"), СтрЗаменить(Имя,".","_"), Истина, ЭлементыФормы.Панель1);
  100. НовоеПолеВвода.Лево = 10;
  101. НовоеПолеВвода.Верх = Верх;
  102. Если Ссылка.Типовой = Истина Тогда
  103. НовоеПолеВвода.Ширина = ЭлементыФормы.Панель1.Ширина - 60;
  104. Иначе
  105. НовоеПолеВвода.Ширина = ЭлементыФормы.Панель1.Ширина - 430;
  106. КонецЕсли;
  107. НовоеПолеВвода.МногострочныйРежим = Истина;
  108. НовоеПолеВвода.АвтоПереносСтрок = Истина;
  109. НовоеПолеВвода.Высота = 19 * Строка.ВысотаПоляВвода;
  110. НовоеПолеВвода.Значение = Строка.Содержание;
  111. НовоеПолеВвода.ИзменяетДанные = Истина;
  112. НовоеПолеВвода.УстановитьДействие("ПриИзменении", Новый Действие("ВыполнитьДействиеПриИзмененииДанных"));
  113.  
  114. КонецПроцедуры
  115.  
  116.  
  117.  
  118. Процедура ВыполнитьДействиеПриИзмененииДанных(Элемент)
  119.  
  120. НомерПунктаВИмени = СтрЗаменить(СтрЗаменить(Элемент.Имя, "Текст", ""), "_", ".");
  121. НужнаяСтрока = СтруктураШаблона.Найти(НомерПунктаВИмени, "НомерПункта");
  122. НужнаяСтрока.Содержание = Элемент.Значение;
  123.  
  124. КонецПроцедуры
  125.  
  126.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement