При разработке решений возникает необходимость добавить реквизит формы, состав и типы которых зависят от данных. Например при построении динамических деревьев с периодами, или при выводе контактной информации и т.д.
Содержание
- Задача
- Добавление реквизитов
- Удаление реквизитов
- Добавление реквизита табличной части
- Добавление реквизита с типом Произвольный
Задача
Для наглядности разберем простой пример, в котором можно было обойтись только элементами формы, но мы создадим и реквизиты.
Есть некая конфигурация, в форме элемента справочника Номенклатура необходимо программно создавать реквизиты формы и элементы к ним:
- ЯчейкаХранения, тип СправочникСсылка.ЯчейкиХранения;
- ТекущийОстаток, тип Число.
Элементы объединить в группу с горизонтальной группировкой. На текущий момент форма имеет следующий вид:
Добавление реквизитов
В обработчике формы ПриСозданииНаСервере() опишем код, который разбивается на 3 этапа:
- Описание и создание реквизитов формы;
- Создание элементов формы, объединение в группу без отображения;
- Заполнение данных.
Ниже приведен готовый код, код снабжен комментариями и разбит на области для лучшего понимания
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) #Область ДобавлениеРеквизитовФормы // Массив для новых реквизитов ДобавляемыеРеквизиты = Новый Массив; // Опишем ревизиты формы Реквизит_ЯчейкаХранения = Новый РеквизитФормы("ЯчейкаХранения", Новый ОписаниеТипов("СправочникСсылка.ЯчейкиХранения"), , "Ячейка"); Реквизит_ТекущийОстаток = Новый РеквизитФормы("ТекущийОстаток", Новый ОписаниеТипов("Число", , , Новый КвалификаторыЧисла(10, 3)), , "Остаток"); // Для наглядности заполним массив после описания реквизитов формы ДобавляемыеРеквизиты.Добавить(Реквизит_ЯчейкаХранения); ДобавляемыеРеквизиты.Добавить(Реквизит_ТекущийОстаток); // Добавим новые реквизиты в форму ИзменитьРеквизиты(ДобавляемыеРеквизиты); #КонецОбласти #Область ДобавлениеЭлементовФормы // Горизонтальная группа без отображения на форме ГруппаФормы = Элементы.Добавить("Группа_СправочныеДанные", Тип("ГруппаФормы")); ГруппаФормы.Вид = ВидГруппыФормы.ОбычнаяГруппа; ГруппаФормы.Отображение = ОтображениеОбычнойГруппы.Нет; ГруппаФормы.ОтображатьЗаголовок = Ложь; ГруппаФормы.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная; // Элементы НовыйЭлемент = Элементы.Добавить("ЯчейкаХранения", Тип("ПолеФормы"), ГруппаФормы); НовыйЭлемент.ПутьКДанным = "ЯчейкаХранения"; НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.ТолькоПросмотр = Истина; НовыйЭлемент = Элементы.Добавить("ТекущийОстаток", Тип("ПолеФормы"), ГруппаФормы); НовыйЭлемент.ПутьКДанным = "ТекущийОстаток"; НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.ТолькоПросмотр = Истина; #КонецОбласти #Область ЗаполнениеДанных // Имитируем заполнение данных ЭтаФорма.ЯчейкаХранения = ПредопределенноеЗначение("Справочник.ЯчейкиХранения.Распаковка"); ЭтаФорма.ТекущийОстаток = 12; #КонецОбласти КонецПроцедуры
После выполнения приведенного кода форма будет выглядеть так:
Удаление реквизитов
Для удаления необходимо передать массив содержащий пути реквизитов в качестве второго параметра метода формы ИзменитьРеквизиты().
#Область УдалениеРеквизитовФормы // Массив удаляемых реквизитов УдаляемыеРеквизиты = Новый Массив; УдаляемыеРеквизиты.Добавить("ЯчейкаХранения"); УдаляемыеРеквизиты.Добавить("ТекущийОстаток"); // Удалим реквизиты формы ИзменитьРеквизиты( , УдаляемыеРеквизиты); #КонецОбласти
Внимание!!! Удалять можно только реквизиты созданные программно.
Добавление реквизита табличной части
Добавление реквизита и элемента формы для табличной части почти ничем не отличается, необходимо только указать путь «Объект.<ИмяТабличнойЧасти>». Ниже пример добавления реквизита Ячейка в ТЧ Комплектация.
#Область ДобавлениеРеквизитаТЧ // Массив для новых реквизитов ДобавляемыеРеквизиты = Новый Массив; // Опишем ревизиты формы Реквизит_Ячейка = Новый РеквизитФормы("Ячейка", Новый ОписаниеТипов("СправочникСсылка.ЯчейкиХранения"), "Объект.Комплектация", "Ячейка"); // Для наглядности заполним массив после описания реквизитов формы ДобавляемыеРеквизиты.Добавить(Реквизит_Ячейка); // Добавим новые реквизиты в форму ИзменитьРеквизиты(ДобавляемыеРеквизиты); НовыйЭлемент = Элементы.Добавить("КомплектацияЯчейка", Тип("ПолеФормы"), Элементы.Комплектация); НовыйЭлемент.ПутьКДанным = "Объект.Комплектация.Ячейка"; НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; #КонецОбласти
Добавление реквизита с типом Произвольный
В одной из задач стало необходимо добавить реквизит с типом Произвольный, но ни СП, ни интернеты ответа не дали. В итоге через несколько попыток было найдено решение
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Реквизит", Новый ОписаниеТипов("")));
Внимание!!! Данные добавленного реквизита сохраняться в ИБ не будут.
Как программно добавить на УФ реквизита с типом Структура?
↓ [XLife, |
Я |
13.03.14 — 10:31
Вроде можно создать (в конфигураторе) сначала поле с типом Произвольный и потом присвоить туда Структуру. Только как программно создать такой реквизит? Что передать в Новый ОписаниеТипов?
1 — 13.03.14 — 10:32
Не понимаю кстати почему ТЗ,СЗ можно создавать, а Структуру нет.
2 — 13.03.14 — 10:33
чем тз не нравится?
3 — 13.03.14 — 10:35
(0) и как она должна выглядеть на форме?
4 — 13.03.14 — 10:35
А зачем создавать программно реквизит?
чем не устраивает переменная формы?
5 — 13.03.14 — 10:36
(2) я не спрашиваю про обходные варианты.
(3) але, гараж? я написал, что мне ее отображать на форме надо?
6 — 13.03.14 — 10:36
вот ведь, я и не знал, что можно реквизиты формы программно создавать
7 — 13.03.14 — 10:37
(4) какая еще переменная формы. але, вы с какой планеты?
8 — 13.03.14 — 10:38
(7) сам але… у тебя тема как называется?
9 — 13.03.14 — 10:41
(8) это что — конкурс тупых вопросов что ли?
я конкретный вопрос задал вроде.
10 — 13.03.14 — 10:43
(9) ты пока лидируешь…
еще раз спрошу: что ты написал в названии темы?
11 — 13.03.14 — 10:44
ЗначенияПоУмолчаниюТЧ = Новый РеквизитФормы(«ЗначенияПоУмолчаниюТЧ»,Новый ОписаниеТипов(«Произвольный»),»»,»ЗначенияПоУмолчаниюТЧ»,Ложь);
ЭтаФорма.ЗначенияПоУмолчаниюТЧ = Новый Структура;
вместо Произволный что написать?
12 — 13.03.14 — 10:44
(10) ты если в УФ не рубишь, зачем лезешь. в названии темы и в сообщении написано все корректно.
13 — 13.03.14 — 10:47
(12) я смотрю у тебя рубильник на полную пашет… http://www.forum.mista.ru/index.php?user_id=2399
14 — 13.03.14 — 10:48
(11) имхо не взлетит, т.к. интерактивно тоже не дает создавать с типом Структура
15 — 13.03.14 — 10:48
проще создать ключевой параметр формы. В предлагаемых типах все будет видно что и как.
а путь тс — выбор извращенца конеш
16 — 13.03.14 — 10:50
(14) интерактивно, я написал как можно сделать. сначала создаем Произвольный, потом пихаем туда Структуру.
(15) ты это зачем написал?
17 — 13.03.14 — 10:52
(13) ты сюда зачем залез? свои темы почитай — если тебе нечем заняться, изучай новости.
18 — 13.03.14 — 10:54
предлагаю оставить гения в гордом одиночестве, пока
19 — 13.03.14 — 10:55
(16) а если просто Новый ОписаниеТипов()??
Модератор
20 — 13.03.14 — 10:56
Мир, Дружба, Жвачка!
21 — 13.03.14 — 10:58
(19) это была последняя мысль, передем тем как написать на форум
проверил — работает.
спасибо.
22 — 13.03.14 — 11:01
(21) ты бы сразу просто написал, что тебе произвольное описаниеТипов, ответ был бы пораньше
toypaul
23 — 13.03.14 — 11:03
(22) в сообщении ровно это и написано.
Посмотрим, как можно программно добавить реквизиты и новые элементы на форму. В форме элемента справочника «Номенклатура» создадим два реквизита формы и элементы для них. Новые элементы объединим в группу с горизонтальной группировкой.
Сейчас форма имеет следующий вид:
После добавления новых элементов она будет иметь вид:
Итак, добавляем реквизиты:
ЕдиницаИзмерения
, типСправочникСсылка.ЕдиницыИзмерения
;ТекущийОстаток
, типЧисло
.
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) #Область ДобавлениеРеквизитовФормы // Массив для новых реквизитов ДобавляемыеРеквизиты = Новый Массив(); // Описываем новые ревизиты формы РеквизитЕдиницаИзмерения = Новый РеквизитФормы( "ЕдиницаИзмерения", Новый ОписаниеТипов("СправочникСсылка.ЕдиницыИзмерения"), , "Единица измерения" ); РеквизитТекущийОстаток = Новый РеквизитФормы( "ТекущийОстаток", Новый ОписаниеТипов("Число", , , Новый КвалификаторыЧисла(10, 3)), , "Текущий остаток" ); // Заполняем массив новых реквизитов ДобавляемыеРеквизиты.Добавить(РеквизитЕдиницаИзмерения); ДобавляемыеРеквизиты.Добавить(РеквизитТекущийОстаток); // Добавляем новые реквизиты в форму ИзменитьРеквизиты(ДобавляемыеРеквизиты); #КонецОбласти #Область ДобавлениеЭлементовФормы // Добавляем группу без отображения на форме НоваяГруппаФормы = Элементы.Добавить( "ЕдиницаИзмеренияОстаток", Тип("ГруппаФормы") ); НоваяГруппаФормы.Вид = ВидГруппыФормы.ОбычнаяГруппа; НоваяГруппаФормы.Отображение = ОтображениеОбычнойГруппы.Нет; НоваяГруппаФормы.ОтображатьЗаголовок = Ложь; НоваяГруппаФормы.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная; // Добавляем элементы внутрь новой группы НовыйЭлемент = Элементы.Добавить( "ЯчейкаХранения", Тип("ПолеФормы"), НоваяГруппаФормы ); НовыйЭлемент.ПутьКДанным = "ЕдиницаИзмерения"; НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.ТолькоПросмотр = Истина; НовыйЭлемент = Элементы.Добавить( "ТекущийОстаток", Тип("ПолеФормы"), НоваяГруппаФормы ); НовыйЭлемент.ПутьКДанным = "ТекущийОстаток"; НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.ТолькоПросмотр = Истина; #КонецОбласти #Область ЗаполнениеДанных // Имитируем заполнение данных ЭтаФорма.ЕдиницаИзмерения = ПредопределенноеЗначение( "Справочник.ЕдиницыИзмерения.Штука" ); ЭтаФорма.ТекущийОстаток = 12; #КонецОбласти КонецПроцедуры
Для удаления необходимо передать массив реквизитов на удаление в качестве второго параметра метода формы ИзменитьРеквизиты()
. Удалять можно только реквизиты, созданные программно.
Теперь посмотрим, как можно изменить основной реквизит формы. Изменим табличную часть Состав
документа РасходнаяНакладная
:
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // Массив для новых реквизитов ДобавляемыеРеквизиты = Новый Массив(); // Описываем новый ревизит формы РеквизитЕдиницаИзмерения = Новый РеквизитФормы( "ЕдиницаИзмерения", Новый ОписаниеТипов("СправочникСсылка.ЕдиницыИзмерения"), "Объект.Состав", "Единица измерения" ); // Заполняем массив новых реквизитов ДобавляемыеРеквизиты.Добавить(РеквизитЕдиницаИзмерения); // Добавляем новый реквизит в форму ИзменитьРеквизиты(ДобавляемыеРеквизиты); // Добавляем элемент формы для нового реквизита НовыйЭлемент = Элементы.Добавить( "ЕдиницаИзмерения", Тип("ПолеФормы"), Элементы.Состав ); НовыйЭлемент.ПутьКДанным = "Объект.Состав.ЕдиницаИзмерения"; НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; КонецПроцедуры
Важно понимать, что данные добавленного реквизита сохраняться в ИБ не будут.
Поиск:
1С:Предприятие • Изменить реквизиты • При создании на сервере • Реквизит • Управляемая форма • Элемент формы
В данной статье описаны примеры программного создания объектов управляемой формы 1С : элементов, команд, реквизитов, а также описание стандартных возможностей для работы с ними.
Contents
- 1 Введение в управляемая форма 1С реквизиты элементы команды
- 2 Программное переопределение обработчиков событий формы и элементов формы
- 3 Программное создание групп формы.
- 4 Программное добавление команды на форму.
- 5 Программное создание декораций форм.
- 6 Программное добавление реквизита на форму.
- 7 Вывод реквизитов на форму.
- 8 Вызов процедур при создании на сервере 1С
- 9 Некоторые советы при программном редактировании формы
- 10 Полезные ссылки
Рекомендуется модифицировать управляемые формы типового решения 1С программно для удобного будущего обновления и исключения конфликтов, а также для удобной работы с изменениями и надежности при использовании механизма расширений.
В некоторых типовых конфигурациях 1С (ЕРП 2, УТ 11) используется механизм упрощенного изменения конфигурации. Статьи о типовом механизме можно найти в разделе полезных ссылок. Данный механизм используется в БСП, и его необходимо знать при модификации типовых конфигураций.
При добавлении элементов на форму программно можно отредактировать практически любое свойство из панель свойств, которое можно установить вручную в конфигураторе.
Также все описанные в текущем разделе процедуры и функции находятся во внешней обработке УпрФормы.
Примеры работы с объектом «ДанныеФормыКоллекция» и созданием дин. списка и таблицы значений программно можно будет посмотреть в части 2.
Для запуска обработки в режиме предприятия необходимо наличие объектов «Справочники.Номенклатура», подчиненный ему «Справочники.ХарактеристикиНоменклатуры» и «РегистрыСведений.ЦеныНоменклатуры”.
Программное переопределение обработчиков событий формы и элементов формы
Переопределить обработчики событий формы можно в обработчике «ПриСозданииНаСервере» (кроме самого обрабочика «ПриСозданииНаСервере») или в теле модуля формы в контексте сервера (например, Переопределение событий ПриЧтениинаСервере и ПриСозданииНаСервере).
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ЭтаФорма.УстановитьДействие(“ОбработкаВыбора”, “пр_ОбработкаВыбора”) КонецПроцедуры
В теле модуля формы:
#Если Сервер Тогда ЭтаФорма.УстановитьДействие("ПриСозданииНаСервере", "пр_ПриСозданииНаСервере"); #КонецЕсли
А в новой процедуре нужно добавить вызов основной, если такая процедура есть.
&НаСервере Процедура пр_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ПриСозданииНаСервере(Отказ, СтандартнаяОбработка); КонецПроцедуры
Аналогично можно поступить и с обработчиками элементов формы:
Элементы.Номенклатура.УстановитьДействие(“ПриИзменении”, “пр_НоменклатураПриИзменении”)
Программное создание групп формы.
&НаСервере Процедура пр_СоздатьГруппы() ГруппаСтраницы = Элементы.Добавить("пр_Страницы", Тип("ГруппаФормы"),ЭтаФорма); ГруппаСтраницы.Вид = ВидГруппыФормы.Страницы; НоваяСтраница = Элементы.Добавить("пр_Страница", Тип("ГруппаФормы"),ГруппаСтраницы); НоваяСтраница.Вид = ВидГруппыФормы.Страница; НоваяСтраница.Заголовок = "Страница 1"; НоваяГруппа = Элементы.Добавить("пр_Группа1", Тип("ГруппаФормы"),НоваяСтраница); НоваяГруппа.Вид = ВидГруппыФормы.ОбычнаяГруппа; НоваяГруппа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяЕслиВозможно; НоваяГруппа.Заголовок = "Группа 1"; КонецПроцедуры
Доступные виды групп формы:
Программное добавление команды на форму.
Удалить команду можно при помощи метода коллекции формы команд: Команды.Удалить(<Команда>). Удалять можно только те команды, которые были созданы программно.
&НаСервере Процедура пр_СоздатьНовуюКоманду() //создать новую команду у формы НоваяКоманда = Команды.Добавить("пр_Команда1"); НоваяКоманда.Действие = "пр_Команда1"; НоваяКоманда.Картинка = БиблиотекаКартинок.Облако; НоваяКоманда.Отображение = ОтображениеКнопки.Картинка; //вывести команду в элементы ЭлементКоманда = Элементы.Добавить("пр_Команда1", Тип("КнопкаФормы"), Элементы.ФормаКоманднаяПанель); ЭлементКоманда.Заголовок = "Вывести сообщение"; ЭлементКоманда.ИмяКоманды = "пр_Команда1"; //удалить команду //Команды.Удалить(НоваяКоманда); КонецПроцедуры &НаКлиенте Процедура пр_Команда1(Команда) Сообщить("Команда выполнена."); КонецПроцедуры
Программное создание декораций форм.
&НаСервере Процедура пр_СоздатьДекорацию() //добавить надпись Элемент = Элементы.Добавить("Надпись1", Тип("ДекорацияФормы"), Элементы["пр_Группа1"]); Элемент.Вид = ВидДекорацииФормы.Надпись; Элемент.Заголовок = "Добавленная надпись"; //для того, чтобы добавить картинку, необходимо выбрать ВидДекорацииФормы.Картинка Элемент = Элементы.Добавить("Картинка1", Тип("ДекорацияФормы"), Элементы["пр_Группа1"]); Элемент.Вид = ВидДекорацииФормы.Картинка; Элемент.Картинка = БиблиотекаКартинок.Бесконечность; КонецПроцедуры
Программное добавление реквизита на форму.
Добавлять новые реквизиты в управляемую форму и удалять необходимо с помощью метода ИзменитьРеквизиты(), куда в параметры передается массив добавляемых реквизитов и массив удаляемых. Удалять при этом можно только те реквизиты, которые были созданы программно.
&НаСервере Процедура пр_СоздатьРеквизиты() // Массив для новых реквизитов ДобавляемыеРеквизиты = Новый Массив; // Опишем ревизиты формы Реквизит_Использование = Новый РеквизитФормы("пр_Использование", Новый ОписаниеТипов("Булево"), "", "Использование"); Реквизит_Номенклатура = Новый РеквизитФормы("пр_Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"), "", "Номенклатура"); Реквизит_Характеристика = Новый РеквизитФормы("пр_Характеристика", Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"), "", "Характеристика"); Реквизит_Количество = Новый РеквизитФормы("пр_Количество", Новый ОписаниеТипов("Число", , , Новый КвалификаторыЧисла(10, 3)), "", "Количество"); Реквизит_УдалитьКоличество = Новый РеквизитФормы("пр_УдалитьКоличество", Новый ОписаниеТипов("Число", , , Новый КвалификаторыЧисла(10, 3)), "", "Удалить_Количество"); //если используется БСП, то можно для определения описания типов использовать функцию //ОбщегоНазначения.ОписаниеТипаСтрока(ДлинаСтроки) //ОбщегоНазначения.ОписаниеТипаЧисло(Разрядность, РазрядностьДробнойЧасти = 0, ЗнакЧисла = Неопределено) //ОбщегоНазначения.ОписаниеТипаДата(ЧастиДаты) Реквизит_Информация = Новый РеквизитФормы("пр_Информация", ОбщегоНазначения.ОписаниеТипаСтрока(100), "", "Информация"); // Для наглядности заполним массив после описания реквизитов формы ДобавляемыеРеквизиты.Добавить(Реквизит_Использование); ДобавляемыеРеквизиты.Добавить(Реквизит_Номенклатура); ДобавляемыеРеквизиты.Добавить(Реквизит_Характеристика); ДобавляемыеРеквизиты.Добавить(Реквизит_Количество); ДобавляемыеРеквизиты.Добавить(Реквизит_УдалитьКоличество); ДобавляемыеРеквизиты.Добавить(Реквизит_Информация); // Добавим новые реквизиты в форму ИзменитьРеквизиты(ДобавляемыеРеквизиты); КонецПроцедуры &НаСервере Процедура пр_УдалитьРеквизиты() // Массив для удаляемых реквизитов УдаляемыеРеквизиты = Новый Массив; //указываем путь к удаляемому реквизиту УдаляемыеРеквизиты.Добавить("пр_УдалитьКоличество"); //К добавленным реквизитам нужно обращаться через переменную ЭтаФорма // Добавим новые реквизиты в форму ИзменитьРеквизиты(,УдаляемыеРеквизиты); КонецПроцедуры
Вывод реквизитов на форму.
&НаСервере Процедура пр_ВывестиРеквизитыНаФорму() НовыйЭлемент = Элементы.Добавить("пр_Использование", Тип("ПолеФормы"), Элементы.пр_Страница1); НовыйЭлемент.ПутьКДанным = "пр_Использование"; НовыйЭлемент.Вид = ВидПоляФормы.ПолеФлажка; НовыйЭлемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Право; //установим обработчик события элементы НовыйЭлемент.УстановитьДействие("ПриИзменении", "пр_ИспользованиеПриИзменении"); НовыйЭлемент = Элементы.Добавить("пр_Номенклатура", Тип("ПолеФормы"), Элементы.пр_Страница1); НовыйЭлемент.ПутьКДанным = "пр_Номенклатура"; НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; //установить параметр выбора элемента НовыйМассив = Новый Массив(); НовыйПараметр = Новый ПараметрВыбора("Отбор.ПометкаУдаления", Ложь); НовыйМассив.Добавить(НовыйПараметр); НовыеПараметры = Новый ФиксированныйМассив(НовыйМассив); НовыйЭлемент.ПараметрыВыбора = НовыеПараметры; НовыйЭлемент.УстановитьДействие("ПриИзменении", "пр_НоменклатураПриИзменении"); НовыйЭлемент = Элементы.Добавить("пр_Характеристика", Тип("ПолеФормы"), Элементы.пр_Страница1); НовыйЭлемент.ПутьКДанным = "пр_Характеристика"; НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.Заголовок = "Характеристика номенклатуры"; //добавить связь параметров выбора по реквизиту владелец в зависимости от выбранной номенклатуры НоваяСвязь = Новый СвязьПараметраВыбора("Отбор.Владелец", "пр_Номенклатура"); НовыйМассив = Новый Массив(); НовыйМассив.Добавить(НоваяСвязь); НовыйЭлемент.СвязиПараметровВыбора = Новый ФиксированныйМассив(НовыйМассив); НовыйЭлемент.УстановитьДействие("ПриИзменении", "пр_ХарактеристикаПриИзменении"); НовыйЭлемент = Элементы.Добавить("пр_Количество", Тип("ПолеФормы"), Элементы.пр_Страница1); НовыйЭлемент.ПутьКДанным = "пр_Количество"; НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; //установить формат НовыйЭлемент.ФорматРедактирования = "ЧДЦ=0; ЧРГ=.; ЧН=Отсутствует"; НовыйЭлемент = Элементы.Добавить("пр_Информация", Тип("ПолеФормы"), Элементы.пр_Страница1); НовыйЭлемент.ПутьКДанным = "пр_Информация"; НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; //установить список выбора НовыйЭлемент.РежимВыбораИзСписка = Истина; Массив = Новый Массив; Массив.Добавить("Необходимо дозаказать"); Массив.Добавить("Достаточно"); Массив.Добавить("Оформить полный заказ"); НовыйЭлемент.СписокВыбора.ЗагрузитьЗначения(Массив); КонецПроцедуры &НаКлиенте Процедура пр_ИспользованиеПриИзменении(Элемент) КонецПроцедуры
Вызов процедур при создании на сервере 1С
После описания всех процедур выводим их в процедуре ПриСозданииНаСервере. Также можно изменить программно некоторые свойства формы, например, заголовок. Чтобы был виден только наш заголовок, нужно отключить свойство Автозаголовок.
&НаСервере &НаСервере Процедура пр_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) //установим заголовок формы ЭтаФорма.Заголовок = "Шаблон для программной работы с реквизитами, командами и элементами формы"; ЭтаФорма.АвтоЗаголовок = Ложь; пр_СоздатьГруппы(); пр_СоздатьНовуюКоманду(); пр_СоздатьДекорацию(); пр_СоздатьРеквизиты(); пр_УдалитьРеквизиты(); пр_ВывестиРеквизитыНаФорму(); КонецПроцедуры
Некоторые советы при программном редактировании формы
- Если вы не используете префиксы при создании новых команд и элементов рекомендуется проверять существование создаваемых объектов по имени с помощью метода Найти(), который вернет Неопределено, если объект в коллекции не найден:
- Элементы.Найти(«пр_Владелец»);
- Команды.Найти(«пр_НоваяКоманда»);
- Чтобы проверить уникальность реквизита на форме можно воспользоваться следующей функцией:
&НаКлиентеНаСервереБезКонтекста // Функция определяет существует ли реквизит у объекта. // Функция ЕстьРеквизитОбъекта(мОбъект, ИмяРеквизита) КлючУникальности = Новый УникальныйИдентификатор; СтруктураРеквизита = Новый Структура(ИмяРеквизита, КлючУникальности); ЗаполнитьЗначенияСвойств(СтруктураРеквизита, мОбъект); Возврат СтруктураРеквизита[ИмяРеквизита] <> КлючУникальности; КонецФункции // ЕстьРеквизитОбъекта()
- Свойства, методы и коллекции управляемой формы описаны в синтакс-помощнике в разделе «Интерфейс (управляемый)»;
- Изучите БСП, если она имеется в вашей конфигурации. Например в общем модуле «ОбщегоНазначения» уже описаны функции для создания объекта ОписаниеТипов, необходимого при создании новых реквизитов на форме:
- ОбщегоНазначения.ОписаниеТипаСтрока(ДлинаСтроки) — Создает объект ОписаниеТипов, содержащий тип Строка;
- ОбщегоНазначения.ОписаниеТипаЧисло(Разрядность, РазрядностьДробнойЧасти = 0, ЗнакЧисла = Неопределено) — Создает объект ОписаниеТипов, содержащий тип Число;
- ОбщегоНазначения.ОписаниеТипаДата(ЧастиДаты) — Создает объект ОписаниеТипов, содержащий тип Дата;
- ОбщегоНазначенияВызовСервера.ЦветСтиля(ИмяЦветаСтиля) — Функция получает цвет стиля по имени элемента стиля;
- ОбщегоНазначенияВызовСервера.ШрифтСтиля(ИмяШрифтаСтиля) — Функция получает шрифт стиля по имени элемента стиля.
Итак, взглянем на получившийся результат. Все элементы на форме созданы программно:
Полезные ссылки
1. Типовой механизм упрощенного изменения конфигурации в ERP 2.0 и УТ 11
2. Типовой функционал модификации конфигурации линейки ERP-решений (УТ 11, КА 2 и ERP 2)
3. 1С Управляемые Формы. Программное создание таблицы значений и динамического списка (Часть 2)
Файлы материала
Описание
Новый реквизит на форму, можно добавить программно через расширение, при этом не забирать саму форму в расширение (это удобно тем, что последующие обновления внешнего вида формы не смогут сломать наше расширение). В типовых конфигурациях, данный способ можно реализовывать в процедуре “ПриСозданииНаСервере” общего модуля “УправлениеСвойствами” .
Программное добавление реквизита на форму
Для примера, стоит задача в конфигурации ЗУП 3.1 добавить реквизит «Способ отражения зарплаты в БУ» для позиции штатного расписания в группе “Дополнительные данные”.
Создадим расширение и выполним следующую последовательность действий:
- Добавим в расширение справочник “Штатное расписание” и создадим реквизит “АВ_СпособОтражения” с типом данных “СправочникСсылка.СпособыОтраженияЗарплатыВБухУчете”
2. Заберем в расширение процедуру “ПриСозданииНаСервере” из общего модуля “УправлениеСвойствами”, программно добавим поле в форму и свяжем его с реквизитом объекта добавленного на первом шаге.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
&После(«ПриСозданииНаСервере») Процедура АВ_ПриСозданииНаСервере(Форма, ДополнительныеПараметры) Если Форма.ИмяФормы = «Справочник.ШтатноеРасписание.Форма.ФормаЭлемента» Тогда #Область ДобавлениеЭлементовФормы ИмяГруппы = «ГруппаДополнительныеРеквизиты»; ГруппаФормы = Форма.Элементы.Найти(ИмяГруппы); Если ГруппаФормы <> Неопределено Тогда ИмяЭлемента = «АВ_СпособОтражения»; Если Форма.Элементы.Найти(ИмяЭлемента) = Неопределено Тогда ЭлементФормы = Форма.Элементы.Добавить(ИмяЭлемента, Тип(«ПолеФормы»), ГруппаФормы); //Вместо Добавить() можно использовать метод Вставить() //в 4-й параметре указывается Элемент перед которым должен быть вставлен новый элемент. //ЭлементФормы = Форма.Элементы.Вставить(ИмяЭлемента, Тип(«ПолеФормы»), ГруппаФормы, Форма.Элементы.Найти(«ИмяСледующегоЭлементаФормы»)); ЭлементФормы.Вид = ВидПоляФормы.ПолеВвода; ЭлементФормы.ПутьКДанным = «Объект.АВ_СпособОтражения»; //ЭлементФормы.МногострочныйРежим = Истина; //ЭлементФормы.Высота = 3; КонецЕсли; КонецЕсли; #КонецОбласти КонецЕсли; КонецПроцедуры |
Образец расширения для скачивания в начале описания.
Программное добавление реквизита в табличную часть формы
Например, таким же способом, добавим в табличную часть “Рабочие места” реквизит “Спецжиры” с типом “Булево”.
&После(«ПриСозданииНаСервере») Процедура АВ_ПриСозданииНаСервере(Форма, ДополнительныеПараметры) Если Форма.ИмяФормы = «Документ.РезультатыСпецоценкиУсловийТруда.Форма.ФормаДокумента» Тогда #Область ДобавлениеЭлементовФормы ИмяЭлемента = «АВ_ЕстьСпецжиры»; Если Форма.Элементы.Найти(ИмяЭлемента) = Неопределено Тогда ЭлементФормы = Форма.Элементы.Добавить(«Спецжиры», Тип(«ПолеФормы»), Форма.Элементы.РабочиеМеста); ЭлементФормы.Вид = ВидПоляФормы.ПолеФлажка; ЭлементФормы.ПутьКДанным = «Объект.РабочиеМеста.АВ_ЕстьСпецжиры»; //ЭлементФормы.ТолькоПросмотр = Истина; КонецЕсли; #КонецОбласти КонецЕсли; КонецПроцедуры |
В результате получим табличную часть с новой колонкой.
Программное добавление табличной части на форму
Аналогично добавим табличную часть “АВ_ВредныеФакторы” на форму справочника “Профессии”.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
&После(«ПриСозданииНаСервере») Процедура АВ_ПриСозданииНаСервере(Форма, ДополнительныеПараметры) Если Форма.ИмяФормы = «Справочник.ПрофессииРабочих.Форма.ФормаЭлемента» Тогда #Область ДобавлениеЭлементовФормы ИмяГруппы = «ГруппаДополнительныеРеквизиты»; ГруппаФормы = Форма.Элементы.Найти(ИмяГруппы); Если ГруппаФормы <> Неопределено Тогда ИмяЭлемента = «АВ_ВредныеФакторы»; Если Форма.Элементы.Найти(ИмяЭлемента) = Неопределено Тогда ЭлементФормыТаблица = Форма.Элементы.Добавить(ИмяЭлемента, Тип(«ТаблицаФормы»), ГруппаФормы); ЭлементФормыТаблица.ПутьКДанным = «Объект.АВ_ВредныеФакторы»; ЭлементФормы = Форма.Элементы.Добавить(«ВредныйФактор», Тип(«ПолеФормы»), ЭлементФормыТаблица); ЭлементФормы.Вид = ВидПоляФормы.ПолеВвода; ЭлементФормы.ПутьКДанным = «Объект.АВ_ВредныеФакторы.ВредныйФактор»; КонецЕсли; КонецЕсли; #КонецОбласти КонецЕсли; КонецПроцедуры |
Связь реквизитов формы с элементами формы
Кроме того, реквизиты формы можно создавать программно и связывать их с элементами формы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#Область ДобавлениеРеквизитовФормы // Массив для новых реквизитов ДобавляемыеРеквизиты = Новый Массив; // Опишем ревизиты формы Реквизит_РабочееМесто = Новый РеквизитФормы(«АВ_РабочееМесто», Новый ОписаниеТипов(«СправочникСсылка.РабочиеМестаОхраныТруда»), , «Рабочее место»); // Заполним массив после описания реквизитов формы ДобавляемыеРеквизиты.Добавить(Реквизит_РабочееМесто); // Добавим новые реквизиты в форму Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты); #КонецОбласти #Область ДобавлениеЭлементовФормы ... #КонецОбласти #Область ЗаполнениеДанных Форма.АВ_РабочееМесто = Форма.Объект.АВ_РабочееМесто; #КонецОбласти |
Расширения, Типовые приемы, Шаблоны и заготовки
Программное добавление элементов на формы является очень удобным подходом при доработке типовых конфигураций. Это позволяет минимизировать коллизии и ошибки при объединении форм, использовать при обновлениях трехсторнонее сравнение кода при помощи внешних программ, например KDiff3, переиспользовать однажды написанный код в других доработках.
Содержание
В качестве примера будем использовать пустую обработку, в которой есть реквизит НашНужныйРеквизит. Все манипуляции по добавлению, удалению элементов и реквизитов формы производятся на сервере, и можно использовать как предопределенные обработчики, например &ПриСозданииНаСервере, так и любые другие методы с директивой &НаСервере. В нашем примере будем все элементы добавлять при помощи отдельных команд, для большей наглядности.
Как в 1С программно добавить элемент формы?
Вывести существующий реквизит
&НаСервере Процедура ДобавитьПолеВводаНаСервере() // Проверка нужна, чтобы избежать ошибки при попытке создания элемента с одним и тем же именем несколько раз Если Элементы.Найти("НашНужныйЭлемент") = Неопределено Тогда // Вначале просто добавляем элемент в коллекцию Элементы НовыйЭлемент = Элементы.Добавить("НашНужныйЭлемент", Тип("ПолеФормы")); //Затем донастраиваем его и указываем нужные свойства НовыйЭлемент.ПутьКДанным = "Объект.НашНужныйРеквизит"; НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.Заголовок = "Программно добавленное поле ввода"; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ДобавитьПолеВвода(Команда) ДобавитьПолеВводаНаСервере(); КонецПроцедуры
Создать новый реквизит формы
&НаСервере Процедура ДобавитьРеквизитФлажокНаСервере() Если Элементы.Найти("НужныйФлажок") = Неопределено Тогда НовыеРеквизиты = Новый Массив; //Обратите внимание, типизация реквизитов использует именно Описание типов, а не отдельный тип. ТипРеквизита = Новый ОписаниеТипов("Булево"); РеквизитФлажок = Новый РеквизитФормы("НужныйФлажок", ТипРеквизита, "", "Нужный флажок"); НовыеРеквизиты.Добавить(РеквизитФлажок); ИзменитьРеквизиты(НовыеРеквизиты); НовыйЭлемент = Элементы.Добавить("НужныйФлажок", Тип("ПолеФормы")); НовыйЭлемент.ПутьКДанным = "НужныйФлажок"; НовыйЭлемент.Вид = ВидПоляФормы.ПолеФлажка; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ДобавитьРеквизитФлажок(Команда) ДобавитьРеквизитФлажокНаСервере(); КонецПроцедуры
Вставить элемент формы в нужное место
&НаСервере Процедура ВставитьКартинкуПередФлажкомНаСервере() Если Элементы.Найти("ВставленнаяКартинка") = Неопределено Тогда СледующийЭлемент = Элементы.Найти("НужныйФлажок"); // Если флажок найден - вставим элемент перед ним, если нет - добавим в конец // Заодно рассмотрим как добавить программно декорацию-картинку на форму ЭлементКартинка = Элементы.Вставить("ВставленнаяКартинка", Тип("ДекорацияФормы"),,СледующийЭлемент); ЭлементКартинка.Вид = ВидДекорацииФормы.Картинка; // Обратите внимание, картинка в этом случае может быть либо Пустая, либо ИзБиблиотеки ЭлементКартинка.Картинка = БиблиотекаКартинок.Реквизит; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ВставитьКартинкуПередФлажком(Команда) ВставитьКартинкуПередФлажкомНаСервере(); КонецПроцедуры
Как программно добавить команду в управляемую форму?
&НаСервере Процедура ДобавитьПрограммноКомандуНаСервере() Если Элементы.Найти("КнопкаПредупредить") = Неопределено Тогда //Добавим команду в коллекцию команд КомандаПредупредить = Команды.Добавить("Предупредить"); КомандаПредупредить.Заголовок = "Предупредить!"; КомандаПредупредить.Действие = "КомандаПредупредить"; КнопкаКоманды = Элементы.Добавить("КнопкаПредупредить", Тип("КнопкаФормы")); КнопкаКоманды.ИмяКоманды = "Предупредить"; // Если помещаем просто на форму, то вид - обычная кнопка // Если укажем контейнер с типом Командная панель, то вид - КнопкаКоманднойПанели КнопкаКоманды.Вид = ВидКнопкиФормы.ОбычнаяКнопка; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ДобавитьПрограммноКоманду(Команда) ДобавитьПрограммноКомандуНаСервере(); КонецПроцедуры &НаКлиенте Процедура КомандаПредупредить(Команда) ПоказатьПредупреждение(, "А ведь я предупреждал!"); КонецПроцедуры
Как добавить таблицу на форму программно?
На программном добавлении таблицы на форму стоит остановиться отдельно. Порядок действий следующий:
Сперва создаем основной реквизит – саму таблицу формы. Далее – создаем подчиненные реквизиты-колонки. В простейшем случае колонки можно создать, перебрав колонки таблицы значений – источника. Далее следует создать связанные с только что созданными реквизитами элементы формы – также сперва основной элемент – таблицу, а затем подчиненные элементы – колонки.
&НаСервере Процедура СоздатьТаблицуЗначенийНаСервере() Если Элементы.Найти("ДинамическаяТаблицаЭлемент") <> Неопределено Тогда Возврат; КонецЕсли; НовыеРеквизиты = Новый Массив; ТипРеквизита = Новый ОписаниеТипов("ТаблицаЗначений"); РеквизитТЗ = Новый РеквизитФормы("ДинамическаяТаблица", ТипРеквизита, "", "Динамическая таблица"); НовыеРеквизиты.Добавить(РеквизитТЗ); ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("Отметка", Новый ОписаниеТипов("Булево")); ТЗ.Колонки.Добавить("Дата", Новый ОписаниеТипов("Дата")); ТЗ.Колонки.Добавить("Комментарий", Новый ОписаниеТипов("Строка")); Для Каждого КолонкаТаблицы Из ТЗ.Колонки Цикл НовыеРеквизиты.Добавить(Новый РеквизитФормы(КолонкаТаблицы.Имя, КолонкаТаблицы.ТипЗначения, "ДинамическаяТаблица")); КонецЦикла; ИзменитьРеквизиты(НовыеРеквизиты); ЭлементТаблица = Элементы.Добавить("ДинамическаяТаблицаЭлемент", Тип("ТаблицаФормы")); ЭлементТаблица.ПутьКДанным = "ДинамическаяТаблица"; ЭлементТаблица.Отображение = ОтображениеТаблицы.Список; Для Каждого КолонкаТаблицы Из ТЗ.Колонки Цикл ЭлементКолонкаТаблицы = Элементы.Добавить(КолонкаТаблицы.Имя, Тип("ПолеФормы"), ЭлементТаблица); Если КолонкаТаблицы.ТипЗначения.СодержитТип(Тип("Булево")) Тогда ЭлементКолонкаТаблицы.Вид = ВидПоляФормы.ПолеФлажка; Иначе ЭлементКолонкаТаблицы.Вид = ВидПоляФормы.ПолеВвода; КонецЕсли; ЭлементКолонкаТаблицы.ПутьКДанным = "ДинамическаяТаблица." + КолонкаТаблицы.Имя; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура СоздатьТаблицуЗначений(Команда) СоздатьТаблицуЗначенийНаСервере(); КонецПроцедуры
Как программно установить обработчик события элемента формы?
&НаСервере Процедура ДобавитьОбработчикДействияНаСервере() // Если таблицу еще не создали, ничего не делаем Если Элементы.Найти("ДинамическаяТаблицаЭлемент") = Неопределено Тогда Возврат; КонецЕсли; Элементы.ДинамическаяТаблицаЭлемент.УстановитьДействие("ПриИзменении", "ПриИзмененииТаблицы"); КонецПроцедуры &НаКлиенте Процедура ДобавитьОбработчикДействия(Команда) ДобавитьОбработчикДействияНаСервере(); КонецПроцедуры // Количество и порядок параметров метода-обработчика должны соответствовать событию // Подробнее см. синтакс-помощник &НаКлиенте Процедура ПриИзмененииТаблицы(Элемент) Сообщить("Изменили колонку " + Элемент.ТекущийЭлемент.Имя); КонецПроцедуры
////--> Начало добавления | All4CF.ru | 26.05.2015 00:54
Если ЭтоНовый() Тогда дс=Справочники.ДоговорыКонтрагентов.ПустаяСсылка(); КонецЕсли;
//Надпись и поле ввода
ЭлементНадпись = ЭлементыФормы.Добавить(Тип("Надпись"), "НадписьДСПроект", Истина,);
ЭлементНадпись.Заголовок = "ДС Проекты:";
ЭлементНадпись.Лево = 15; ЭлементНадпись.Верх = 450;
ЭлементНадпись.Высота = 19;
ЭлементНадпись.Ширина = 80;
ЭлементНадпись.ЦветФона = ЦветаСтиля.ЦветФонаКнопки;
ЭлементНадпись.ЦветТекста = ЦветаСтиля.ЦветРамки;
ЭлементКнопка = ЭлементыФормы.Добавить(Тип("Кнопка"), "ДСАвтоПодбор", Истина);
ЭлементКнопка.Заголовок = "Подбор ДС";
ЭлементКнопка.Верх = ЭлементНадпись.Верх;
ЭлементКнопка.Лево = 100;
ЭлементКнопка.Высота = ЭлементНадпись.Высота;
ЭлементКнопка.Ширина = 35;
ЭлементКнопка.УстановитьДействие("Нажатие", Новый Действие("ДСОткрытие"));
ЭлементПолеВвода = ЭлементыФормы.Добавить(Тип("ПолеВвода"), "ДСПроект", Истина, );
ЭлементПолеВвода.Данные = "ДС";
//Когда указываются данные, тип значения не нужно задавать
//ЭлементПолеВвода.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.ДоговорыКонтрагентов");
ЭлементПолеВвода.Верх = ЭлементНадпись.Верх;
ЭлементПолеВвода.Лево = ЭлементНадпись.Лево + ЭлементНадпись.Ширина + 76;
ЭлементПолеВвода.Высота = ЭлементНадпись.Высота;
ЭлементПолеВвода.Ширина = 270;
//ЭлементПолеВвода.КнопкаОткрытия = Истина;
ЭлементПолеВводад = ЭлементыФормы.Добавить(Тип("ПолеВвода"), "ДатаПоПроекту", Истина, );
ЭлементПолеВводад.Данные = "Дата_По_Проекту";
//Когда указываются данные, тип значения не нужно задавать
//ЭлементПолеВвода.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.ДоговорыКонтрагентов");
ЭлементПолеВводад.Верх = ЭлементНадпись.Верх;
ЭлементПолеВводад.Лево = ЭлементНадпись.Лево + ЭлементНадпись.Ширина +ЭлементПолеВвода.Ширина + 78;
ЭлементПолеВводад.Высота = ЭлементНадпись.Высота;
ЭлементПолеВводад.Ширина = 80;
//Доп настройки
ЭлементПолеВвода.КнопкаОчистки = Ложь;
//ЭлементПолеВвода.ВыборПоВладельцу = Справочники.Контрагенты.НайтиПоКоду("000000249"); //Бургер
//Добавим обработчик
ЭлементПолеВвода.УстановитьДействие("ОкончаниеВводаТекста", Новый Действие("ДСОкончаниеВводаТекста"));
// установка привязок
ЭлементКнопка.УстановитьПривязку(ГраницаЭлементаУправления.Верх, ЭтаФорма.Панель, ГраницаЭлементаУправления.Низ);
ЭлементКнопка.УстановитьПривязку(ГраницаЭлементаУправления.Низ, ЭтаФорма.Панель, ГраницаЭлементаУправления.Низ);
ЭлементКнопка.УстановитьПривязку(ГраницаЭлементаУправления.Лево, ЭтаФорма.Панель, ГраницаЭлементаУправления.Лево);
ЭлементКнопка.УстановитьПривязку(ГраницаЭлементаУправления.Право, ЭтаФорма.Панель, ГраницаЭлементаУправления.Лево);
ЭлементНадпись.УстановитьПривязку(ГраницаЭлементаУправления.Верх, ЭтаФорма.Панель, ГраницаЭлементаУправления.Низ);
ЭлементНадпись.УстановитьПривязку(ГраницаЭлементаУправления.Низ, ЭтаФорма.Панель, ГраницаЭлементаУправления.Низ);
ЭлементНадпись.УстановитьПривязку(ГраницаЭлементаУправления.Лево, ЭтаФорма.Панель, ГраницаЭлементаУправления.Лево);
ЭлементНадпись.УстановитьПривязку(ГраницаЭлементаУправления.Право, ЭтаФорма.Панель, ГраницаЭлементаУправления.Лево);
ЭлементПолеВвода.УстановитьПривязку(ГраницаЭлементаУправления.Верх, ЭтаФорма.Панель, ГраницаЭлементаУправления.Низ);
ЭлементПолеВвода.УстановитьПривязку(ГраницаЭлементаУправления.Низ, ЭтаФорма.Панель, ГраницаЭлементаУправления.Низ);
ЭлементПолеВвода.УстановитьПривязку(ГраницаЭлементаУправления.Лево, ЭтаФорма.Панель, ГраницаЭлементаУправления.Лево);
ЭлементПолеВвода.УстановитьПривязку(ГраницаЭлементаУправления.Право, ЭтаФорма.Панель, ГраницаЭлементаУправления.Лево);
ЭлементПолеВводад.УстановитьПривязку(ГраницаЭлементаУправления.Верх, ЭтаФорма.Панель, ГраницаЭлементаУправления.Низ);
ЭлементПолеВводад.УстановитьПривязку(ГраницаЭлементаУправления.Низ, ЭтаФорма.Панель, ГраницаЭлементаУправления.Низ);
//ЭлементПолеВводад.УстановитьПривязку(ГраницаЭлементаУправления.Лево, ЭтаФорма.Панель, ГраницаЭлементаУправления.Лево);
//ЭлементПолеВводад.УстановитьПривязку(ГраницаЭлементаУправления.Право, ЭтаФорма.Панель, ГраницаЭлементаУправления.Лево);
//--> Конец добавления | All4CF.ru | 26.05.2015 00:54