Имя: Пароль:
1C
1С v8
РеквизитФормыВЗначение()
, ,
0 Max Street
 
06.09.13
14:46
День добрый. Вчера задавал подобный вопрос, спасибо всем кто ответил, но не полностью разобрался
Объясните, пожалуйста, в чем преимущества/недостатки метода РеквизитФормыВЗначение("Объект"), если к тем же самым реквизитам можно обратиться через Объект.ИмяРеквизита?
1 hhhh
 
06.09.13
14:50
(0) ну вы знаете что на сервере невозможно обратиться к Объект.ИмяРеквизита. В этом преимущество метода РеквизитФормыВЗначение("Объект")
2 Max Street
 
06.09.13
14:56
(1) может я говорю не правильно, но почему нельзя?
вот например,

&НаСервере
Процедура авб()
Объект.Валюта = "";
КонецПроцедуры
3 GROOVY
 
06.09.13
14:58
4 hhhh
 
06.09.13
14:58
(2) ну, примитивные типы нас не интересуют. Попробуйте посложнее, например, таблицу значений.
5 GROOVY
 
06.09.13
14:59
Объект нужно получать для того, чтобы передать его в какой либо другой модуль, изменить его и вернуть обратно и переконвертировать обратно в данные формы.
6 GROOVY
 
06.09.13
15:00
(4) С ТЗ как реквизит объекта? Это что-то новое.
7 Odavid
 
06.09.13
15:00
(1)>.В этом преимущество метода РеквизитФормыВЗначение
не преимущество, а один из костылей для УФ при передачи данных сервер-клиент.
8 Max Street
 
06.09.13
15:05
(5) т.е РеквизитФормыВЗначение("Объект") используется для передачи в другой модуль и последующего изменения, правильно? я думал, это лишь частный случай
9 Лефмихалыч
 
модератор
06.09.13
15:07
(0) вот тут http://infostart.ru/public/198766/ прямым текстом отвечено на этот вопрос предельно подробно
10 Лефмихалыч
 
модератор
06.09.13
15:09
Между Объект.ИмяРеквизита и РеквизитФормыВЗначение("Объект").ИмяРеквизита нет ни какой разницы. Но вот методы модуля объекта из переменной Объект вызвать не получится, т.к. это не объект, а структура. Для этого нужно создать объект посредством РеквизитФормыВЗначение
11 Max Street
 
06.09.13
15:14
(10) спасибо, теперь вроде разобрался
Всем спасибо
12 hhhh
 
06.09.13
15:33
(6) да, работает вот такая фишка, как оказалось

    СписокВыбранных    = Новый СписокЗначений;
    СписокВыбранных.ЗагрузитьЗначения(РеквизитФормыВЗначение("ТабличноеПолеВидыОбъектов").ВыгрузитьКолонку("ИмяТаблицы"));

где ТабличноеПолеВидыОбъектов - реквизит формы типа таблица значений.

а если просто написать


СписокВыбранных.ЗагрузитьЗначения(Объект.ТабличноеПолеВидыОбъектов.ВыгрузитьКолонку("ИмяТаблицы"));


не работает.
13 Odavid
 
06.09.13
15:37
А что, торлько я знал, что ТЗ можно передавать в РеквизитВЗначение?!
Вообще, там и весь объект-форму можно передавать... Об этом тоже знаю только я - стойкий защитник обычных форм?
14 Зойч
 
06.09.13
15:40
Без этого метода не вызвать процедуру из модуля
15 Зойч
 
06.09.13
15:40
(14) собственно только для этого он и нужен
16 Лефмихалыч
 
модератор
06.09.13
15:48
тока надо помнить, что всякий раз, как вы вызываете РеквизитФормыВЗначение("%РЕВИЗИТ%"), все данные реквизита %РЕВИЗИТ% сериализуются и ломятся на сервер
17 Odavid
 
06.09.13
16:20
(16) а что делать, если 1с так захотелось, и все, с утра - замсуж, а реализовать нормальную передачу данных она "не шмогла"? ))
18 Odavid
 
06.09.13
16:20
*замуж
19 Лефмихалыч
 
модератор
06.09.13
17:02
(17) что ненормального в передаче данных, реализованной в 1С?