Имя: Пароль:
1C
 
Текущие данные (управляемая форма)
0 gaur777
 
28.09.17
17:00
Подскажите пожалуйста. Перевожу базу с обычной на управляемую форму. в одной из обработок, на обычной форме при нажатие кнопки данные брались с табличной части таким образом:

ТекущиеДанные = Элементы.ВходящиеПартии.ТекущиеДанные;

Теперь на управляемой выводит ошибку:
( Ошибка при получении значения атрибута контекста (ТекущиеДанные)
    ТекущиеДанные = Элементы.ВходящиеПартии.ТекущиеДанные;
по причине:
Текущие данные таблицы недоступны на сервере )

ВходящиеПартии - табличная часть
Вроде не сложно. Но как исправить не пойму
1 gaur777
 
28.09.17
17:01
На клиенте выполняю, пишет: ... поле не является объектным типом
2 mxs089
 
28.09.17
17:02
получить по идентификатору
3 vicof
 
28.09.17
17:03
ВходящиеПартии не только имя табличной часть, но и имя элемента формы. Одна доступна на сервере, второй на клиенте.
4 vicof
 
28.09.17
17:03
части*
5 ribuh
 
28.09.17
17:07
Интересно, а всё же что быстрее, в конфигураторе поставить точку останова на проблемной строке и посмотреть в режиме отладки, что там есть и что можно использовать, или создать тута темку и узнать много нового, чаще всего не о вопросе, а о себе (неичего личного, просто интересно))))))
6 gaur777
 
28.09.17
17:08
(3) ну так и как быть?
выполняю вот на сервере

ТекущиеДанные = Объект.ВходящиеПартии.ТекущиеДанные;

Enterprise    =  ТекущиеДанные.Площадка;


Ошибка! Площадка одно из полей
7 vicof
 
28.09.17
17:11
ТекущиеДанные = Объект.ВходящиеПартии.ТекущиеДанные;

выполняй на клиенте
8 dezss
 
28.09.17
17:11
(6) у тч нет тек. данных...передавай их с клиента.
9 gaur777
 
28.09.17
17:14
(7) (8) - (1) прочитайте
10 gaur777
 
28.09.17
17:15
хотя задаю переменную
Перем ТекущиеДанные;
11 dezss
 
28.09.17
17:15
(9) что показывает отладка???
12 dezss
 
28.09.17
17:15
и вообще, строка какая-нибудь выделена?
13 vicof
 
28.09.17
17:16
"...поле не является объектным типом"
какое?
14 dezss
 
28.09.17
17:17
(12) т.к. при невыделенном ТекущиеДанные = Неопределено
15 gaur777
 
28.09.17
17:18
(11) как я могу проверить отладчиком если этой строке выходит ошибка?
16 gaur777
 
28.09.17
17:19
(12) (14) стоит условие
Если ТекущиеДанные = Неопределено Тогда
        Возврат;
КонецЕсли;
17 gaur777
 
28.09.17
17:20
(13) ну естественно первое которое выбирается в коде.
я же объясняю в обычном приложение всё работало
18 ribuh
 
28.09.17
17:23
(15) дык на этой строке точку останова поставить, и смотреть, что там.........
19 gaur777
 
28.09.17
17:27
(18) текущиеданные - не является полем объектного типа
20 ribuh
 
28.09.17
17:30
(19) До текущих данных смотрим, что там есть
в Элементах смотрим что есть
в Объекте смотрим, что есть
ищем, где собака порылась, тьфу, блин, где есть то, что нам нужно...у Вас шансов намного больше, чем у советчиков тут - потому как всё перед глазами - нужно только найти, что хочется)))))
21 YAGolova
 
28.09.17
17:31
(19) Во общем, вам надо изменить в своей голове парадигму программирования. То что было разрешено в толстом клиенте на обычных формах - ниразу не разрешено в тонком. текущие данные у табличной части доступны только на клиенте
22 dezss
 
29.09.17
09:12
(15) блин, ну ты же прямо ПЕРЕД выполнением этой строки можешь посмотреть на значения всех используемых в ней сущностей!!!
23 gaur777
 
29.09.17
11:06
Просто объясните. Как в управляемой форме получить значение по выбранной строке
24 vicof
 
29.09.17
11:09
Значение чего?
25 oslokot
 
29.09.17
11:18
(0) Все должно работать, попробуй переименовать табличное поле, скорей всего проблема в (3)

ТекущиеДанные = Элементы.ТабличноеПоле1.ТекущиеДанные;
(на клиенте)
26 gaur777
 
29.09.17
11:40
(25) дело в том, что текущиеданные отладчик показывает нормально. тоесть все поля табличной части там есть.
но дело такое, что поля которые я заполняю отрабатываются на сервере:

Функция ПодготовитьОбъект_ConsignorXDTO(ФабрикаВЕТИС,ПараметрыЗапроса)
    
    Consignor        = ФабрикаВЕТИС.Создать("http://api.vetrf.ru/schema/cdm/cerberus/enterprise";,  "BusinessMember");
    Enterprise         = ФабрикаВЕТИС.Создать("http://api.vetrf.ru/schema/cdm/cerberus/enterprise";,  "Enterprise");
    BusinessEntity     = ФабрикаВЕТИС.Создать("http://api.vetrf.ru/schema/cdm/cerberus/enterprise";,  "BusinessEntity");
        
    Enterprise.uuid            = ТекущиеДанные.UUIDПлощадкиОтправителя;
    BusinessEntity.uuid        = ТекущиеДанные.UUIDХСОтправителя;
    
    Consignor.enterprise        = Enterprise;
    Consignor.businessEntity    = BusinessEntity;    
    
    Возврат Consignor;
    
КонецФункции
27 gaur777
 
29.09.17
11:40
поэтому значение текущиеданные не находит
28 oslokot
 
29.09.17
12:47
ну значит на сервере получай нужную строку  Объект.ВходящиеПартии[НомерТекСтроки] и обрабатывай
29 gaur777
 
29.09.17
14:05
(28) мне нужно не по номеру строки
а по выбранной строки
30 famnam
 
29.09.17
14:09
%НаКлиенте
ТекДанные = Элементы.ТЧ.ТекущиеДанные;

ОбработатьНаСервере(ТекДанные.ПолучитьИдентификатор());

&НаСервере
Процедура ОбработатьНаСервере(Идентификатор)
ТекДанные = Объект.ТЧ.НайтиПоИдентификатору(Идентификатор);
ТекДанные.Площадка = ...;
Конецпроцедуры