Имя: Пароль:
1C
 
Туплю с клиент-сервером. Есть функция обработки строк в общем модуле
0 Гений 1С
 
гуру
25.09.15
00:07
Есть функция обработки строк в общем модуле, вызвана может быть с клиента и с сервера.

Модуль имеет галки Клиент и Сервер и ВызовСервера.

ПРобовал разные директивы. Но с клиента видит только если процедура объявлена как &НаКлиенте. Почему?
1 Garykom
 
гуру
25.09.15
00:50
экспорт
2 hhhh
 
25.09.15
01:58
(0) &НаКлиенте, &НаСервере в общем модуле не пишут. Эти слова только для модуля формы.
3 Гений 1С
 
гуру
25.09.15
14:15
(2) а, даже так?
4 Гений 1С
 
гуру
25.09.15
14:15
(1) ну что ты, я же не маленький
5 Гений 1С
 
гуру
25.09.15
14:15
(2) Кстати, а зачем они тогда там позволяются синтаксисом?
6 Гений 1С
 
гуру
25.09.15
14:16
(2) нет, думаю ты ошибаешься. вот если модуль с галкой клиент и сервер, как 1с будет знать, где выполнять процедуру - на клиенте или на сервере.
7 Serginio1
 
25.09.15
14:19
(6) Если вызов с клиента, то будет вызов на клиенте.
А клиент у тебя не УФ?
8 Mankubus
 
25.09.15
14:20
смотри типовые модули с названием ...КлиентСервер
9 Гений 1С
 
гуру
25.09.15
14:25
(8) Посмотрел, там вызовы без директив указания место выполнения.
10 Serginio1
 
25.09.15
14:25
Если УФ должна галка стоять
Клиент (Управляемое приложение)
11 VikingKosmo
 
25.09.15
14:26
(6) сервер не маленький, сам разберется, где ему выполнять.
12 Гений 1С
 
гуру
25.09.15
14:26
(11) а какие правила применяет?
13 Гений 1С
 
гуру
25.09.15
14:27
(10) вот у меня и стоит две галки.
14 Serginio1
 
25.09.15
14:28
А деректвы #Если Сервер Тогда
случайно нет?
15 VikingKosmo
 
25.09.15
14:29
(12) ЕМНИП, если у ОМ стоят галки Клиент и Сервер, то компилит и там и там. А выполняет там, откуда пришел вызов. Если пришел с клиента, то на клиенте и выполнит, пришел с сервера, соответственно. Опять таки, по стандартам 1С, если ты хочешь, что бы в таком модуле выполнение шло только на клинте/сервере Если #ИмяДериктивы тебе в помощь
16 Serginio1
 
25.09.15
14:29
14+ Вернее #Если Клиент Тогда
17 ssh-2013
 
25.09.15
14:35
(0) может поэтому:

"Отсутствие директивы компиляции перед процедурой (функцией) означает использование директивы по умолчанию. Директивой по умолчанию является &НаСервере."
18 Mankubus
 
25.09.15
14:37
(17) это для форм
19 Гений 1С
 
гуру
25.09.15
14:37
(18) нет
20 Гений 1С
 
гуру
25.09.15
14:38
(18) хотя да
21 Ненавижу 1С
 
гуру
25.09.15
14:38
это точно гений?
22 rozer76
 
25.09.15
14:39
Типовые посмотрите как там и разберитесь в общем модуле.
Серверные функции вынесите в серверный модуль.
Клиентские в клиентский.
23 Гений 1С
 
гуру
25.09.15
14:40
(22) одна фунцкия может юзаться и на клиенте и на сервере.
например, обработка строк.
24 DCKiller
 
25.09.15
14:43
(21) да... законсервированный в 2008 году.
25 Ненавижу 1С
 
гуру
25.09.15
14:44
еще раз:
это УФ?
какие галки стоят у модуля?
26 rozer76
 
25.09.15
14:46
попробуй сбросить "вызов сервера" ибо она нужна только когда с клиента сервер дергаешь а тете или с клиента или с сервера надо только
27 Гений 1С
 
гуру
25.09.15
14:47
(25) все же описано в условии - общий модуль, в нем строковые функции, вызываться могут с клиента УФ и в серверных процедурах не с УФ.
28 rozer76
 
25.09.15
14:48
(26) + это в методе разработки указано http://its.1c.ru/db/v8std#content:2149184118:hdoc
29 Гений 1С
 
гуру
25.09.15
14:48
(26) да, вызов сервера тут вроде не зачем. Если только с клиента дергать процедуру, описанную &НаСервере в этом модуле.
30 rozer76
 
25.09.15
14:54
(29)

"Месье знает толк в извращениях"
31 Гёдза
 
25.09.15
14:59
Клиент и Сервер и ВызовСервера.
одна галка лишняя
32 Ненавижу 1С
 
гуру
25.09.15
15:14
(31) ну почему же, из внешнего соединения вполне возможен вызов сервера
33 rozer76
 
25.09.15
15:16
(32) внешнее соединение это типо "серверный контекст" и плюс есть отдельная галка
34 Ненавижу 1С
 
гуру
25.09.15
15:19
(33) внешнее соединение это COM
35 rozer76
 
25.09.15
15:20
(34) никто не спорит... галку "внешнее соединение" ОМ имеет также
36 rozer76
 
25.09.15
15:21
(35) + "ВызовСервера" и "внешнее соединение" это даже не рядом
37 Сергиус
 
25.09.15
15:30
(0)Общий модуль глобальный или нет?
38 rozer76
 
25.09.15
15:51
ТС пропал куда-то ... Видимо перечитывает лекции Арутюнова по УФ )
39 Гений 1С
 
гуру
06.10.15
16:41
гм. Опять таки столкнулся.
Есть модуль с галками Клиент, Сервер и ВызовСервера.

Вызываю функцию Тест этого модуля. Функция Тест лазает на Сервер.

Если объявить Текст как &НаСервере то из модуля клиента эта функция общего модуля не видна.

Если объявить Текст без директив компиляции то из модуля клиента эта функция видна, но при вызове работает в контексте клиента.

Вижу выход только в том, чтобы вызывать эту функцию из серверной функции формы. А по другому никак?
40 DTXyupyup
 
06.10.15
17:06
(39) Перенести эту функцию в модуль без галки Клиент
41 Гений 1С
 
гуру
06.10.15
17:23
(40) кривовато со стороны платформы. Зачем тогда галка "Вызов сервера", не понимаю
42 Ненавижу 1С
 
гуру
06.10.15
17:25
(41) а зачем галка "Клиент"? как определить где искать?
Если ты еще поставишь галку "Внешнее соединение", то галка "Вызов сервера" отключится. А теперь подумай почему.
43 Ненавижу 1С
 
гуру
06.10.15
17:26
+(42) хотя реализации клиент-сервера изначально кривая, начиная от "РеквизитФормыВЗначение"
44 DTXyupyup
 
06.10.15
20:08
(43) Есть варианты лучше?)
Когда разбирался с УФ, не понимал прикола. А сейчас вроде всё нравится.
45 Гений 1С
 
гуру
07.10.15
01:36
(42) ну галка "Вызов сервера" как раз для того же, чтобы вызывать серверные функции с клиента, не?
46 GROOVY
 
07.10.15
01:46
(45) Ты сколько кодишь? Ну нереально, что ты не знаешь, что система производит предварительную компиляцию модулей для разных режимов работы, для сервера, для клиента, составляет таблицу видимых методов модуля для клиентского запроса и пр.
47 2mugik
 
07.10.15
05:23
(45)Он хочет сказать что если откомпилилось на клиенте и на сервере то вызывать с сервера нет смысла. Може правда галку вызов с сервера отключить.
48 Ненавижу 1С
 
гуру
07.10.15
10:14
(44) вариант есть, зачем так сложно управлять вызовом с клиента на сервер?

можно было так:

Процедура НаКлиенте()

  ЧтотоНаКлиенте();
  //передаем автоматически нужный контекст на сервер без всяких "РеквизитФормыВЗначение"
  НаСервере1();
  НаСервере2();
  //возвращаем нужный контекст на клиента автоматически
  СноваНаКлиенте();

КонецПроцедуры
49 Ненавижу 1С
 
гуру
07.10.15
10:17
+(48) ВЕСЬ модуль формы мог жить тогда на клиенте, а на сервере был бы модуль объекта
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.