|
ПолучитьМакет внешней обработки НаСервереБезКонтекста - есть варианты? | ☑ | ||
---|---|---|---|---|
0
camojiet
05.09.16
✎
07:36
|
По идее должна работать схема:
&НаКлиенте Процедура ОбновитьДиаграмму(Команда) ОбновитьТД(ДиаграммаПогруженных,Объект); КонецПроцедуры &НаСервереБезКонтекста Процедура ОбновитьТД(ТабДок,Объект) Обработка = ДанныеФормыВЗначение(Объект,Тип("ВнешняяОбработкаОбъект.РабочийСтолСборники")); КонецПроцедуры // ОбновитьТабДок() Но ругается на Тип. При этом &НаСервере Процедура ОбновитьТД(ТабДок,Знач Объект) // Тут пришлось вставить знач, только для подтверждения эксперемента Обработка = ДанныеФормыВЗначение(Объект,Тип("ВнешняяОбработкаОбъект.РабочийСтолСборники")); КонецПроцедуры // ОбновитьТабДок() Объект получен без проблем. Далее выясняется что ТипЗнч(РеквизитФормыВЗначение("Объект")) и Тип("ВнешняяОбработкаОбъект.РабочийСтолСборники") возвращают одно и то же, но не они не равны друг другу. :s http://screencast.com/t/fQIakGuGeg Проблема не критичная, но приходится часто разрабатывать внешние обработки, и приходится каждый раз когда мне надо обновить содержимое табличного документа гонять контекст на сервер и обратно. В интернете шукал - не нашёл подходящей методы. Сам не допёр. Может есть метода какая? |
|||
1
zak555
05.09.16
✎
07:38
|
Объект -- реквизит формы => нужен контекст
|
|||
2
camojiet
05.09.16
✎
07:55
|
Придумал дегродный, но рабочий вариант.
&НаСервере ТипОбработки = ЗначениеВСтрокуВнутр(ТипЗнч(РеквизитФормыВЗначение("Объект"))); // Это реквизит формы "Строка" бесконечной длины КонецПроцедуры Ну а дальше &НаКлиенте Процедура ОбновитьДиаграмму(Команда) ОбновитьТД(ДиаграммаПогруженных,Объект,ТипОбработки); КонецПроцедуры &НаСервереБезКонтекста Процедура ОбновитьТД(ТабДок,Знач Объект,Тип) //Обработка = ДанныеФормыВЗначение(Объект,Тип("ВнешняяОбработкаОбъект.РабочийСтолСборники")); //Обработка = ДанныеФормыВЗначение(Объект,ТипЗнч(РеквизитФормыВЗначение("Объект"))); Обработка = ДанныеФормыВЗначение(Объект,ЗначениеИзСтрокиВнутр(Тип)); КонецПроцедуры // ОбновитьТабДок() И усё работает. Может кто-то предложит лучше? |
|||
3
camojiet
05.09.16
✎
07:57
|
Неправильно скопировал.
ТипОбработки заполняется ПриСозданииНаСервере. Короче тупо - но работает. Контекст не нужен. |
|||
4
DrZombi
гуру
05.09.16
✎
08:53
|
(2) Отстой...
Проще вообще в твою функцию передать макет :) Код же работает на сервере :) |
|||
5
DrZombi
гуру
05.09.16
✎
08:53
|
(3) Да что ты там к типу привязалси? :)
|
|||
6
DrZombi
гуру
05.09.16
✎
09:25
|
(3) Спасибо... не ожидал, что не так просто передать тип :)
|
|||
7
camojiet
05.09.16
✎
09:35
|
(4) Вы имеете в виду ЗначениеВСтрокуВнутр(РеквизитФормыВЗначение("Объект").ПолучитьМакет()); ?
Ну наверное так тоже можно :) |
|||
8
DrZombi
гуру
05.09.16
✎
09:39
|
(7) Не обращай на это. Это было еще до того, как я попробовал :)
|
|||
9
DrZombi
гуру
05.09.16
✎
09:43
|
+(8) Можно в качестве реквизита формы вообще указать ТабличныйДокумент.
Любопытно, только как это все скажется на объеме данных? :) |
|||
10
camojiet
05.09.16
✎
09:43
|
Смех смехом а не ясно ещё, что меньше по объёму - передавать на сервер ДанныеФормы "Объект", или сразу Макет. Если макет небольшой (в моём случае он микроскопический), то скорее всего макет будет меньше. Не буду врать - не знаю что конкретно передается на сервер в виде ДанныхФормы.
|
|||
11
DrZombi
гуру
05.09.16
✎
09:43
|
+ Передаваемых от Клиента на сервер.
|
|||
12
DrZombi
гуру
05.09.16
✎
09:44
|
(10) 1С и правду, как то не дали механизм получения Типов без контекста :(
Ведь по ИД этот тип есть, просто мы о нем не знаем :) |
|||
13
camojiet
05.09.16
✎
10:06
|
Короче сделал через макет. Так как получается, что передавая на сервер данные формы "Объект" я передаю весь объект, в том числе и макет. Зачем передавать всё, если можно передать только макет.
Ну и не имеет смысла передавать ТабДок на сервер, так как он всё равно там первым делом у меня очищается. Сделаю функцией и передам табдок через возврат. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |