|   |   | 
| 
 | Перебор реквизитов упр формы | ☑ | ||
|---|---|---|---|---|
| 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) А если обработка внешняя?     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |