Имя: Пароль:
1C
 
1c 8.2 Вызов серверных процедур на клиенте
0 Zixxx
 
16.04.10
08:27
Ситуация такая. Из документа вызываю процедуру &НаКлиенте из общего модуля, в последствии которая должна вызывать процедуру &НаСервере, но в результате такой попытки получаю сообщение
"Процедура или функция с указанным именем не определена"
Пробовал поиграться с галочками у общего модуля но ничего не получилось, как можно вызвать серверную процедуру на клиенте из общих модулей?
1 NcSteel
 
16.04.10
08:29
Галочку в модуле "Сервер".
2 Armando
 
16.04.10
08:32
И "Вызов сервера"
3 Zixxx
 
16.04.10
08:39
Так уже пробовал

Документ:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
  ДеревоТоваровОбъекта.ПриОткрытииДокументаСДеревом(ЭтаФорма, Объект.Ссылка);

Общий модуль ДеревоТоваровОбъекта:
&НаКлиенте
Процедура ПриОткрытииДокументаСДеревом(ЭтаФорма, Ссылка) Экспорт
   ЗаполнитьДеревоТоваровСРазмерами(ЭтаФорма.ДеревоТоваров, Ссылка);

&НаСервере
Процедура ЗаполнитьДеревоТоваровСРазмерами(ДеревоТоваров, Ссылка)
   Запрос = Новый Запрос;

Синтаксический контроль в общем модуле "ДеревоТоваровОбъекта" выдает ошибку:
Процедура или функция с указанным именем не определена (ЗаполнитьДеревоТоваровСРазмерами)
4 Armando
 
16.04.10
08:42
Для чистоты экскремента оставь только эти два флага (1)(2)
5 Zixxx
 
16.04.10
08:47
(4) Тогда получаю ошибку при открытии формы документа

Метод объекта не обнаружен (ПриОткрытииДокументаСДеревом)
6 Defender aka LINN
 
16.04.10
08:49
Дык эта... В ОМ все по-старому. #Если Клиент Тогда, #Если Сервер Тогда
7 NcSteel
 
16.04.10
08:49
(5) Передавай вызов на сервер . Например на серверную процедуру модуля документа.
8 Zixxx
 
16.04.10
08:59
(6) А как это поможет в моем примере?
9 Zixxx
 
16.04.10
09:00
(7) Так будет кода больше возникают моменты когда нужно часть сделать на клиенте а часть на сервере, не хочу чтобы это все болталось в документе
10 Zixxx
 
16.04.10
09:23
ап
11 Defender aka LINN
 
16.04.10
09:25
(8) Например, начнет работать.
12 Armando
 
16.04.10
09:42
Разбей на два модуля:
'ДеревоТоваровОбъектаКлиент' - с флагом 'Клиент'
'ДеревоТоваровОбъектаСервер' - с флагами 'Сервер' и 'Вызов сервера'
13 Zixxx
 
16.04.10
09:45
(11) Пример приведи, у меня не начинает работать
14 Zixxx
 
16.04.10
09:52
(12) Не хочет с такими галочками работать, в 'ДеревоТоваровОбъектаКлиент' при попытке вызове серверную процедуру валится с ошибкой
Метод объекта не обнаружен (ЗаполнитьДеревоТоваровСРазмерами)
галочки проставил
15 Zixxx
 
16.04.10
09:56
(12) А нет все нормально, при разделении забыл указать как экспортную. Спасибо
16 Armando
 
16.04.10
09:56
В модуль 'ДеревоТоваровОбъектаКлиент' помести процедуры, выполняемые на клиенте.
&НаКлиенте
Процедура ПриОткрытииДокументаСДеревом(ЭтаФорма, Ссылка) Экспорт
   ЗаполнитьДеревоТоваровСРазмерами(ЭтаФорма.ДеревоТоваров, Ссылка);

В модуль 'ДеревоТоваровОбъектаСервер' выполняемые на сервере.
&НаСервере
Процедура ЗаполнитьДеревоТоваровСРазмерами(ДеревоТоваров, Ссылка)
   Запрос = Новый Запрос;
17 Armando
 
16.04.10
09:57
(15) бывает)
18 Zixxx
 
16.04.10
11:35
Получился один непонятным мне недочем. Пытаюсь передать дерево формы на сервер для заполнения таким образом.

Документ:
Процедура ПриОткрытии(Отказ)
   ДеревоТоваровОбъектаКлиент.ПриОткрытииДокументаСДеревом(ДеревоТоваров, ЭтаФорма, Объект.Ссылка);

ОбщийМодуль.ДеревоТоваровОбъектаКлиент
Процедура ПриОткрытииДокументаСДеревом(ДеревоТоваров, ЭтаФорма, Ссылка) Экспорт
   ДеревоТоваровОбъектаСервер.ЗаполнитьДеревоТоваровСРазмерами(ДеревоТоваров, Ссылка);

В итоге получаю ошибку:
Ошибка при установке значения атрибута контекста (ДеревоТоваров): Нельзя изменять поле, содержащее объект данных формы

С чем это может быть связано и как победить?
19 Вуглускр1991
 
16.04.10
11:38
Вероятно будет не правильно использовать в цепи вызовов из "ПриОткрытии" серверные процедуры. Есть "ПриСозданииНаСервере" - вот в ней и должны отработать все серверные механизмы.
20 Zixxx
 
16.04.10
13:32
(19) Тут больше вопрос не ПриОткрытии, а то что если я с документа передаю в общий модуль который исполняется на клиенте то я не могу потом передать этот параметр в общий модуль на сервере, такая ситуация возникает не только при открытии но и в других местах