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