Ограничение на установку признака «Вызов сервера» у общих модулей
Область применения: управляемое приложение, мобильное приложение, обычное приложение.
1. Не следует всем общим модулям с признаком Сервер принудительно устанавливать флажок Вызов сервера . В таких общих модулях следует размещать только те процедуры и функции, которые действительно предназначены для вызова из клиентского кода и гарантируют выполнение только тех действий (и передачи только тех данных на сторону клиента), которые разрешены пользователю при его работе в программе. Например, серверная функция, реализующая некоторый алгоритм расчета, должна передавать на сторону клиента окончательный результат этого расчета, но не исходные (или промежуточные) данные для расчета, которые сами по себе могут быть недоступны текущему пользователю.
Особого внимания требуют процедуры и функции, использующие установку привилегированного режима, или размещенные в общих модулях с признаком Привилегированный .
Серверные процедуры и функции, не предназначенные для вызова из клиентского кода, следует размещать в общих модулях без признака Вызов сервера .
2.1. Как правило, при разработке объектов конфигурации (справочников, документов и пр.) исходят из того, что в управляемом режиме работа с экземплярами этих объектов ( СправочникОбъект , ДокументОбъект и т.д.) выполняется на стороне сервера. Поэтому в управляемом режиме не гарантируется возможность работы с ними на стороне клиентского приложения.
В частности, в толстом клиенте в режиме управляемого приложения не следует создавать или получать объекты:
- в клиентских общих модулях (пользуясь инструкцией препроцессора ТолстыйКлиентУправляемоеПриложение );
- в обычных формах при запуске в управляемом режиме. Такие формы следует использовать только в режиме обычного приложения.
Это позволит избежать выполнения кода модулей объектов и подписок на события на клиенте, а также избыточных серверных вызовов процедур и функций общих модулей из этого кода.
2.2. Если конфигурация не рассчитана на работу в толстом клиенте, управляемое приложение, следует снять флажок Толстый клиент (управляемое приложение, режим клиент-сервер) , для того чтобы при проверке конфигурации избежать ложных сообщений об ошибках.
1С. Свойства общего модуля: «Сервер» и «Вызов сервера».
В конфигурации 1С:Предприятие у общего модуля есть свойства «Сервер» и «Вызов сервера». Как же они работают?
Включение свойства «Сервер» означает, что общий модуль исполняется только на сервере, а его экспортируемые процедуры и функции могут быть вызваны из других серверных модулей.
Включение свойства «Вызов сервера» значит, что экспортируемые процедуры и функции общего модуля могут быть вызываны как из серверных модулей, так и из клиентских.
Модули в 1с
Модули – объекты методичных, в которых содержится программный код и определяющие поведение приложения.
В Платформе существует достаточно большое количество видов модулей, каждый из которых имеет свое предназначение и особенности.
Виды модулей
- Общими.
- Принадлежащие отдельным объектам.
- Модули состоят из процедур и функций.
Отдельным объектам метаданных принадлежат:
- Модули форм, описывающие поведение экранных форм.
- Модули объектов, описывающие поведение отдельных экземпляров объектов. Например, поведение конкретного товара из справочника номенклатура.
- Модули менеджеров, описывающие поведение целого класса объектов. Например, всех контрагентов из справочника контагенты.
- Модули самой конфигурации.
Общие модули
- Общие модули находятся в ветке дерева метаданных Общие.
- Содержат код, необходимый разным объектам конфигурации.
- Например, если во многих документах нужен код, рассчитывающий сумму и НДС, не нужно копировать его в каждый документ:
- Рискуя совершить ошибки.
- Затрудняя последующее изменение.
Пример общего модуля 1с
- Вы создадите один или несколько общих модулей УчетНДС<…>:
- УчетНДССервер
- УчетНДСКлиент
- РаботаСТабличнымиЧастямиКлиент
- РаботаСТабличнымиЧастямиСервер
- …
Свойства общих модулей
Как у любых объектов метаданных, у модулей есть свойства:
- Имя — по нему программист обращается к модулю в коде, например, УчетНДС.СуммаНДС().
- Синоним — Ни на что не влияет, существует просто потому что есть у всех объектов.
- Комментарий — как правило, не заполняется, но программист может оставить там какую-то информацию.
Отдельные флажки управляют доступностью модуля:
- Глобальный — код в таких модулях можно вызывать, не указывая имя модуля. Загружается в память при старте 1с.
- Сервер — код будет доступен на сервере.
- Клиент — код будет доступен на клиенте.
- Внешнее соединение — код будет доступен для подключения извне.
- Вызов сервера — код будет доступен на клиенте, но работать будет на сервере.
Отдельно разберем свойства Привилегированный и Повторное использование возвращаемых значений
- Флажок Привилегированный означает, что исполнение кода будет игнорировать права доступа.
- Поле ввода Повторное использование возвращаемых значений позволяет включить кэширование результатов операций модуля.
Глобальные модули
- Обычно к коду модуля обращаются, указав имя модуля и, после токи, имя процедуры или функции:
- Иногда код нужен настолько часто, что программист не хочет каждый раз писать имя модуля.
- Тогда его размещают в глобальном общем модуле.
- Злоупотреблять этим не следует:
- Объявив процедуру или функцию в глобальном модуле, вы лишаетесь возможности объявить одноименный объект в других частях конфигурации.
- Например, приложению нужно время от времени проверять уведомления о новых задачах или письмах.
- В этом случае создается глобальный обработчик ожидания и размещается в глобальном общем модуле.
Клиентские модули
- Клиентские модули исполняются в клиентском приложении:
- в тонком клиенте;
- в толстом клиенте;
- в веб-клиенте (т.е. в браузере);
- в мобильном клиенте.
- Например, к файлам или к сертификату электронной подписи.
Примеры клиентского общего модуля:
- Код, вызываемый перед закрытием любой формы.
- Показывает вопрос пользователю.
- Предупреждает пользователя о чем-то.
- Например, форму вопроса или ввода многострочного комментария.
Серверные модули
- Модули с флажком Сервер исполняются на сервере (при работе в клиент-серверном режиме) или, в файловом режиме — на клиенте.
- Отвесают, как правило, за бизнес-логику и за взаимодействие с СУБД
- В трехзвенной архитектуре обращение к СУБД с клиента запрещено.
Пример серверного общего модуля:
- Код, получащиий из БД данные указанного объекта.
- Например, реквизиты контрагента.
- Учет взаиморасчетов;
- Учет НДС;
- Учет остатков товаров.
Если есть выбор, лучше придерживаться принципа:
Все, что может выполняться на сервере и не является немедленной реакцией на действия пользователя, должно размещаться на сервере.
1с общий модуль вызов сервера галочка что это значит
Функции, которые объявлены с флагом «экспорт» в таком модуле, можно вызывать из любых мест конфигурации. Вызов делается через ИмяОбщегоМодуля.ИмяФункции().
В таких модулях отсутствует раздел переменных.
Выполнение общих модулей зависит от выставленных параметров в их свойствах:
Флаг «Глобальный»
Если этот флаг установлен, то контекст такого модуля становится глобальным. То есть при обращении к его экспортным функциям не нужно указывать имя модуля. Но имена его экспортных функций должны быть уникальными в пределах глобального контекста конфигурации.
Флаг «Сервер»
Функции такого модуля могут выполняться на сервере.
Флаг «Клиент (обычное приложение)»
Функции такого модуля могут выполняться на клиенте в режиме обычного приложения.
Флаг «Клиент (управляемое приложение)»
Функции такого модуля могут выполняться на клиенте в режиме управляемого приложения.
Флаг «Вызов сервера»
Флаг доступен для модулей с установленным флагом «Сервер». Разрешает вызов на клиенте экспортных функций этого модуля (которые будут выполняться на сервере).
Флаг «Внешнее соединение»
Экспортные функции такого модуля могут быть вызваны при подключении из внешнего источника.
Флаг «Привилегированный»
В модуле с таким флагом будет отключена проверка прав. Подходит для повышения производительности или действий по администрированию.
Параметр «Повторное использование»
Если включить данный параметр, то возвращаемые значения экспортных функций будут кэшироваться сразу после первого вызова. Кэширование возможно на время вызова (время исполнение определенной процедуры) или на время сеанса пользователя.
Модуль приложения
Предназначен для обработки событий запуска и завершения приложения. Бывает двух видов: для обычного и управляемого приложений.
Не следует его перегружать, так как это влияет на время запуска приложения.
Модуль сеанса
Специальный модуль, который используется для инициализации параметров сеанса. Нужен для того, чтобы не дублировать код в различных модулях приложений.
Использовать его следует осторожно, так как модуль может выполняться несколько раз, а также выполняться без дальнейшего запуска базы. Выполняется до модулей приложения.
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.