|
Внешняя обработка заполнения объекта в УФ. Как добраться до формы объекта | ☑ | ||
---|---|---|---|---|
0
zalexey
15.02.17
✎
18:37
|
Делаю внешнюю обработку заполнения объекта и никак не могу понять один момент:
Пользователь вызывает из объекта заполнение. На экране появляется форма (чтобы он выбрал файлы), дальше нажимает загрузить и данные из этих файлов грузятся в документ. А потом нужно вызвать процедуру общего модуля, который доступен только на сервере и туда передать форму документа. Если у внешней обработки поставить тип "ВызовСерверногоМетода", то в вызываемой процедуре можно достучаться до формы документа через "ПараметрыВыполнения.ЭтаФорма", но в этом случае не могут пользователю показать форму для выбора файлов. Если у внешней обработки ставлю тип "ОткрытиеФормы", то пользователь может выбрать файлы, но тогда не понимаю как вызвать серверную процедуру ОМ и туда передать форму документа. Процедуру ОМ нужну вызвать, чтобы после загрузки заполнились недостающие данные и обновилась видимость элементов стандартными средствами конфигурации (все выносить к себе в обработку не хочется). Есть варианты? |
|||
1
h-sp
15.02.17
✎
18:47
|
ВызовКлиентскогоМетода ставьте.
|
|||
2
zalexey
15.02.17
✎
18:51
|
(1) а где форма объекта будет в этом случае? Вроде там, в отличии от серверного метода, уже не передаются ПараметрыВыполнения
|
|||
3
LienXo
15.02.17
✎
19:03
|
Форму не передашь. Если на форме нет левых полей - реквизтформывзначение(объект) и передай объект, Если есть - заполни и передай структуру
|
|||
4
jsmith82
15.02.17
✎
19:04
|
(2) ЭтаФорма.ВладелецФормы
|
|||
5
zalexey
15.02.17
✎
20:21
|
(4) НаСервере на эту конструкцию ругается, а с клиента нельзя передать УФ в серверную процедуру
|
|||
6
Defender aka LINN
15.02.17
✎
21:37
|
(0) Тебе надо не то, что ты изобрел, а по ссылке заполнить документ и записать его.
|
|||
7
Garykom
гуру
15.02.17
✎
21:46
|
(0) >Есть варианты?
Есть. |
|||
8
jsmith82
15.02.17
✎
21:58
|
Зачем форму документа передавать? Не проще объект?
|
|||
9
jsmith82
15.02.17
✎
21:59
|
Понятно, "управление формой" на сервере. Эко закрутил
|
|||
10
jsmith82
15.02.17
✎
22:02
|
Сделай у формы документа экспортную процедуру УправлениеФормойНаСервере на сервере с обращением к ОМ
И из формы обработки пиши ЭтаФорма.УправлениеФормойНаСервере() |
|||
11
Cyberhawk
15.02.17
✎
22:44
|
"потом нужно вызвать процедуру общего модуля, который доступен только на сервере и туда передать форму документа" // Сделать это можно только из серверного контекста формы. Дальше подумай.
|
|||
12
zalexey
16.02.17
✎
00:55
|
(6) Объект заполнен корректно после загрузки. Грубо говоря пользователь загрузил данные за период с 1 по 10, нужно чтобы на форме остались только столбцы с 1 по 10, остальное скрылось.
Если документ закрыть и открыть, то все будет красиво, я же хочу, чтобы столбцы скрылись (по факту там много чего еще) сразу после загрузки данных. В типовой за это отвечает серверная процедура, которая вызывается при изменении реквизита формы. Эту процедуру я их хочу вызвать после загрузки. (8) Объект не прокатывает. ОМ ругается (9) Ну вот как это еще назвать, если не управление формой на сервере? &НаСервере Процедура ПериодРегистрацииПриИзменении() УчетРабочегоВремениРасширенныйФормы.ТабельПериодРегистрацииПриИзменении(ЭтаФорма); КонецПроцедуры (10) нужно без изменений конфигураций обойтись |
|||
13
zalexey
16.02.17
✎
01:00
|
(11) не соображу, прошу помоще :)
Дело в том, что в контекст формы не передается "форма документа", она доступна только если используется тип "ВызовСерверногоМетода", но в этом случае же не могу я вызвать клиент и показать форму внешней обработки. |
|||
14
Сергиус
16.02.17
✎
01:03
|
(12)Перенеси функцию заполнения в обработку
|
|||
15
toypaul
гуру
16.02.17
✎
08:48
|
Нужно открывать обработку на клиенте. Например объявив через "ОткрытьФорму", а владелец будет доступен как ВладелецФормы.
|
|||
16
toypaul
гуру
16.02.17
✎
08:52
|
Если после загрузки нужно обновить форму, а нее нет экспортного метода, то ты попал. Либо конфигурацию менять, либо записывать и открывать снова, а может посмотреть форму - может там есть обработка каких-то событий на изменение формы.
|
|||
17
Cyberhawk
16.02.17
✎
09:19
|
(13) "контекст формы не передается "форма документа", она доступна только если используется тип "ВызовСерверногоМетода"" // На клиенте клиентский контекст формы-владельца доступен. На сервер ты передать эту форму-владелец не можешь. Чтобы стал доступен на сервере серверный контекст формы-владельца, надо прыгнуть в ее контекстную серверную процедуру. Вызови как-нибудь (например, через оповещение из своего кода).
|
|||
18
Defender aka LINN
16.02.17
✎
09:51
|
(12) ЭтаФорма.Владелец.Прочитать()
|
|||
19
Cyberhawk
16.02.17
✎
12:47
|
Предложенный в (6) вариант будет не айс в плане удобства, т.к. пользователь не будет иметь возможность откатить сделанные обработкой заполнения _объекта_ изменения, т.к. по факту эти изменения сразу будут записаны в БД. Плюс это не спасает от придумывания способа вызова какого-нибудь отдельного специального обработчика перерисовки элементов формы, т.е. (18) не прокатит.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |