Имя: Пароль:
1C
 
Вопрос про директивы разделения доступности процедур и функций в общих модулях
,
0 Darklight
 
15.08.14
12:47
Режим: Обычное приложение.
Выполнение: файловая база
Есть общий модуль с установленными флажками:
Сервер
Клиент (обычное приложение)

другие флаги не установлены

Внутри есть такой текст

#ЕСЛИ СЕРВЕР ТОГДА
//////////////////////////////////////////////////////////////////////////////////
//// ПРОЦЕДУРЫ И ФУНКЦИИ, ДОСТУПНЫЕ ТОЛЬКО В СЕРВЕРНОМ КОНТЕКСТЕ
//////////////////////////////////////////////////////////////////////////////////

#ИНАЧЕ
//////////////////////////////////////////////////////////////////////////////////
//// ПРОЦЕДУРЫ И ФУНКЦИИ, ДОСТУПНЫЕ ТОЛЬКО В КЛИЕНТСКОМ КОНТЕКСТЕ ИЛИ ВО ВНЕШНЕМ СОЕДИНЕНИИ
///  ОБРАБОТЧИКИ ИНТЕРАКТИВНЫХ СОБЫТИЙ
//////////////////////////////////////////////////////////////////////////////////

функция НекаяФункция() экспорт

#КОНЕЦЕСЛИ

Проблема: Вот эта самая НекаяФункция() не видна с клиентского контекста (из формы). Почему?
Если директивы #ЕСЛИ СЕРВЕР ТОГДА  #ИНАЧЕ убрать - функция становится видан

И как правильно разграничить алгоритмы которые должны выполняться строго на сервере от остальных, доступных на клиенте и внешнем соединении?
1 Defender aka LINN
 
15.08.14
12:53
(0) Разнеси в разные модули
2 Darklight
 
15.08.14
12:55
(1)Это я знаю, но в данном случае хотелось бы оставить в одном
3 Franchiser
 
гуру
15.08.14
12:59
не видна наверно потому что Обычное приложение.
4 Darklight
 
15.08.14
12:59
(3)И чем же оно мешает?
5 Darklight
 
15.08.14
13:06
Корооче написал вот так

#ЕСЛИ СЕРВЕР ТОГДА
//////////////////////////////////////////////////////////////////////////////////
//// ПРОЦЕДУРЫ И ФУНКЦИИ, ДОСТУПНЫЕ ТОЛЬКО В СЕРВЕРНОМ КОНТЕКСТЕ
//////////////////////////////////////////////////////////////////////////////////

#КОНЕЦЕСЛИ


#ЕСЛИ КЛИЕНТ ТОГДА
//////////////////////////////////////////////////////////////////////////////////
//// ПРОЦЕДУРЫ И ФУНКЦИИ, ДОСТУПНЫЕ ТОЛЬКО В КЛИЕНТСКОМ КОНТЕКСТЕ
///  ОБРАБОТЧИКИ ИНТЕРАКТИВНЫХ СОБЫТИЙ
//////////////////////////////////////////////////////////////////////////////////

функция НекаяФункция() экспорт

#КОНЕЦЕСЛИ

Теперь на клиенте функция видна ;)
Думаю проблема была в файловой ИБ
6 Darklight
 
15.08.14
13:17
Есть ещё один вопрос
Если у общего модуля установлены флажки:
Сервер
Вызов сервера

То что даёт установка флагов
Клиент (управляемое приложение)
Клиент (обычное приложение)
Внешнее соединение

Ведь все методы этого модуля и так буду вызываться только на сервере. И будут доступны с клиентского контекста даже без установки данных флажков
Так для чего они остаются доступны к изменению?
Или я что-то не понимаю?
7 Defender aka LINN
 
15.08.14
16:15
(6) "Ведь все методы этого модуля и так буду вызываться только на сервере" - это скуяли, если флаг "Клиент" стоит?
И при установке всех этих флагов, ЕМНИП, фиг ты поставишь "Вызов сервера"
Закон Брукера: Даже маленькая практика стоит большой теории.