Имя: Пароль:
1C
 
с клиента на сервер
,
0 FFrr1C
 
16.11.23
14:04
Есть повсеместно использующаяся клиентская процедура с диалогами, задумал вынести её в общий модуль(клиент), но проблема в том, что в этой процедуре идёт обращение к реквизитам ссылки (серверу) а серверные функции этот модуль не видит, подскажите как разрулить?
1 AlexeyKh
 
16.11.23
14:07
поставьте у него галку: Вызов сервера
2 asady
 
16.11.23
14:07
(0) создай в своем общем модуле с галкой вызов сервера функцию которая разом соберет тебе все реквизиты без повторных обращений к серверу и передаст в виде структуры на клиента
3 unenu
 
16.11.23
14:09
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "Код");
4 unenu
 
16.11.23
14:10
(2) ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, "Код,Наименование");

зачем велосипедить?
5 FFrr1C
 
16.11.23
14:11
AlexeyKh, "Вызов сервера" в модуле только "Клиент" - не активно,
asady - нужно как то вызвать эту функцию серверную, но на модуле клиента (где все диалоги общие) эту функцию не видно..
6 asady
 
16.11.23
14:12
(4) если нужно собрать несколько таких наборов реквизитов - то придется делать несколько серверных вызовов - я же предложил сделать это с одним серверным вызовом
7 asady
 
16.11.23
14:14
(5) для чего тогда этот флаг сделали по-твоему.
пробуй.
8 timurhv
 
16.11.23
14:15
(5) У вас должно быть два модуля
"ВашМодульКлиент"
Из него получаете данные из модуля ниже
"ВашМодульВызовСервера"
9 FFrr1C
 
16.11.23
14:16
Упрощу немного,

в каждой форме диалог ПоказатьЗначение(,Знач), где Знач =
Функция ? (Не ЗначениеЗаполнено(Ссылка.Владелец),Ссылка, Ссылка.Владелец)

как разрулить общим модулем
10 unenu
 
16.11.23
14:16
(6) велик с моторчиком? без проблем)

мСсылки = Новый Массив;
...
ОбщегоНазначения.ЗначенияРеквизитовОбъектов(мСсылки, "Код,Наименование");
11 FFrr1C
 
16.11.23
14:17
в каждой форме диалог
Если КодВозвратаДиалога.Да тогда
ПоказатьЗначение(,Знач)
конецесли,
где Знач =
Функция ? (Не ЗначениеЗаполнено(Ссылка.Владелец),Ссылка, Ссылка.Владелец)
12 FFrr1C
 
16.11.23
14:21
Функция НаКаждайФорме()
Если КодВозвратаДиалога.Да тогда
ПоказатьЗначение(,Знач)
конецесли
конецфункции
это клиентская функция которую нужно вынести в общий модуль, но там Знач =
Функция ? (Не ЗначениеЗаполнено(Ссылка.Владелец),Ссылка, Ссылка.Владелец) соответсвенно серверная, и клиентский модуль не видит серверную функцию
13 asady
 
16.11.23
14:23
(12) настоящий одноэснег!!!
оставайся таким.
14 FFrr1C
 
16.11.23
14:28
(8) В ТОЧКУ!
Спасибо!
15 FFrr1C
 
16.11.23
14:30
(8) Клиентская общая процедура видит Серверные процедуры но только из модуля с флагом (Вызов сервера)
16 Donkey_hot
 
16.11.23
14:36
(15) Практика - лучший учитель.

?(Не ЗначениеЗаполнено(Ссылка.Владелец),Ссылка, Ссылка.Владелец) - Сколько запросов к базе данных делает такой код, как думаете? И можно ли уменьшить?
17 FFrr1C
 
16.11.23
14:40
Пер = Ссылка.Владелец;
?(Не ЗначениеЗаполнено(пер),Ссылка, пер)

писал от балды для примера, а то народ понесло не туда..
18 FFrr1C
 
16.11.23
14:41
Хреново тут рейтингов помогателей нет
19 Garykom
 
гуру
16.11.23
18:07
Кстати название галки "Вызов сервера" путаное

Правильней ее обозвать "Разрешен вызов сервера" и привязать к галочке "Клиент" справа
20 lodger
 
16.11.23
18:14
(19) ты сейчас тоже путаницы навел. не? причем тут флажок Клиент, если вся песня про Сервер?

2.2. Серверные общие модули для вызова с клиента содержат серверные процедуры и функции, доступные для использования из клиентского кода. Они составляют клиентский программный интерфейс сервера приложения.
Такие процедуры и функции размещаются в общих модулях с признаком:

Сервер (флажок Вызов сервера установлен)
Серверные общие модули для вызова с клиента называются по общим правилам именования объектов метаданных и должны именоваться с постфиксом "ВызовСервера" (англ. "ServerCall").
Например: РаботаСФайламиСлужебныйВызовСервера, FilesOperationsInternalServerCall.

Следует иметь в виду, что экспортные процедуры и функции в таких общих модулях не должны содержать параметров мутабельных типов (СправочникОбъект, ДокументОбъект и т.п.), так как их передача из (или в) клиентского кода невозможна.
21 Garykom
 
гуру
16.11.23
18:32
(20) ну "Разрешен вызов с клиента" и привязать к галке "Сервер" справа
22 Garykom
 
гуру
16.11.23
18:33
Чисто технически это две разные галочки

Сначала проверка на клиенте, разрешено ли ему сервер вызывать
Затем на сервере а разрешено ли принимать вызовы с клиента