|
клиентский и серверный контекст формы в общих модулях | ☑ | ||
---|---|---|---|---|
0
vde69
03.10.19
✎
10:20
|
есть 3 модуля
1. модуль формы там есть: &НаКлиенте Процедура ОбработкаОповещения(.....) КлиентскийМодуль.ОбработкаОповещения(ЭтотОбъект) КонецПроцедуры 2. клиентский общий модуль Процедура ОбработкаОповещения(Форма) Экспорт .... СерверныйМодуль.ОбработкаОповещения(Форма.ЭтотОбъект) // вот тут ругается .... КонецПроцедуры 3. серверный общий модуль Процедура ОбработкаОповещения(Форма) Экспорт .... .... .... КонецПроцедуры вопрос: как можно из клентского общего модуля передать на сервер серверный контекст формы, ну очень не хочется делать кучу одинакового кода в формах... Ведь есть реально работающий вызов из модуля формы: 1. модуль формы &НаКлиенте Процедура ОбработкаОповещения(.....) КлиентскийМодуль.ОбработкаОповещения(ЭтотОбъект) КонецПроцедуры &НаСервере Процедура ОбработкаОповещенияНаСервере() СерверныйМодуль.ОбработкаОповещения(ЭтотОбъект) // тут все работает КонецПроцедуры 2. серверный общий модуль Процедура ОбработкаОповещения(Форма) Экспорт .... .... .... КонецПроцедуры |
|||
1
hhhh
03.10.19
✎
10:28
|
(0) наверно галочку Вызов сервера забыли поставить в общем модуле.
|
|||
2
vde69
03.10.19
✎
10:31
|
ошибка не видимости модула а преобразования параметра, то есть он не может преобразовать клиентский контекст формы в серверный
|
|||
3
asady
03.10.19
✎
10:32
|
(0) буквально вчера этот же вопрос стоял.
Я тоже обратил внимание что форму можно передавать на сервер только в модуле формы а в общих модулях возможностей не нашел. Но потом подумал и решил что наверное в этом есть своя логика переделал свою поделку и больше не долбился об эту сосну |
|||
4
asady
03.10.19
✎
10:33
|
93) я думаю разрабы хотели развести клиентский функционал с серверным таким образом
|
|||
5
RomanYS
03.10.19
✎
10:35
|
(2) Разве ошибка не "Нельзя изменять..."?
|
|||
6
vde69
03.10.19
✎
10:36
|
(3) ну у меня около 20 документов, и в каждом свои заморочки... хочется в одном месте править а не в 20...
проблема в том, что ОбработкаОповещения очень разная и мне надо обработать только несколько своих, а параметры разношерстные и все обрабатывать на сервере я не могу, банально параметры некоторых событий не лезут на сервер, по этому мне надо сначала на клиенте отфильтровать параметры а потом вызывать общую серверную процедуру |
|||
7
RomanYS
03.10.19
✎
10:37
|
*(5) вопрос отменяется
посчитал, что СерверныйМодуль.ОбработкаОповещения(Форма.ЭтотОбъект) это передача данных формы. Зачем здесь ".ЭтотОбъект"? |
|||
8
vde69
03.10.19
✎
10:37
|
(5) ошибка:
отсутствует отображение для типа "управляемая форма" |
|||
9
Василий Алибабаевич
03.10.19
✎
10:40
|
(8) А зачем форма на сервере?
|
|||
10
vde69
03.10.19
✎
10:43
|
(9) в реквизитах формы покопаться
|
|||
11
asady
03.10.19
✎
10:44
|
(6) ну и у меня так-же
делал универсальные обработчики событий форм разрулил без передачи формы тупо формировал структуры данных для передачи на сервер оттуда получал такие-же результаты и в клинетском общем модуле мучил форму. |
|||
12
pechkin
03.10.19
✎
10:46
|
форму нельзя передать с клиента на сервер. только с серверного вызова в самой форме
|
|||
13
pechkin
03.10.19
✎
10:47
|
|
|||
14
Василий Алибабаевич
03.10.19
✎
10:50
|
(10) Видимо придется Структуру Реквизитов получать в контексте модуля формы и уже ее передавать в серверную процедуру.
|
|||
15
Василий Алибабаевич
03.10.19
✎
10:51
|
+(14) *параметром
|
|||
16
kdenis
03.10.19
✎
11:58
|
Модуль формы:
&НаКлиенте Процедура ЗаполнитьПоТоварам(Команда) РаботаСДокументамиКлиент.ЗаполнитьПоТоварам(ЭтотОбъект); КонецПроцедуры &НаСервере Процедура ЗаполнитьПоТоварамНаСервере() Экспорт РаботаСДокументамиСервер.ЗаполнитьПоТоварам(ЭтотОбъект); КонецПроцедуры Общий модуль: РаботаСДокументамиКлиент // Клиент (управляемое приложение) Процедура ЗаполнитьПоТоварам(Форма) Экспорт Если Форма.Объект.Товары.Количество() > 0 Тогда ДополнительныеПараметры = Новый Структура("Форма", Форма); Оповещение = Новый ОписаниеОповещения("ВопросЗаполнитьПоТоварамЗавершение", ЭтотОбъект, ДополнительныеПараметры); ПоказатьВопрос(Оповещение, "Продолжить выполнение операции?", РежимДиалогаВопрос.ДаНетОтмена, , , "Подтверждение"); Иначе Форма.ЗаполнитьПоТоварамНаСервере(); КонецЕсли; КонецПроцедуры Процедура ВопросЗаполнитьПоТоварамЗавершение(Результат, ДополнительныеПараметры) Экспорт Если Результат = КодВозвратаДиалога.Да Тогда ДополнительныеПараметры.Форма.ЗаполнитьПоТоварамНаСервере(); КонецЕсли; КонецПроцедуры Общий модуль: РаботаСДокументамиСервер // Сервер, Внешнее соединение Процедура ЗаполнитьПоТоварам(Форма) Экспорт // Тут имеем форму в серверном контексте в реквизите КонецПроцедуры |
|||
17
Cyberhawk
03.10.19
✎
12:00
|
Ответ: "никак"
|
|||
18
kdenis
03.10.19
✎
12:00
|
В итоге.
На форме каждого из двадцати документов разместить всего два метода. Логику писать и переписывать в методе общего серверного модуля. |
|||
19
Жан Пердежон
03.10.19
✎
12:04
|
(0) так ведь и никогда нельзя было передавать с клиента на сервер УФ;
и в примере твоём нет передачи; передавай структуру реквизитов и в них копайся |
|||
20
kdenis
03.10.19
✎
12:04
|
(16) * // Тут имеем форму в серверном контексте в параметре "Форма"
|
|||
21
vde69
03.10.19
✎
12:32
|
сделал так
на форме &НаКлиенте Процедура ОбработкаОповещения(.....) мПараметры = КлиентскийМодуль.ПараметрыДляОбработчикаОповещения(ЭтотОбъект, ...) Если мПараметры.Использовать Тогда ВызовОбработчикаОповещения(мПараметры) КонецЕсли КонецПроцедуры &НаСервере Процедура ВызовОбработчикаОповещения(мПараметры) СерверныйМодуль.ОбработкаОповещения(ЭтотОбъект,мПараметры) КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |