|
Заполнить ТЗ управляемой формы НаСервереБезКонтекста |
☑ |
0
starz555
17.05.13
✎
10:15
|
При попытке воспользоваться ДанныеФормыВЗначение и ЗначениеВДанныеФормы на сервере, передав ДанныеФормыКоллекция параметрос не получается ("Нельзя изменять поле, содержащее объект данных формы
"). Есть ли вообще такая возможность или даже не пытаться?
&НаКлиенте
Процедура заполнить(Команда)
ЗаполнитьНаСервере(ТаблицаНаФорме);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ЗаполнитьНаСервере(ТаблицаНаФорме)
ТЗ = ДанныеФормыВЗначение(ТаблицаНаФорме, Тип("ТаблицаЗначений")) ;
Стр = ТЗ.добавить();
Стр.Кол = "чупакабра";
ЗначениеВДанныеФормы(ТЗ, ТаблицаНаФорме) ;
КонецПроцедуры
|
|
1
Maxus43
17.05.13
✎
10:30
|
с контекстом делай, ибо меняешь данныеи формы
|
|
2
starz555
17.05.13
✎
10:34
|
(1) а на хрена тогда вообще существует ЗначениеВДанныеФормы? Тогда хватило бы и ЗначениеВРеквизитФормы. Или я не догоняю чего-то?
|
|
3
starz555
17.05.13
✎
10:39
|
просто форма достаточно "тяжелая", не хочется ее на сервер отправлять и обратно. Получается только в контекстном это возможно, через ЗначениеВРеквизитФормы?
|
|
4
rozer76
17.05.13
✎
11:03
|
по ссылке нельзя передавать - платформа на знает что происходит у тебя в этой процедуре и не важно "насервере" или "насерверебезконтекста" только по значению можно ... (Знач ТаблицаНаФорме)
|
|
5
rozer76
17.05.13
✎
11:11
|
(2) ЗначениеВДанныеФормы - ну это весь объект преобразовывает. Обычно в самой УФ используют ЗначениеВРеквизитФормы.
|
|
6
starz555
17.05.13
✎
11:14
|
(5) Со ЗначениеВРеквизитФормы все понятно.
(4) Вы так имеете в виду?:
&НаКлиенте
Процедура заполнить(Команда)
ТаблицаНаФорме = ЗаполнитьНаСервере(ТаблицаНаФорме);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ЗаполнитьНаСервере(Знач ТаблицаНаФорме)
ТЗ = ДанныеФормыВЗначение(ТаблицаНаФорме, Тип("ТаблицаЗначений")) ;
Стр = ТЗ.добавить();
Стр.Кол = "чупакабра";
ЗначениеВДанныеФормы(ТЗ, ТаблицаНаФорме) ;
Возврат ТаблицаНаФорме;
КонецФункции
|
|
7
starz555
17.05.13
✎
11:16
|
(6) все равно не получается
|
|
8
vvp91
17.05.13
✎
11:32
|
Не надо никаких данных/реквизитов формы в значение использовать, не занимайтесь ерундой.
Функция дикая получилась - принимаем по значению всю коллекцию, потом ее изменяем и возвращаем. Жесточайший переизбыток данных.
Достаточно в процедуру передать ДанныеФормыКоллекция и эти данные заполнить:
&НаСервереБезКонтекста
Процедура ЗаполнитьСервер(Коллекция)
ЭлементКоллекции = Коллекция.Добавить();
ЭлементКоллекции.Кол = "чупакабра";
КонецПроцедуры
Дальше форма все сама сделает - вернет что надо на клиента, покажет изменения и т.п.
|
|
9
starz555
17.05.13
✎
11:39
|
(8) vvp91, спасибо большое! чуть позже попробую
|
|