|
Перебор реквизитов упр формы | ☑ | ||
---|---|---|---|---|
0
seraf
02.12.20
✎
12:08
|
Напомните плиз. Получаю на клиенте форму внешней обработки. Как получить реквизиты формы в массив. ПолучитьРеквизиты() работает на сервере, куда передать форму клиентского приложения нельзя, а там не работает ПолучитьФорму()
|
|||
1
ДенисЧ
02.12.20
✎
12:09
|
ВсеЭлементыФормы (FormAllItems)
Элементы коллекции: ГруппаФормы; ТаблицаФормы; ПолеФормы; КнопкаФормы Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы коллекции. Возможно обращение к элементу коллекции посредством оператора [...]. В качестве аргумента передается имя элемента. ... Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер. |
|||
2
Fragster
гуру
02.12.20
✎
12:10
|
(1) это элементы, а не реквизты
|
|||
3
seraf
02.12.20
✎
12:11
|
Мне не надо все элементы формы обойти, там же и декорации и прочее, мне надо обойти только реквизиты на закладке Реквизиты
|
|||
4
seraf
02.12.20
✎
12:17
|
можно передать полученную форму на сервер чтобы вернуть ПолучитьРеквизитыФормы() или как правильно?
мне просто список всех идентификаторов реквизитов формы на клиент вернуть надо |
|||
5
acht
02.12.20
✎
12:23
|
(0) Сделать контекстный вызов.
ПолучитьРеквизиты - это метод контекста формы, единственный способ "передать" форму на сервер - контекстный вызов из нее самой. |
|||
6
acht
02.12.20
✎
12:26
|
Ну еще можешь запустить конфигуратор с ключами для разбора внешней обработки в файлы и разобрать полученный XML.
"Напомните плиз"... |
|||
7
seraf
02.12.20
✎
12:28
|
я чет думал проще всё и туплю
|
|||
8
lodger
02.12.20
✎
12:32
|
(7) когда лезешь удалять гланды через ж.пу, то всё действительно непросто.
поза 1: вызвать открытие формы можно только НаКлиенте; поза 2: поковыряться во всех потрохах формы можно только НаСервере; поза 3: передать данные в открываемую форму можно через параметры открытия формы. |
|||
9
seraf
02.12.20
✎
12:38
|
Если с другой стороны, а на сервере через ВнешняяОбработкаМенеджер получив ВнешняяОбработкаОбъект, я могу как-то перебрать реквизиты её формы?
|
|||
10
acht
02.12.20
✎
12:41
|
(9) Нет не можешь. Перебрать реквизиты метаданных можешь, реквизиты формы - нет.
|
|||
11
acht
02.12.20
✎
12:43
|
(10)+ Начнем хотя бы с того, что у обратбоки может быть несколько форм. Чтобы получить хоть одну из них, надо... и все начинается сначала.
|
|||
12
seraf
02.12.20
✎
12:44
|
блин чеж так сложно, я же вижу свои реквизиты в ФормаКлиентскогоПриложения вкупе с остальным, всё что нужно просто отделить реквизиты в список значений)
получается я могу применить ПолучитьРеквизитыФормы() только при создании её на сервере когда в контексте нахожусь |
|||
13
acht
02.12.20
✎
12:50
|
(12) Следи за руками:
1) Ты можешь получить реквизиты формы только находясь на сервере. 2) Единственный вариант "передать" форму на сервер - контекстный вызов. 3) Контекстный вызов можно произвести только из самой формы. Теперь складывай 3) и 1). Получится, что получить реквизиты формы можно только вызовом из нее самой, а не со стороны. А по поводу "вижу" - это ты их имена знаешь. Ну так и напиши там где ты хочешь - Список.Добавить("ИмяИзвестногоМнеРеквизита") |
|||
14
seraf
02.12.20
✎
12:55
|
цель у меня была простая.
находясь в сторонней форме и выбирая там обработку, текстовый реквизит должен наполниться списком значений реквизитов формы выбранной обработки. |
|||
15
seraf
02.12.20
✎
12:57
|
хорошо когда я выполняю ПолучитьФорму() проходят процедуры её создания на сервере, а как мне там вклиниться и функцией вернуть результат ПолучитьРеквизитыФормы к себе "домой"
|
|||
16
Fragster
гуру
02.12.20
✎
13:11
|
(14) ну нету reflection в 1с, как и кучи другого всего
|
|||
17
Fragster
гуру
02.12.20
✎
13:11
|
и скорее всего не нужно
|
|||
18
seraf
02.12.20
✎
13:20
|
(16) я хз чего тут нету, как мне элементарную в принципе задачку выполнить из (14)
не отбирать же реквизиты из общего списка по типу, ну теоретически все строка/дата/число мне нужны и можно обойти элементы формы, но что это за код |
|||
19
НЕА123
02.12.20
✎
13:27
|
Форму разве нельзя передать с клиента на сервер?
|
|||
20
Fragster
гуру
02.12.20
✎
13:34
|
(18) в (14) не исходная задача
|
|||
21
Kassern
02.12.20
✎
13:36
|
(18) Если нужны только те реквизиты, которые отображены на форме, то можно попробовать использовать НужнаяФорма.ПодчиненныеЭлементы
|
|||
22
acht
02.12.20
✎
13:37
|
(18) > я хз чего тут нету, как мне
Я тебе максимум еще могу направление на ближайющую стенку указать, извини. |
|||
23
seraf
02.12.20
✎
13:37
|
в (14) я коротко написал чего сделать то хочу, в зависимости от выбранной обработки наполнять список значений соседнего реквизита формы
|
|||
24
Kassern
02.12.20
✎
13:39
|
(21) а блин, там группировка все испортит. Я бы просто пробежался по всем элементам и исключить те, что не относятся к реквизитам формы (декорации, кнопки и прочие)
|
|||
25
seraf
02.12.20
✎
13:39
|
(22) я ж не знаю, может и нельзя или не так делаю, поэтому написал что сделать хочу и спрашиваю) выглядело просто
|
|||
26
Fragster
гуру
02.12.20
✎
13:39
|
(23) если это типа унификации, чтобы реализовать что-то типа плагинов, то тебе нужно придумать "контракт" или "интерфейс" и в "подключаемых" обработках его реализовывать в качестве экспортных методов. И тогда всё станет намного проще.
|
|||
27
seraf
02.12.20
✎
13:41
|
(24) да, но еще имя элемента формы может же отличаться от реквизита и тогда будет плохо
|
|||
28
Fragster
гуру
02.12.20
✎
13:41
|
(24) да-да. а еще бывает, что не все реквизиты есть в элементах. ну и некоторые реквизиты тупо не могут отражаться на элементы - потому что это объекты, например.
|
|||
29
Fragster
гуру
02.12.20
✎
13:42
|
я же говорю, тупо "получить список реквизитов" - не сама задача. похоже на метод решения какой-то другой задачи
|
|||
30
seraf
02.12.20
✎
13:43
|
(26) нет это для динамической печати, чтобы через РС можно передавать в любой реквизит формы обработки (которая печатает) предопределенное значение
ну а чтобы юзверю проще было выбрать нужный реквизит хочу чтобы список их реальный вываливался, а не гадали как он называется или спрашивали как-то так |
|||
31
acht
02.12.20
✎
13:43
|
(24) Я те ща страшную вещь скажу. Чтобы получить из элемента формы путь к данным для понимания что это такое - придется на сервер идти. Ну и начинай все сначала.
|
|||
32
Fragster
гуру
02.12.20
✎
13:51
|
(30) а как ты решиш проблему, когда поле ввода имеет заголовок "клиент", а реквизит - "контрагент"? пользователю понятнее от этого не станет.
я бы все равно реализовал в виде экспортного метода формы возврат списка реквизитов (с заголовками и типам) которые _могут_ настраиваться, т.е. те, которые прям являются программным интерфейсом. потому что не всегда прям ВСЕ элементы можно настраивать. и еще один метод, принимающий структуру и распихивающий значения по нужным местам (+ выполняющий возможно другие необходимые обработчики). потому что в форме происходит не всегда тупая установка реквизитов,а иногда вызываются обработчики выбора, изменения, связи параметров выбора всякие срабатывают и прочее, и прочее. |
|||
33
Fragster
гуру
02.12.20
✎
13:51
|
решишь
|
|||
34
seraf
02.12.20
✎
13:57
|
(32) по полю ввода не решу конечно, по точному имени реквизита решил бы, в том и загвоздка, думал элементарного чего не знаю как из список получить
|
|||
35
Kassern
02.12.20
✎
13:59
|
Можно конечно таким вот способом извратиться))
1)Открываем из нашей формы, нужную форму обработки 2)ПриОткрытии в обработке формы пишем, если владелец = форма для получения реквизитов тогда на сервере получаем массив реквизитов, пихаем его в хранилище и адрес возвращаем ОповеститьОВыборе(Адрес) ну и конечно Откраз=истина; Форма так и не откроется по факту, а адрес с массивом передастся в обработку оповещения формы владельца. 3) в обработке оповещения получаем из хранилища массив реквизитов. Профит! Бинго! Костыль! Ну да ладно... |
|||
36
seraf
02.12.20
✎
14:06
|
(35) примерно туда и думаю уже раз иного не нашлось
|
|||
37
seraf
02.12.20
✎
14:07
|
(35) проблема в том что этих форм обработки три десятка и еще будет, в каждую надо лезть.
да ну нафиг всё это) |
|||
38
Kassern
02.12.20
✎
14:31
|
(37) Тогда общие элементы с отбором тебе в помощь)
|
|||
39
lodger
02.12.20
✎
15:43
|
(37) ну сделай расширение. туда перехватываешь все встроенные обработки.
во всех дополняешь метод ОбработкаОповещения и добавляешь одну контекстную серверную функцию. когда тебе надо получить реквизиты с другой формы пишешь Оповестить("ОтдайРеквизиты","ИмяЦелевойФормы") в обработке оповещения если ИмяСобытия = "ОтдайРеквизиты" И Параметр = ЭтаФорма.Имя Тогда Оповестить("ОтдаюРеквизиты",ВернутьСтруктуруРеквизитовСоЗначениями()); конецесли; &НаСервере Функция ВернутьСтруктуруРеквизитовСоЗначениями() // как то облазить реквизиты и собрать структуру, где можно навставлять имена, представления, типы значений и т.д. конецфу |
|||
40
Kassern
02.12.20
✎
16:56
|
(39) А если обработка внешняя?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |