Имя: Пароль:
1C
1С v8
Как получить ПутьКДанным элемента формы полученной
0 Deal with it
 
01.11.23
12:58
Доброго времени суток! Прошу помочь с такой задачей:

Получаю на клиенте форму документа:
Форма = ПолучитьФорму("Документ.ЗаказКлиента.ФормаОбъекта");

Теперь мне необходимо вычислить ПутьКДанным элемента этой формы из коллекции элементов, но никак не пойму как это вычислить, ведь это не текущая форма объекта(внешней обработки), а полученная и обратится к элементу на сервере через ЭтотОбъект.Элементы.Элемент не получится. Как быть? Может есть какой-то лайфхак?
1 Смотрящий
 
01.11.23
13:10
Элемент = Форма.Элементы.Найти("чтототам");
Если НЕ Элемент = Неопределено Тогда
2 Deal with it
 
01.11.23
13:17
(1) элемент я получаю, как получить ПутьКДанным этого элемента?
вот код на клиенте:

Для Каждого Элемент Из Элементы Цикл
        
Попытка
            
Если Элемент.Вид = ВидПоляФормы.ПолеВвода Тогда
                
    
ПоляФормы = Новый Структура("Имя, ПутьКДанным");
                
ПоляФормы.Имя = ?(Элемент.Заголовок = "", Элемент.Имя, Элемент.Заголовок);                
                
ПоляФормы.ПутьКДанным = ????
            
КонецЕсли;
            
        Исключение
            а=0;
        КонецПопытки;        
    КонецЦикла;
3 Смотрящий
 
01.11.23
13:47
(2) ПутьКДанным на клиенте недоступен
4 Deal with it
 
01.11.23
13:55
(3) я в курсе, потому и спрашиваю как его получить?
Например, можно ли как-то передать элемент на сервер?
Метод РеквизитФормыВЗначение не подходит, т.к. вызывается из самой формы, но она полученная, а находимся мы в форме внешней обработки
5 Смотрящий
 
01.11.23
14:15
Форма = ПолучитьФорму("Документ.ЗаказКлиента.ФормаОбъекта");
ОбработкаФормыНаСервере(Форма);
...

&НаСервере
Процедура ОбработкаФормыНаСервере(Форма)
Элемент = Форма.Элементы.Найти("чтототам");
Если НЕ Элемент = Неопределено Тогда
....

КоНейПроцедуры
6 Deal with it
 
01.11.23
14:31
(5) нельзя передать форму на сервер
7 arsik
 
гуру
01.11.23
14:39
(6) Можно. Нужно лишь вызвать серверную процедуру формы в форме.
8 Deal with it
 
01.11.23
15:15
(7) можно поподробнее этот момент?
9 arsik
 
гуру
01.11.23
15:30
&НаСервере
Процедура Команда1НаСервере()
	Сообщить(Элементы.Реквизит1.ПутьКДанным);
КонецПроцедуры

&НаКлиенте
Процедура Команда1(Команда)
	Команда1НаСервере();
КонецПроцедуры
10 arsik
 
гуру
01.11.23
15:46
А сорян. Ты же не из формы вызываешь.
11 Deal with it
 
01.11.23
16:20
(10) именно
Полается никак?
12 arsik
 
гуру
01.11.23
16:22
(11) Конфа на БСП?
13 Смотрящий
 
01.11.23
16:26
(6) какую ошибку пишет?
14 AlexeyKh
 
01.11.23
16:28
и ни кто не спросил, а зачем вам ПутьКДанным?
нууу в очень специфических случаях он бывает нужен,
почти ни когда
15 Deal with it
 
01.11.23
16:34
(12) УТ 11.5 типовая
16 Deal with it
 
01.11.23
16:35
(13) ошибка передачи данных между клиентом и сервером
17 Deal with it
 
01.11.23
16:35
(14) вот как раз такой случай, специфический
18 AlexeyKh
 
01.11.23
16:39
(17) ну хорошо, случай...
а все же, зачем, что вы хотите сдалеть?
возможно есть другие, простые пути.
19 arsik
 
гуру
01.11.23
16:41
(15) Ну можешь к какой ни будь шатной процедуре присосаться, которая вызывается в "ПриСозданииНаСервере"
Например
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект)
или
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект)

Там обработай что тебе нужно и куда ни будь в форму засунь соответствие элемента с путем
20 Смотрящий
 
01.11.23
17:51
(16) Нда ... Обычный квадратный юзер - копипасту ошибки религия сделать не позволяет.
Пихниыорму в соответствие, передавай соответствие
Программист всегда исправляет последнюю ошибку.