Внешняя обработка заполнения объекта в УФ. Как добраться до формы объекта #791307


#0 by zalexey
Делаю внешнюю обработку заполнения объекта и никак не могу понять один момент: Пользователь вызывает из объекта заполнение. На экране появляется форма (чтобы он выбрал файлы), дальше нажимает загрузить и данные из этих файлов грузятся в документ. А потом нужно вызвать процедуру общего модуля, который доступен только на сервере и туда передать форму документа. Если у внешней обработки поставить тип "ВызовСерверногоМетода", то в вызываемой процедуре можно достучаться до формы документа через "ПараметрыВыполнения.ЭтаФорма", но в этом случае не могут пользователю показать форму для выбора файлов. Если у внешней обработки ставлю тип "ОткрытиеФормы", то пользователь может выбрать файлы, но тогда не понимаю как вызвать серверную процедуру ОМ  и туда передать форму документа. Процедуру ОМ нужну вызвать, чтобы после загрузки заполнились недостающие данные и обновилась видимость элементов стандартными средствами конфигурации (все выносить к себе в обработку не хочется). Есть варианты?
#1 by h-sp
ВызовКлиентскогоМетода ставьте.
#2 by zalexey
а где форма объекта будет в этом случае? Вроде там, в отличии от серверного метода, уже не передаются ПараметрыВыполнения
#3 by LienXo
Форму не передашь. Если на форме нет левых полей - реквизтформывзначение(объект) и передай объект, Если есть - заполни и передай структуру
#4 by jsmith82
ЭтаФорма.ВладелецФормы
#5 by zalexey
НаСервере на эту конструкцию ругается, а с клиента нельзя передать УФ в серверную процедуру
#6 by Defender aka LINN
Тебе надо не то, что ты изобрел, а по ссылке заполнить документ и записать его.
#7 by Garykom
>Есть варианты? Есть.
#8 by jsmith82
Зачем форму документа передавать? Не проще объект?
#9 by jsmith82
Понятно, "управление формой" на сервере. Эко закрутил
#10 by jsmith82
Сделай у формы документа экспортную процедуру УправлениеФормойНаСервере на сервере с обращением к ОМ И из формы обработки пиши ЭтаФорма.УправлениеФормойНаСервере
#11 by Cyberhawk
"потом нужно вызвать процедуру общего модуля, который доступен только на сервере и туда передать форму документа" // Сделать это можно только из серверного контекста формы. Дальше подумай.
#12 by zalexey
Объект заполнен корректно после загрузки. Грубо говоря пользователь загрузил данные за период с 1 по 10, нужно чтобы на форме остались только столбцы с 1 по 10, остальное скрылось. Если документ закрыть и открыть, то все будет красиво, я же хочу, чтобы столбцы скрылись (по факту там много чего еще) сразу после загрузки данных. В типовой за это отвечает серверная процедура, которая вызывается при изменении реквизита формы. Эту процедуру я их хочу вызвать после загрузки. Объект не прокатывает. ОМ ругается Ну вот как это еще назвать, если не управление формой на сервере? нужно без изменений конфигураций обойтись
#13 by zalexey
не соображу, прошу помоще :) Дело в том, что в контекст формы не передается "форма документа", она доступна только если используется тип "ВызовСерверногоМетода", но в этом случае же не могу я вызвать клиент и показать форму внешней обработки.
#14 by Сергиус
Перенеси функцию заполнения в обработку
#15 by toypaul
Нужно открывать обработку на клиенте. Например объявив через "ОткрытьФорму", а владелец будет доступен как ВладелецФормы.
#16 by toypaul
Если после загрузки нужно обновить форму, а нее нет экспортного метода, то ты попал. Либо конфигурацию менять, либо записывать и открывать снова, а может посмотреть форму - может там есть обработка каких-то событий на изменение формы.
#17 by Cyberhawk
"контекст формы не передается "форма документа", она доступна только если используется тип "ВызовСерверногоМетода"" // На клиенте клиентский контекст формы-владельца доступен. На сервер ты передать эту форму-владелец не можешь. Чтобы стал доступен на сервере серверный контекст формы-владельца, надо прыгнуть в ее контекстную серверную процедуру. Вызови как-нибудь (например, через оповещение из своего кода).
#18 by Defender aka LINN
ЭтаФорма.Владелец.Прочитать
#19 by Cyberhawk
Предложенный в вариант будет не айс в плане удобства, т.к. пользователь не будет иметь возможность откатить сделанные обработкой заполнения _объекта_ изменения, т.к. по факту эти изменения сразу будут записаны в БД. Плюс это не спасает от придумывания способа вызова какого-нибудь отдельного специального обработчика перерисовки элементов формы, т.е. не прокатит.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С