|   |   | 
| 
 | Почему тонкий клиент не видит процедуру? | ☑ | ||
|---|---|---|---|---|
| 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) К модулям форм, естественно, это не относится?     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |