Приветствую Вас ГостьЧетверг, 16.01.2025, 05:10

Каталог статей


Общие модули

Нельзя указывать экспортные переменные.
Глобальный – процедуры будут доступны из вне напрямую, т.е. доступны в глобальном контексте (не пишем название модуля и через точку имя процедуры, а сразу имя процедуры). (-) чем больше глобальных модулей, тем медленнее загружается программа, так как глобальный модуль загружается при запуске программы. Если модуль не глобальный, то его загрузка происходит при первом обращении к процедурам модуля.

Привилегированный модуль выполняется без учета прав пользователей. Это ускоряет работу, так как программа не тратит время на обработку прав. По этой причине привилегированные модули используют при массовых вычислениях. Привилегированные модули могут быть скомпилированы только на сервере. Их используют для того, чтобы временно добавить права пользователю, например у пользователя нет доступа к справочнику, но при проведении документа, реквизит содержащий этот справочник должен заполнятся, для этого процедуру проведения или  часть выводим в привилегированный модуль, тем самым обходим ограничение на права пользователя.

В обычных общих модулях в свойствах надо указать в каком контексте будут скомпилированы процедуры. Если поставить несколько галок (Клиент, Сервер, Внешнее соединение), то при компиляции будут созданы одновременно несколько экземпляров модулей для каждого из контекста, которые не смогут обращаться друг к другу внутри модуля (т.е. нельзя будет из клиентского метода модуля вызвать серверный метод того же модуля), но из других модулей обращение к ним возможно. В таких модулях место компиляции процедур задаются директивами компилятора (&НаСервере, &НаКлиенте). Если их не указать, то процедуры будут скомпилированы одновременно на всех контекстах, которые указаны в свойствах общего модуля. В таком случае в тексте процедур надо рулить инструкциями препроцессора, чтобы разделить контекст. Контекст вызываемых процедур общего модуля без инструкций препроцессора будет определяться контекстом вызываемых их модулей.
Правилом хорошего тона не указывать директивы компиляции у процедур, а задавать их в свойствах модуля и указывать в имени модуля.
Если общий модуль скомпилирован на сервере, то его процедуры доступны только для вызова с сервера, но есть возможность сделать их доступными для вызова из клиентских модулей. Для этого ставиться свойство «Вызов сервера».

Свойство «Вызов сервера» работает только если указано, что модуль будет компилироваться только на сервере. Если поставить галки «Клиент», «Сервер» и при этом будет указана директива процедуры &НаСервере, то процедуры станет недоступной для клиентских модулей.

Свойство «Повторное использование возвращаемых значений».
Доступно только для не глобальных общих модулей и для процедур, которые вызываются с параметрами и не обращаются к базе данных. В этом случае, результат выполнения кэшируется, и при повторном вызове с такими же параметрами вернет запомненное значение.
Очистка кэша происходит через 20 мину после попадания в кэш. Так же время задается одним из следующих значений: «На время вызова» (Упрощенно действует до окончания процедуры) или «На время сеанса» (Упрощенно действует до завершения сеанса), но 20 минут ему к не переплюнуть.

 

Категория: Программирование | Добавил: leshic (10.05.2020)
Просмотров: 378 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Вход на сайт
Поиск
Категории раздела
СКД [50]
Регистры [7]
Формы [47]
Администрирование [41]
Запросы [10]
Объекты конфигурации и типы данных [20]
Взаимодействие с другими базами, приложениями и источниками данных [16]
Программирование [41]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0