Имя: Пароль:
1C
 
Работа с внешней обработкой в УФ на толстом клиенте
0 Ненавижу 1С
 
гуру
09.07.20
21:45
Как из управляемой формы внешней обработки в ТОЛСТОМ клиенте получить объект обработки на клиенте?

Объясню зачем. Есть внешняя обработка, она работает в тонком клиенте. В модуле обработки на сервере есть вызов COM-соединения.
Теперь надо ее запустить в другой базе, на другом сервере. На сервере не установлена COM-компонента и по определенным причинам доступа к его управлению нет.

Решено вызывать в толстом клиенте, но вся логика написана в модуле объекта. Переносить/дублировать в форму не хочется.
1 dka80
 
09.07.20
21:51
Реквизитформывзначение не доступны?
2 Ненавижу 1С
 
гуру
09.07.20
21:53
(1) конечно нет, он доступен на сервере
есть ДанныеФормыВЗначение, но нужно передать обязательным параметром тип объекта и вот тут ничего не получилось путного
3 Фрэнки
 
09.07.20
21:54
в контексте ФормаКлиентскогоПриложения (ClientApplicationForm)

РеквизитФормыВЗначение (FormAttributeToValue)
4 Ненавижу 1С
 
гуру
09.07.20
21:55
(3) ну нет:

Доступность:
Сервер, мобильное приложение (сервер).
5 Фрэнки
 
09.07.20
21:55
(2) Так создается &НаСервере
там же в модуле формы
6 Ненавижу 1С
 
гуру
09.07.20
21:56
(5) ДанныеФормыВЗначение доступен в толстом клиенте
7 acht
 
09.07.20
21:57
(0) Добавь обработке обычную, пустую форму обработки и укажи ее как дополнительную. При открытии в обычном приложении будет использоваться эта новая форма, а там дальше традиционный ЭтотОбъект и всетакое.
8 Ненавижу 1С
 
гуру
09.07.20
22:02
(7) и всю форму перерисовывать? еще и объяснять, что будет работать только в обычном приложении?

проще поднять еще один объект и его вызывать:

#Если ТолстыйКлиентУправляемоеПриложение Тогда
&НаКлиенте
Процедура КомандаЗаполнитьНаТолстомКлиенте()            
    Защита = Новый ОписаниеЗащитыОтОпасныхДействий;
    Защита.ПредупреждатьОбОпасныхДействиях = Ложь;
    Об = ВнешниеОбработки.Создать(Объект.ИмяФайла,Ложь,Защита);
    ЗаполнитьЗначенияСвойств(Об,Объект);
9 acht
 
09.07.20
22:06
(8) > всю форму перерисовывать?
Ты ж в (0) божился, что вся логика написана в модуле объекта. Передумал?
10 acht
 
09.07.20
22:09
И кста, у тебя ТолстыйКлиентУправляемоеПриложение или ТолстыйКлиентОбычноеПриложение с разрешением управялемых форм?
11 Ненавижу 1С
 
гуру
09.07.20
22:15
(9) логика в модуле, на форме интерфейс
(10) ТолстыйКлиентУправляемоеПриложение
12 Garykom
 
гуру
09.07.20
22:21
Нехер сувать в модуль объекта то что не относится к БД
13 Garykom
 
гуру
09.07.20
22:23
Не вижу простого способа реализовать классическую хотелку "вызова клиента с сервера"
Да можно подсунуть некий эмулятор в модуль объекта и прокинуть канал до клиента где и будет "установлена COM-компонента", которой из эмулятора будут команды приходить и назад в эмулятор на сервер.

Изврат.
14 Ненавижу 1С
 
гуру
09.07.20
22:54
(12) вот сейчас к чему это? Есть где-то методология, что "сувать" в модуль объекта внешней обработки?
(13) да не нужно вызывать с сервера клиента, нужно просто не вызывать сервер

в общем пока оставил как в (8)
15 acht
 
09.07.20
23:01
(14) А попробуй ради интереса упростить до

Об = Новый("ВнешняяОбработкаОбъект.<ИмяОбработки>");

Так как текущая обработка уже внешняя, то по идее должна быть уже загружена, подключена и тип уже определен. ЕМНИП, так встроенные типовые "все функции" делают со своими "v8res://"