Имя: Пароль:
1C
 
Внешняя обработка: &НаСервере, &НаКлиенте - ???
0 NeeD
 
10.02.11
11:05
Клиент-серверный вариант работы.
Имеется внешняя обработка, в которой по нажатию на кнопку вызывается процедура формы. Модуль формы следующий:
&НаСервере
Процедура ВызовФормы(Ткст)
   
   Сообщить(Ткст);
   
КонецПроцедуры

&НаКлиенте
Процедура Кнопка1Нажатие(Элемент)
   
   ВызовФормы("Вызов формы")
   
КонецПроцедуры

При попытке открыть эту внешнюю обработку, вываливается следующее:

{Форма.Форма.Форма(11,2)}: Процедура или функция с указанным именем не определена (ВызовФормы)
   <<?>>ВызовФормы("Вызов формы")

Насколько я понимаю, вопрос достаточно банальный, но почитав в синтакс-помошнике про директивы компиляции, так и не понял, в чем ошибка! Вроде бы всё должно работать... Помогите, пожалуйста :-)
1 NeeD
 
10.02.11
11:06
P.S. Про то, что Сообщить() на сервере не отрабатывает, я в курсе.
2 Axel2009
 
10.02.11
11:09
а чем помочь то? выводы на клиента с серверных проц невозможно.
3 ZanderZ
 
10.02.11
11:11
(1) да вообще - то сообщить отрабатывает
Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение
4 NeeD
 
10.02.11
11:14
Так вопрос то не в этом! Вопрос в том, почему при компиляции этой внешней обработки процедура ВызовФормы() не компилится на сервере? Она ведь получается недоступной??? В теле процедуры может быть любой код.
5 Axel2009
 
10.02.11
11:14
(0) может не сохранилось что? или название процедуры в перемешку с латиницей..? а если &НаКлиенте в обоих случаях поставить?
6 ZanderZ
 
10.02.11
11:17
(4) по моему если это не часть конфигурации то не будет отрабатывать такой механизм...
7 NeeD
 
10.02.11
11:17
(5) Тогда всё нормально работает! Мне не понятно, почему не работает с директивой &НаСервере?
8 Axel2009
 
10.02.11
11:20
(7) да попробуй в обработки добавить..?
9 NeeD
 
10.02.11
11:20
(6) Включил эту внешнюю обработку в конфигурацию - эффект тот же. Не работает!
10 NeeD
 
10.02.11
11:23
Может кто нить у себя попробует - там две секунды создать такую вещь... Обработка с одной кнопкой - на неё процедуру Кнопка1Нажатие.
11 Axel2009
 
10.02.11
11:23
у меня работает.. 1С:Предприятие 8.2 (8.2.11.236)
12 detec
 
10.02.11
11:23
Рекомендую стереть весь код и гарантированно, кириллицей, переписать всё заново, с помощью копи-пасте названий функций и процедур. И не нужно "Сообщать()" в серверных процедурах и функциях.
13 kabanoff
 
10.02.11
11:24
(0) Может в режиме обычного приложения отлаживаешь? :)
14 Axel2009
 
10.02.11
11:24
(10) не тоже самое. форма то управляемая? то чтото Кнопка1Нажатие меня настораживает
15 NeeD
 
10.02.11
11:25
Сейчас попробую.
16 ДенисЧ
 
10.02.11
11:25
(10) У меня работает
17 Axel2009
 
10.02.11
11:25
&НаСервере
Процедура ВызовФормы(Ткст)
   
   Сообщить(Ткст);
   
КонецПроцедуры

&НаКлиенте
Процедура Команда1(Команда)
   ВызовФормы("Вызов формы");
КонецПроцедуры

где Команда1 - команда УФ.
18 NeeD
 
10.02.11
11:26
форма не управляемая!
19 detec
 
10.02.11
11:26
(18) приехали...
20 Axel2009
 
10.02.11
11:27
а что вы хотите? форма выполняется на клиенте. значит процедура вызовформы тупо не компилится
21 Axel2009
 
10.02.11
11:28
ЗЫ Сообщить сработало на сервере , правда в процедуре формы =)
22 NeeD
 
10.02.11
11:29
Так вот этого я и не понял сразу! То есть, если форма не управляемая, то весь код на сервере не компилируется ни при каких условиях?
23 Axel2009
 
10.02.11
11:29
ну а зачем писать директивы если форма ну управляемая?
24 Defender aka LINN
 
10.02.11
11:30
(18) Это ты 17 постов интригу нагнетал?
25 NeeD
 
10.02.11
11:32
То есть код неуправляемой формы работает только на клиенте. Для управляемой формы можно разделить директивами - что на сервере, что на клиенте. Я правильно понимаю ситуацию? Извините за глупые вопросы, 8.2 только начинаем осваивать.
26 Axel2009
 
10.02.11
11:34
для неуправляемой формы нет разницы. все в одном идет выполнение.
27 NeeD
 
10.02.11
12:05
Интересно, зачем 1С не предусмотрела возможность работы с УФ во внешних обработках, в обычном режиме запуска приложения? Ну да ладно. Я объясню откуда возникла проблема. Пытаемся создать внешние печатные формы для счетов, счетов фактур, торг 12 и т.д. Так вот, когда обкатывали всё в фаловом варианте - всё работало, как только перешли на серверный, в некоторых формах вываливается ошибка: "Попытка передачи с клиента на сервер мутабельного значения n-го параметра метода"... Начали разбираться в чем дело. Мы за основу брали типовые формы из УПП - там вся печать организована в модуле менеджера. Так вот, все эти процедуры перемещались в модуль внешней обработки. Насколько я понимаю, модуль менеджера компилируется на стороне сервера (может быть я и ошибаюсь), и когда происходит вызов процедуры из общего модуля серверного (признак только сервер) то проблем не возникает - идет вызов сервер - сервер. А в нашем варианте идет вызов клиент - сервер. Теперь, я так понял, надо всё вытаскивать в модуль внешней обработки (печатной формы) чтобы нормально заработало. Директивами компиляции это в принципе не разруливается в данном случае. Я правильно понял ситуацию?
28 disk-2008
 
10.02.11
12:14
(27)Надо разные модули.
29 NeeD
 
10.02.11
12:21
(28) То есть?
30 detec
 
10.02.11
12:34
(27)

А в чём состоит проблема из внешней обработки для УПП дёргать функции и процедуры модуля менеджера?
31 NeeD
 
10.02.11
13:55
(30) Так не получится! Приведу пример. Нужно создать внешнюю печатную форму ТОРГ-12 для Реализации товаров и услуг (РТУ). В модуле менеджера РТУ есть функция Печать(), которая формирует табличный документ ТОРГ-12. Нам это и нужно, но только изменив немножечко код и макет. То есть нужно эту функцию скопировать в модуль внешней обработки, причесать её и добавить новый макет. Всё бы ничего, да вот только в этой функции есть обращения к функциям общих модулей, которые компилятся только на серверной стороне (в свойствах взведен только признак "Сервер") :-(. Таким образом, нужно эти фунции перенести в модуль внешней обработки. Других вариантов я не вижу. В файловом варианте всё работает без проблем!
32 NeeD
 
10.02.11
13:58
(30) P.S. Вернее проблема возникает только при передаче "мутабельного" параметра при вызове серверных функций.
33 Axel2009
 
10.02.11
13:59
ссылки нужно передавать. а не объекты
34 NeeD
 
10.02.11
14:01
(33) Дык так в 1с код написали :-)
35 NeeD
 
10.02.11
14:08
(33) Я посмотрел - там таблица значений передается.
AdBlock убивает бесплатный контент. 1Сергей