Получить значение элемента с управляемой формы #651937


#0 by Rizhij_Nikitos
Собственно задача поднималась мною пару дней назад и кое-как я решил вопрос, получаю на клиенте форму, открываю ее, перебираю все значения полей ввода и флажков, записываю имена таблиц, после чего закрываю форму и передаю инфу на сервак, клепаю простенький отчет о том как называется элемент и что содержит, в т.ч. отслеживаю на каких страницах что находится. Но вот косяк. Господа разработчики, как последние собаки, взяли и назвали реквизит немного не так, как называется элемент на форме, в итоге обращаясь к Форма[Элемент.Имя] или к Форма.Объект[Элемент.Имя], дабы получить его содержание, я вылетаю с ошибкой потому что Элемент.Имя=РеализацияПоЗаказу, а Форма.Объект[Элемент.Имя]=РеализацияПоЗаказам. Возник вопрос, как мне управляемую форму разобрать так, чтобы полностью получить имя реквизита, соответствующего полю на форме.
#1 by Rizhij_Nikitos
Вверх
#2 by GANR
Этот код должен выпоняться на сервере Форма[]
#3 by GANR
Форма[ИмяЭлемента].ПутьКДанным
#4 by Rizhij_Nikitos
Ты очень умный, скажи как мне форму на сервере получить?
#5 by GANR
В модуле формы можно сделать что-то вроде &НаСервере Ты хочешь передать форму в некий общий модуль так? Тогда дествия такие (с клиента, на сервер в качестве параметра ее передать нельзя) 2. серверный общий модуль Функция ТвояФункция(Форма)    ... КонецФункции Пойдет?
#6 by GANR
С клиента, на сервер в качестве параметра процедуры/функции форму передать нельзя. Обходной путь - зайти в подпрограмму с директивой &НаСервере.
#7 by Rizhij_Nikitos
Так объясню. Я выбираю на форме отчета любой справочник или документ, после чего выбираю объектдокумент. Надо получить его форму, после чего обойти все его элементы формы и вывести их названия и значения которые они содержат. Это внешний отчет и работать должно в любой типовой УТ11/КА1.1/БП3.0
#8 by GANR
Хм. ПолучитьФорму(...) только на клиенте работает. Да уж, вилы.
#9 by GANR
И метаданные, похоже, тоже не выход
#10 by Rizhij_Nikitos
Все было хорошо и даже получалось, пока совпадали имена реквизитов формы и пути к данным
#11 by MSII
Записать имена элементов, реквизитов и значения реквизитов в какую-то подходящую коллекцию и передать ее на сервер. В чем проблема? Или я неправильно понял задачу?
#12 by Rizhij_Nikitos
Имена всех элементов и я могу списать, реквизитов тоже. Как их сопоставить?
#13 by MSII
На клиенте же ты их можешь сопоставить. У элемента читаешь свойство ПутьКДанным, пишешь в коллекцию - имя элемента, его путь к данным, значение реквизита. Все это пакуй и на сервер. Нет?
#14 by Rizhij_Nikitos
Нет. У элемента на форме нет пути к данным, потому что как не странно, у элемента на форме нет доступа к данным. Путь к данным возможен только на сервере.
#15 by Rizhij_Nikitos
Вверз
#16 by V_V_V
Элементы не спасут отца?
#17 by Rizhij_Nikitos
предлагай
#18 by V_V_V
Если тебе данные нужно возвращать на сервер - почему не перебрать все элементы еще ПриСозданииНаСервере?
#19 by Rizhij_Nikitos
при создании на сервере чего? У меня внешний отчет. Я в нем получаю основную форму указанного документа или справочника.
#20 by MSII
Тогда беда. Жди, когда подписки на события форм появятся. Все ждем и ты жди. Или модифицируй форму.
#21 by Rizhij_Nikitos
все управляемые формы во всех конфах с управляемыми формами у всех клиентов?))))
#22 by Rizhij_Nikitos
начну сейчас, чтобы завтра уже поехать по клиентам ставить новый "релиз"...
#23 by MSII
Без паники. Предлагаю решение - обернуть присваивание в попытку, а в исключении сообщать - "Внимание! Имена реквизита формы и элемента формы различны! Немедленно внесите изменения в конфигурацию!" и на этом завершать построение отчета.
#24 by Rizhij_Nikitos
почти это и делаю, только я придумал так - записывать имя элемента и давать пользователю сопоставить со всеми объектами это имя элемента, типа как "Для элемента ХХХ не определен источник данных, пожалуйста определите имя реквизита, который является источником данных для данного реквизита:" И вываливается список всех объектов с возможностью выбора одного. А данные выбора засуну в отчет.
#25 by GANR
Пиши рационализаторское предложение разработчикам платформы на v8@1c.ru с указанием конфы, платформы, рег. номера программного продукта и фирмы (без этого - пошлют).
#26 by GANR
+ И ты, , пиши и убеждай.
#27 by НЕА123
#28 by НЕА123
#29 by НЕА123
мля... не мое
#30 by MSII
Да кто я такой. Им там, на Селезневской, виднее, что и как.
#31 by Rizhij_Nikitos
Одна проблема, для типов данных элементов на форме нет типов данных на сервере: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства 'param':    форма: Элемент    имя: { по причине: Ошибка отображения типов: Отсутствует отображение для типа 'ГруппаФормы'
#32 by Поросенок Петр
Жесть. 31 пост решается совсем другая проблема.
#33 by Rizhij_Nikitos
ты о чем?) В общем объясняю, что нужны отображения типов на сервере для того что бы передавать на сервер клиентские типы данных. Каждый раз определять что за тип и что то придумывать(а я честно даже не знаю, есть ли для этих типов отображения на сервере)...
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С