Имя: Пароль:
1C
1С v8
Программное изменение управляемой формы
,
0 Razor
 
17.04.12
13:20
Добавил программно на управляемую форму страницы. Хочу переместить все существующие элементы на эти страницы, но поле родитель у элементов недоступно для записи, что подскажите?
1 jsmith
 
17.04.12
13:24
читать книгу разработка управляемого интерфейса
там код не такой простой, как кажется
2 Юрий Лазаренко
 
17.04.12
14:26
(0) Лови пример. В моем случае на форме уже есть группа с видом "СтраницЫ". Я программно добавляю на нее страницу и поле HTML. По примеру думаю разберешься, как и что делать в твоем случае.


   // Создаем новые реквизиты и элементы формы
   // Реквизит
   МассивТипов = Новый Массив;
   МассивТипов.Добавить(Тип("Строка"));
   ДопустимыеТипы = Новый ОписаниеТипов(МассивТипов);
   НовыйРеквизит = Новый РеквизитФормы("Канал_" + НомерКанала, ДопустимыеТипы,, КаналСсылка.Наименование);
   МассивНовыхРеквизитов = Новый Массив;
   МассивНовыхРеквизитов.Добавить(НовыйРеквизит);
   ЭтаФорма.ИзменитьРеквизиты(МассивНовыхРеквизитов);
   // Страница
   НоваяСтраница = Элементы.Добавить("СтраницаКанал_" + НомерКанала, Тип("ГруппаФормы"), Элементы.ГруппаСтраницы);
   НоваяСтраница.Вид = ВидГруппыФормы.Страница;
   НоваяСтраница.Заголовок = КаналСсылка.Наименование;
   Если КаналСсылка.ВидКанала = Перечисления.КэнВидыКаналовВзаимодействия.Форум Тогда
       КартинкаКанала = БиблиотекаКартинок.КэнКаналФорум;
       ИмяМакетаКанала = "МакетФорума";
   ИначеЕсли КаналСсылка.ВидКанала = Перечисления.КэнВидыКаналовВзаимодействия.Чат Тогда
       КартинкаКанала = БиблиотекаКартинок.КэнКаналЧат;
       ИмяМакетаКанала = "МакетЧата";
   ИначеЕсли КаналСсылка.ВидКанала = Перечисления.КэнВидыКаналовВзаимодействия.ЭлектроннаяПочта Тогда
       КартинкаКанала = БиблиотекаКартинок.КэнКаналЭлектроннаяПочта;
       ИмяМакетаКанала = "МакетЭлектроннойПочты";
   Иначе
       
       КартинкаКанала = Новый Картинка;
   КонецЕсли;
   НоваяСтраница.Картинка = КартинкаКанала;
   // Поле канала
   НовоеПоле = Элементы.Добавить("ПолеКанал_" + НомерКанала, Тип("ПолеФормы"), Элементы["СтраницаКанал_" + НомерКанала]);
   НовоеПоле.Вид = ВидПоляФормы.ПолеHTMLДокумента;
   НовоеПоле.ПутьКДанным = "Канал_" + НомерКанала;
   НовоеПоле.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
   НовоеПоле.УстановитьДействие("ПриНажатии", "ПолеHTMLПриНажатии");
   НовоеПоле.УстановитьДействие("ДокументСформирован", "ПолеHTMLДокументСформирован");
   // Загрузка шаблона канала
   ЭтаФорма["Канал_" + НомерКанала] = Обработки.КэнСообщенияИЗаметки.ПолучитьМакет(ИмяМакетаКанала).ПолучитьТекст();
3 Юрий Лазаренко
 
17.04.12
14:27
Смотри эту строку:
НоваяСтраница = Элементы.Добавить("СтраницаКанал_" + НомерКанала, Тип("ГруппаФормы"), Элементы.ГруппаСтраницы);

Элементы.ГруппаСтраницы - это как раз родитель для нового элемента
4 vmv
 
17.04.12
14:31
на самом деле все просто, правда кода много

мож потом изобретут методы компоновщики формы, но это в 3-м тысячелетии или пока я не выложу
5 Mort
 
17.04.12
14:45
ВсеЭлементыФормы.Переместить (FormAllItems.Move)
ВсеЭлементыФормы (FormAllItems)
Переместить (Move)
Синтаксис:

Переместить(<Элемент>, <Родитель>, <МестоРасположения>)
Параметры:

<Элемент> (обязательный)

Тип: ДекорацияФормы; ГруппаФормы; КнопкаФормы; ТаблицаФормы; ПолеФормы.
Перемещаемый элемент.
<Родитель> (обязательный)

Тип: ГруппаФормы; ТаблицаФормы; УправляемаяФорма.
Новый родитель элемента. Может совпадать со старым.
<МестоРасположения> (необязательный)

Тип: ГруппаФормы; ДекорацияФормы; КнопкаФормы; ТаблицаФормы; ПолеФормы.
Элемент, перед которым нужно разместить перемещаемый элемент. Если не задан, то перемещается в конец коллекции.
Описание:

Перемещает элемент коллекции.

Доступность:

Сервер.
6 Razor
 
17.04.12
16:06
Спасибо! Все оказалось так просто!) Переместить()
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.