Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

ПолучитьМакет внешней обработки НаСервереБезКонтекста - есть варианты?

ПолучитьМакет внешней обработки НаСервереБезКонтекста - есть варианты?
Я
   camojiet
 
05.09.16 - 07:36
По идее должна работать схема:

&НаКлиенте
Процедура ОбновитьДиаграмму(Команда)
    ОбновитьТД(ДиаграммаПогруженных,Объект);
КонецПроцедуры

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


Но ругается на Тип.

При этом

&НаСервере
Процедура ОбновитьТД(ТабДок,Знач Объект)// Тут пришлось вставить знач, только для подтверждения эксперемента

    Обработка  = ДанныеФормыВЗначение(Объект,Тип("ВнешняяОбработкаОбъект.РабочийСтолСборники"));
КонецПроцедуры// ОбновитьТабДок()


Объект получен без проблем.

Далее выясняется что ТипЗнч(РеквизитФормыВЗначение("Объект")) и Тип("ВнешняяОбработкаОбъект.РабочийСтолСборники") возвращают одно и то же, но не они не равны друг другу. :s

http://screencast.com/t/fQIakGuGeg

Проблема не критичная, но приходится часто разрабатывать внешние обработки, и приходится каждый раз когда мне надо обновить содержимое табличного документа гонять контекст на сервер и обратно. В интернете шукал - не нашёл подходящей методы. Сам не допёр. Может есть метода какая?
 
 
   zak555
 
1 - 05.09.16 - 07:38
Объект -- реквизит формы => нужен контекст
   camojiet
 
2 - 05.09.16 - 07:55
Придумал дегродный, но рабочий вариант.


&НаСервере
ТипОбработки = ЗначениеВСтрокуВнутр(ТипЗнч(РеквизитФормыВЗначение("Объект")));// Это реквизит формы "Строка" бесконечной длины


КонецПроцедуры

Ну а дальше

&НаКлиенте
Процедура ОбновитьДиаграмму(Команда)
    ОбновитьТД(ДиаграммаПогруженных,Объект,ТипОбработки);
КонецПроцедуры

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

    //Обработка  = ДанныеФормыВЗначение(Объект,ТипЗнч(РеквизитФормыВЗначение("Объект")));

    Обработка  = ДанныеФормыВЗначение(Объект,ЗначениеИзСтрокиВнутр(Тип));
КонецПроцедуры// ОбновитьТабДок()


И усё работает. Может кто-то предложит лучше?
   camojiet
 
3 - 05.09.16 - 07:57
Неправильно скопировал.
ТипОбработки  заполняется ПриСозданииНаСервере.

Короче тупо - но работает. Контекст не нужен.
   DrZombi
 
4 - 05.09.16 - 08:53
(2) Отстой...
Проще вообще в твою функцию передать макет :)
Код же работает на сервере :)
   DrZombi
 
5 - 05.09.16 - 08:53
(3) Да что ты там к типу привязалси? :)
   DrZombi
 
6 - 05.09.16 - 09:25
(3) Спасибо... не ожидал, что не так просто передать тип :)
   camojiet
 
7 - 05.09.16 - 09:35
(4) Вы имеете в виду ЗначениеВСтрокуВнутр(РеквизитФормыВЗначение("Объект").ПолучитьМакет()); ?
Ну наверное так тоже можно :)
   DrZombi
 
8 - 05.09.16 - 09:39
(7) Не обращай на это. Это было еще до того, как я попробовал :)
   DrZombi
 
9 - 05.09.16 - 09:43
+(8)  Можно в качестве реквизита формы вообще указать ТабличныйДокумент.

Любопытно, только как это все скажется на объеме данных? :)
   camojiet
 
10 - 05.09.16 - 09:43
Смех смехом а не ясно ещё, что меньше по объёму - передавать на сервер ДанныеФормы "Объект", или сразу Макет. Если макет небольшой (в моём случае он микроскопический), то скорее всего макет будет меньше. Не буду врать - не знаю что конкретно передается на сервер в виде ДанныхФормы.
 
 Рекламное место пустует
   DrZombi
 
11 - 05.09.16 - 09:43
+ Передаваемых от Клиента на сервер.
   DrZombi
 
12 - 05.09.16 - 09:44
(10) 1С и правду, как то не дали механизм получения Типов без контекста :(

Ведь по ИД этот тип есть, просто мы о нем не знаем :)
   camojiet
 
13 - 05.09.16 - 10:06
Короче сделал через макет. Так как получается, что передавая на сервер данные формы "Объект" я передаю весь объект, в том числе и макет. Зачем передавать всё, если можно передать только макет.
Ну и не имеет смысла передавать ТабДок на сервер, так как он всё равно там первым делом у меня очищается. Сделаю функцией и передам табдок через возврат.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует