|
Программное добавление страниц в управляемой форме 8.3 | ☑ | ||
---|---|---|---|---|
0
Deahianaianyrto
22.07.16
✎
11:24
|
Не подскажет ли кто-нибудь, как программно добавить страницу в управляемой форме 8.3?
|
|||
1
Горогуля
22.07.16
✎
11:30
|
изменить реквизиты
|
|||
2
Deahianaianyrto
22.07.16
✎
11:32
|
Нов каждой странице надо прописать элементы цправления и обработчики событий.
Может кто-то даст ссылку, где посмотреть? |
|||
3
Cyberhawk
22.07.16
✎
11:33
|
ВсеЭлементыФормы.Вставить (FormAllItems.Insert)
ВсеЭлементыФормы (FormAllItems) Вставить (Insert) Синтаксис: Вставить(<Имя>, <ТипЭлемента>, <Родитель>, <Элемент>) Параметры: <Имя> (обязательный) Тип: Строка. Уникальное имя добавляемого элемента. <ТипЭлемента> (обязательный) Тип: Тип. Тип добавляемого элемента. <Родитель> (необязательный) Тип: ГруппаФормы; ТаблицаФормы; УправляемаяФорма. Родитель для добавляемого элемента. Если не указан, то вставляется на верхний уровень. <Элемент> (необязательный) Тип: ДекорацияФормы; ГруппаФормы; КнопкаФормы; ТаблицаФормы; ПолеФормы. Элемент, перед которым должен быть вставлен новый элемент. Если не указан, то элемент будет вставлен в конец. Возвращаемое значение: Тип: ДекорацияФормы; ГруппаФормы; КнопкаФормы; ТаблицаФормы; ПолеФормы. Описание: Вставляет элемент в коллекцию элементов. Доступность: Сервер. |
|||
4
Горогуля
22.07.16
✎
11:34
|
(3) о как
(2) добавить обработчик |
|||
5
Deahianaianyrto
22.07.16
✎
11:40
|
А как в новой странице прописать элемент формы, скажем поле html-документа и обработчик (ПриНажатии)?
|
|||
6
Горогуля
22.07.16
✎
11:41
|
(5) а сам-то как думаешь?
|
|||
7
Deahianaianyrto
22.07.16
✎
11:48
|
Вот ещё проблемка, может кто подскажет, или кинет ссылку:
Если я генерю страницы со сгенерированными идентификаторами, а на странице поле html документа, то как мне обратиться к элементу формы страницы по сгенерированному идентификатору, который у меня есть в виде строковой переменной. Элементы.ПолеHTMLРезультат.Документ.url = "http://api-laravel-dev.1clicom.ru/1s/search?facetype=7&sess_id=" + Объект.PHPSESSID; То есть как обратиться к некоему ПолеHTMLРезультатXXX? Где XXX - порядковый номер сгененрированного идентификатора элемента формы. |
|||
8
Горогуля
22.07.16
✎
11:49
|
внезапно Элементы.ПолеHTMLРезультатXXX
|
|||
9
Mauser
22.07.16
✎
11:50
|
(7) []
|
|||
10
Deahianaianyrto
22.07.16
✎
12:08
|
Но так же не получиться, то есть у меня есть строка "ПолеHTMLРезультатXXX", а надо обратиться по идентификатору.
Может кто-то знает? Элементы. а дальше? |
|||
11
Горогуля
22.07.16
✎
12:15
|
Элементы["ПолеHTMLРезультат"+XXX]
|
|||
12
Deahianaianyrto
22.07.16
✎
12:15
|
А как прописать Тип "Страница" в Группе формы?
|
|||
13
Deahianaianyrto
22.07.16
✎
12:15
|
(11) Спасибо!
|
|||
14
Горогуля
22.07.16
✎
12:16
|
это ж группа
|
|||
15
Deahianaianyrto
22.07.16
✎
12:18
|
Надо добавить Группу с Видом "Страница"
|
|||
16
Горогуля
22.07.16
✎
12:19
|
(15) и чего там в СП пишут?
|
|||
17
Deahianaianyrto
22.07.16
✎
12:20
|
Там все очень не подробно, без примеров. Можете пример дать? Создать Группу с Видом "Страница"
|
|||
18
Горогуля
22.07.16
✎
12:23
|
(17) хочешь, чтобы я за тебя сходил в СП, почитал там, понял, переварил, сделал ВнешнююОбработку1, накидал туда пару строк, запустил проверить, а потом тебе ещё и разжевал? не, лениво
|
|||
19
Deahianaianyrto
22.07.16
✎
12:33
|
&НаКлиенте
Функция СоздатьСтраницуНаФорме(Заголовок) ИдентификаторСтраницы = СгенерироватьИдентификатор(); ВсеЭлементыФормы.Вставить(ИдентификаторСтраницы,Тип("ГруппаФормы"),Элементы.ВкладкиОКонтрагентах); Возврат ИдентификаторСтраницы; КонецФункции Почему-то даёт ошибку: ВнешняяОбработка.LicBusinessUP_2_2_1_8beta_expert.Форма.Форма.Форма(4347,2)}: Переменная не определена (ВсеЭлементыФормы) <<?>>ВсеЭлементыФормы.Вставить(ИдентификаторСтраницы,Тип("ГруппаФормы"),Элементы.ВкладкиОКонтрагентах); (Проверка: Тонкий клиент) |
|||
20
Горогуля
22.07.16
✎
12:34
|
не почему-то, а потому что &НаКлиенте
|
|||
21
aleks_default
22.07.16
✎
12:36
|
ВсеЭлементыФормы = Элементы
|
|||
22
Deahianaianyrto
22.07.16
✎
12:36
|
&НаСервере
Функция СоздатьСтраницуНаФорме(Заголовок) ИдентификаторСтраницы = СгенерироватьИдентификатор(); ВсеЭлементыФормы.Вставить(ИдентификаторСтраницы,Тип("ГруппаФормы"),Элементы.ВкладкиОКонтрагентах); Возврат ИдентификаторСтраницы; КонецФункции {ВнешняяОбработка.LicBusinessUP_2_2_1_8beta_expert.Форма.Форма.Форма(4347,2)}: Переменная не определена (ВсеЭлементыФормы) <<?>>ВсеЭлементыФормы.Вставить(ИдентификаторСтраницы,Тип("ГруппаФормы"),Элементы.ВкладкиОКонтрагентах); (Проверка: Сервер) |
|||
23
Горогуля
22.07.16
✎
12:37
|
видать, эта платформа так не умеет
|
|||
24
Deahianaianyrto
22.07.16
✎
12:38
|
А сейчас пишет при работе:
{ВнешняяОбработка.LicBusinessUP_2_2_1_8beta_expert.Форма.Форма.Форма(4347)}: Ошибка при вызове метода контекста (Вставить) Элементы.Вставить(ИдентификаторСтраницы,Тип("ГруппаФормы"),Элементы.ВкладкиОКонтрагентах); по причине: Изменение состава элементов недоступно |
|||
25
aleks_default
22.07.16
✎
12:46
|
Элементы.ВкладкиОКонтрагентах - это что за элемент формы?
|
|||
26
aleks_default
22.07.16
✎
12:48
|
И попробуй не Вставить(), а Добавить()
|
|||
27
Горогуля
22.07.16
✎
12:53
|
от такая галка есть у формы: Разрешить пользовательскую настройку формы
|
|||
28
Deahianaianyrto
22.07.16
✎
13:00
|
&НаСервере
Функция СгенерироватьИдентификатор() Возврат "001"; КонецФункции &НаСервере Функция СоздатьСтраницуНаФорме() Счетчик = СгенерироватьИдентификатор(); ИдентификаторСтраницы = "Группа"+Счетчик; ИдентификаторПоляHTML = "ПолеHTMLРезультат"+Счетчик; Элементы.Добавить(ИдентификаторСтраницы,Тип("ГруппаФормы"),Элементы.ВкладкиОКонтрагентах); Элементы[ИдентификаторСтраницы].Вид=ВидГруппыФормы.Страница; Элементы[ИдентификаторСтраницы].Видимость = Истина; Элементы[ИдентификаторСтраницы].Доступность = Истина; Элементы.Добавить(ИдентификаторПоляHTML,Тип("ПолеФормы"),Элементы[ИдентификаторСтраницы]); Элементы[ИдентификаторПоляHTML].Вид=ВидПоляФормы.ПолеHTMLДокумента; Элементы[ИдентификаторПоляHTML].Видимость = Истина; Элементы[ИдентификаторПоляHTML].Доступность = Истина; Возврат ИдентификаторСтраницы; КонецФункции &НаСервере Процедура ЗагрузитьHTML(Команда) ИдентификаторСтраницы = СоздатьСтраницуНаФорме(); //Элементы[ИдентификаторСтраницы].Документ.url = "http://api-laravel-dev.1clicom.ru/1s/search?facetype=7&sess_id=" + Объект.PHPSESSID; КонецПроцедуры Не появляется ни страница, ни полеHTMLдокумента в ней. |
|||
29
aleks_default
22.07.16
✎
13:01
|
млять
ЭлементСтраница = Элементы.Добавить(ИдентификаторСтраницы,Тип("ГруппаФормы"),Элементы.ВкладкиОКонтрагентах); |
|||
30
Deahianaianyrto
22.07.16
✎
14:03
|
&НаСервере
Функция СоздатьСтраницуНаФорме() Счетчик = СгенерироватьИдентификатор(); ИдентификаторСтраницы = "Группа"+Счетчик; ИдентификаторПоляHTML = "ПолеHTMLРезультат"+Счетчик; ЭлементСтраница = Элементы.Добавить(ИдентификаторСтраницы,Тип("ГруппаФормы"),Элементы.ВкладкиОКонтрагентах); ЭлементСтраница.Вид=ВидГруппыФормы.Страница; ЭлементСтраница.Видимость = Истина; ЭлементСтраница.Доступность = Истина; ЭлементПолеHTML = Элементы.Добавить(ИдентификаторПоляHTML,Тип("ПолеФормы"),Элементы[ИдентификаторСтраницы]); ЭлементПолеHTML.Вид=ВидПоляФормы.ПолеHTMLДокумента; ЭлементПолеHTML.Видимость = Истина; ЭлементПолеHTML.Доступность = Истина; Возврат Счетчик; КонецФункции Страница и HTML-поле не появляются! Кто-нибудь не знает в чем дело? |
|||
31
aleks_default
22.07.16
✎
14:21
|
Надо указать путь к данным. Без привязки к данным элементы не отображаются.
Для этого создай реквизит формы с типом строка РеквизитФормы (FormAttribute) Основной Синтаксис: Новый РеквизитФормы(<Имя>, <Тип>, <Путь>, <Заголовок>, <СохраняемыеДанные>) Параметры: <Имя> (обязательный) Тип: Строка. Имя реквизита. <Тип> (обязательный) Тип: ОписаниеТипов. Тип реквизита. <Путь> (необязательный) Тип: Строка. Путь к создаваемому реквизиту. Не включает имя реквизита. Значение по умолчанию: Пустая строка <Заголовок> (необязательный) Тип: Строка. Содержит отображаемый текст реквизита. Значение по умолчанию: Пустая строка <СохраняемыеДанные> (необязательный) Тип: Булево. Реквизит содержит сохраняемые данные. Истина - сохраняеый реквизит формы. Значение по умолчанию: Ложь Описание: Создает описание реквизита управляемой формы на основе переданных параметров. |
|||
32
aleks_default
22.07.16
✎
14:24
|
потом добавить этот реквизит в форму
УправляемаяФорма (ManagedForm) ИзменитьРеквизиты (ChangeAttributes) Синтаксис: ИзменитьРеквизиты(<ДобавляемыеРеквизиты>, <УдаляемыеРеквизиты>) Параметры: <ДобавляемыеРеквизиты> (необязательный) Тип: Массив. Массив, содержащий объекты типа РеквизитФормы. Добавлять можно реквизиты верхнего уровня и вложенные реквизиты, являющиеся колонками. К добавленным реквизитам верхнего уровня из модуля можно обращаться только с помощью конструкции ЭтаФорма.<Имя реквизита>. <УдаляемыеРеквизиты> (необязательный) Тип: Массив. Массив, содержащий строки, описывающие пути к удаляемым реквизитам. Удалять можно только ранее программно добавленные реквизиты. Описание: Изменяет структуру реквизитов формы. Сначала выполняется удаление реквизитов. Таким образом массивы добавляемых и удаляемых реквизитов могут содержать реквизиты с одинаковым путём. Доступность: Сервер. |
|||
33
aleks_default
22.07.16
✎
14:25
|
Залезь уже куда-нибуль в типовую и посмотри.
|
|||
34
Deahianaianyrto
22.07.16
✎
15:01
|
&НаСервере
Функция СоздатьСтраницуНаФорме() Счетчик = СгенерироватьИдентификатор(); ИдентификаторСтраницы = "Группа"+Счетчик; ИдентификаторПоляHTML = "ПолеHTMLРезультат"+Счетчик; ЭлементСтраница = Элементы.Добавить(ИдентификаторСтраницы,Тип("ГруппаФормы"),Элементы.ВкладкиОКонтрагентах); ЭлементСтраница.Вид=ВидГруппыФормы.Страница; ЭлементСтраница.Видимость = Истина; ЭлементСтраница.Доступность = Истина; ЭлементПолеHTML = Элементы.Добавить(ИдентификаторПоляHTML,Тип("ПолеФормы"),Элементы[ИдентификаторСтраницы]); ЭлементПолеHTML.Видимость = Истина; ЭлементПолеHTML.Доступность = Истина; ЭлементРеквизитФормы = Новый РеквизитФормы(ИдентификаторПоляHTML+"РеквизитФормы", Тип("Строка"),,,); ЭлементПолеHTML.ПутьКДанным = Объект[ИдентификаторПоляHTML+"РеквизитФормы"]; ЭлементПолеHTML.Вид=ВидПоляФормы.ПолеHTMLДокумента; Возврат Счетчик; КонецФункции Ошибка: {ВнешняяОбработка.LicBusinessUP_2_2_1_8beta_expert.Форма.Форма.Форма(4357)}: Ошибка при вызове конструктора (РеквизитФормы) ЭлементРеквизитФормы = Новый РеквизитФормы(ИдентификаторПоляHTML+"РеквизитФормы", Тип("Строка"),,,); по причине: Недопустимое значение параметра (параметр номер '2') |
|||
35
Горогуля
22.07.16
✎
15:05
|
так влом руками добавить?
|
|||
36
Deahianaianyrto
22.07.16
✎
15:06
|
А не предсказуемо сколько их будет
|
|||
37
КоньЛапчатый
22.07.16
✎
15:08
|
Вот пример:
//добавляем страницу НСтраница = Элементы.Добавить("Вопрос" + Строка(ш), Тип("ГруппаФормы"), Элементы.Страницы); НСтраница.Вид = ВидГруппыФормы. //добавляем реквизит формы с нужными параметрами ДобавляемыеРеквизиты = Новый Массив; Реквизит = Новый РеквизитФормы("Вопрос" + Строка(ш), Новый ОписаниеТипов("Строка"),,, Ложь); ДобавляемыеРеквизиты.Добавить(Реквизит); ИзменитьРеквизиты(ДобавляемыеРеквизиты); //Для добавленногореквизита создаем элемент на нашей странице НЭлемент = Элементы.Добавить("ТекстВОпроса" + Строка(ш), Тип("ПолеФормы"), НСтраница); НЭлемент.Вид = ВидПоляФормы.ПолеНадписи; НЭлемент.ПутьКДанным = "Вопрос" + Строка(ш); НЭлемент.АвтоМаксимальнаяШирина = Ложь; НЭлемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет; //добавленному реквизиту присваиваем значение ЭтаФорма[Реквизит.Имя] = СтрТЗВопр.Вопрос; |
|||
38
Горогуля
22.07.16
✎
15:08
|
ничего, сейчас ты поймёшь, что у второго параметра недопустимое значение, и всё исправишь
|
|||
39
Deahianaianyrto
22.07.16
✎
15:12
|
А как прописать ПутьКДАнным по строковому идентификатору реквизита?
|
|||
40
Горогуля
22.07.16
✎
15:13
|
(39) а какие варианты ответа вообще?
|
|||
41
Deahianaianyrto
22.07.16
✎
15:14
|
{ВнешняяОбработка.LicBusinessUP_2_2_1_8beta_expert.Форма.Форма.Форма(4371)}: Ошибка при установке значения атрибута контекста (ПутьКДанным)
ЭлементПолеHTML.ПутьКДанным = ЭтаФорма[ИдентификаторПоляHTML+"РеквизитФормы"]; по причине: Недопустимое значение |
|||
42
Горогуля
22.07.16
✎
15:15
|
(41) путь к данным - это строка
|
|||
43
Горогуля
22.07.16
✎
15:16
|
тяжко вслепую, понимаю. вот бы где-то был на свете сборник описаний всех свойств и методов...
|
|||
44
КоньЛапчатый
22.07.16
✎
15:17
|
(41) посмотри внимательно на мой пример, там всё есть.
|
|||
45
Deahianaianyrto
22.07.16
✎
15:37
|
Вот ещё проблемка: как прописать Обработчик ПриНажатии:
ПолеHTMLРезультатПриНажатии() |
|||
46
Горогуля
22.07.16
✎
15:39
|
ну не добавить же обработчик в конце-то концов
|
|||
47
aleks_default
22.07.16
✎
15:42
|
(45)
ЭлементПолеHTML.УстановитьДействие("ПриИзменении", "ПриИзмененииПоляHTML") |
|||
48
aleks_default
22.07.16
✎
15:46
|
Ну или
ЭлементПолеHTML.УстановитьДействие("ПриНажатии", "ЕслиЖамкнуть") |
|||
49
aleks_default
22.07.16
✎
15:49
|
Ну и процедуру соответсвенно прописываешь
&НаКлиенте Процедура ЕслиЖамкнуть(Элемент) // бла-бла-бла КонецПроцедуры |
|||
50
Deahianaianyrto
22.07.16
✎
17:09
|
Спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |