|
Почему тонкий клиент не видит процедуру? | ☑ | ||
---|---|---|---|---|
0
Икогнито
12.08.11
✎
16:56
|
Есть общий модуль, на нем галки "Клиент", "Сервер","Вызов сервера"
В модуле две процедуры: &НаКлиенте Процедура ПоместитьВнешнююОбработкуОбмена() Экспорт // На клиенте размещаем обработку во временном хранилище АдресХранилища = ""; Результат = ПоместитьФайл(АдресХранилища,"D:\Work\Разработка\ОтладкаОбмена.epf",,Ложь); Подключить(АдресХранилища); КонецПроцедуры &НаСервере Процедура Подключить(АдресХранилища) Экспорт // На сервере подключаем обработку из созданного ранее // временного хранилища. ИмяОбработки = ВнешниеОбработки.Подключить(АдресХранилища); Константы.ВременнаяКонстанта.Установить(ИмяОбработки); КонецПроцедуры 1. Тонкий клиент ругается так: {ОбщийМодуль.ВременныйОтладкаКлиентСервер.Модуль(6,2)}: Процедура или функция с указанным именем не определена (Подключить) <<?>>Подключить(АдресХранилища); (Проверка: Тонкий клиент) 2.Толстый клиент не ругается и исполняет. |
|||
1
Jstunner
12.08.11
✎
16:58
|
галка "Клиент" которая?
|
|||
2
mikecool
12.08.11
✎
16:59
|
есть еще Клиент (управляемое приложение)
|
|||
3
Rebelx
12.08.11
✎
16:59
|
потому что не надо ставить на модуле и клиент и сервер и вызов сервера, т.к. вызов сервера никогда не сработает.
у тебя база в файловом варианте, т.е. в толстом клиенте то что с галкой сервер все равно выполняется на клиенте. а в случае с тонким клиентом - модуль компилируется на клиенте (т.к. стоит галка) и вызов сервера не происходит |
|||
4
Defender aka LINN
12.08.11
✎
17:00
|
(0) Выкинь свои директивы нахрен. Они работают только в формах и командах.
|
|||
5
Rebelx
12.08.11
✎
17:03
|
(4) неужели?
Каждая процедура и функция модуля формы, модуля команды и общего модуля управляемого приложения предваряется директивой компиляции, определяющей среду исполнения данной процедуры. Директива предваряется символом "&". Допустимые директивы: |
|||
6
5 Элемент
12.08.11
✎
17:04
|
(5) в ОМ они не используются
|
|||
7
Rebelx
12.08.11
✎
17:05
|
(6) документация и факты (см.(0)) фуфло?
смотрим справку 1С: ... Общий модуль В общем модуле доступны директивы компиляции – &НаКлиенте, &НаСервере. |
|||
8
alxxsssar
12.08.11
✎
17:13
|
А не может быть как в семерке? Чтобы вызываемая процедура была перед вызывающей ее?
|
|||
9
5 Элемент
12.08.11
✎
17:22
|
(7)И как они там работают?
|
|||
10
MRAK
12.08.11
✎
17:48
|
(9) + тоже интересно. В типовых не встречал в ОМ директив &НаКлиенте, &НаСервере
Попадались только типа: #Если Не ВебКлиент Тогда ... #КонецЕсли |
|||
11
5 Элемент
12.08.11
✎
17:54
|
(10) они там не имеют смысла, интересно услышать (7)
|
|||
12
Икогнито
12.08.11
✎
17:55
|
(3) > потому что не надо ставить на модуле и клиент и сервер и вызов сервера, т.к. вызов сервера никогда не сработает.
Рекомендуешь каждую процедуру в модуль со своей индивидуальной галкой запихать? |
|||
13
Reaper_1c
12.08.11
✎
17:56
|
(12) Рекомендуется делать не один общий модуль.
|
|||
14
H A D G E H O G s
12.08.11
✎
17:57
|
Нельзя вызывать сервер в рамках 1 модуля.
|
|||
15
Икогнито
12.08.11
✎
18:21
|
(14) можно пояснее, плиз?
|
|||
16
Икогнито
12.08.11
✎
18:25
|
(14) т.е. первая процедура запустившись на клиенте, сделала его клиентским, соответственно не может запуститься (не находит) процедуру с директивой "сервер"?
|
|||
17
Rebelx
12.08.11
✎
18:34
|
(11)мое имхо - они в ОМ равнозначны директивам #
|
|||
18
Rebelx
12.08.11
✎
18:38
|
+(17) об этом же говорит документация:
Инструкции препроцессора и директивы компиляции предназначены для того, чтобы оставить в скомпилированном модуле только то, что действительно должно присутствовать в том или ином контексте. При этом инструкции препроцессора действуют на исходный текст модуля (т. е. удаляют из модуля текст, который не может там находится), а директивы компиляции действуют на структурные единицы программного кода (методы — процедуры или функции, а также объявления переменных). |
|||
19
Икогнито
12.08.11
✎
18:39
|
(10)> В типовых не встречал в ОМ директив &НаКлиенте, &НаСервере
т.е. если в ОМ установлены галки "Клиент", "Сервер", то система сама решает где выполнить? |
|||
20
Икогнито
12.08.11
✎
18:41
|
(18)теперь все ясно.
Первая процедура запустилась с клиентской директивой и компилятор вычистил из модуля процедуру с серверной директивой. Потому и не находит её тонкий клиент. Тогда непонятно почему толстый прокатывает. |
|||
21
Rebelx
12.08.11
✎
18:43
|
потому что в файловом варианте все что "сервер" выполняется на клиенте (если толстый)
|
|||
22
Rebelx
12.08.11
✎
18:44
|
(19) нет, не сама решает
а выполняет в текущем контексте |
|||
23
Икогнито
12.08.11
✎
19:11
|
(18) К модулям форм, естественно, это не относится?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |