Что такое глобальный модуль 1с

Программные модули в «1С:Предприятии 8»

Программный модуль представляет собой текст на встроенном языке «1С:Предприятия 8», расположенный в определенном месте конфигурации.
В соответствии с этим различают следующие виды программных модулей:

На следующем рисунке показано расположение всех этих модулей:

Что такое глобальный модуль 1с. Смотреть фото Что такое глобальный модуль 1с. Смотреть картинку Что такое глобальный модуль 1с. Картинка про Что такое глобальный модуль 1с. Фото Что такое глобальный модуль 1с

Разделы программного модуля

Любой программный модуль, за исключением общих модулей, состоит из следующих разделов:

Внимание! У общих модулей есть только раздел процедур и функций.

Что такое глобальный модуль 1с. Смотреть фото Что такое глобальный модуль 1с. Смотреть картинку Что такое глобальный модуль 1с. Картинка про Что такое глобальный модуль 1с. Фото Что такое глобальный модуль 1с

Контекст

Контекст — очень важное понятие при программировании на любом языке. В «1С:Предприятии 8» контекст обозначает окружение модуля, т. е. какие ему будут доступны переменные, объекты, свойства, методы и события.

Можно выделить следующие виды контекстов, существующих в «1С:Предприятии 8»:

Что такое глобальный модуль 1с. Смотреть фото Что такое глобальный модуль 1с. Смотреть картинку Что такое глобальный модуль 1с. Картинка про Что такое глобальный модуль 1с. Фото Что такое глобальный модуль 1сВ контексте модуля приложения (или модуля внешнего соединения) доступны экспортируемые процедуры и функции общих модулей.

Что такое глобальный модуль 1с. Смотреть фото Что такое глобальный модуль 1с. Смотреть картинку Что такое глобальный модуль 1с. Картинка про Что такое глобальный модуль 1с. Фото Что такое глобальный модуль 1сВ контексте общего модуля доступны экспортируемые процедуры и функции других общих модулей. В этом контексте недоступны экспортируемые переменные, процедуры и функции модуля приложения.

Что такое глобальный модуль 1с. Смотреть фото Что такое глобальный модуль 1с. Смотреть картинку Что такое глобальный модуль 1с. Картинка про Что такое глобальный модуль 1с. Фото Что такое глобальный модуль 1сВ контексте модуля прикладного объекта есть доступ к реквизитам и табличным частям объекта, а также его методам и событиям. Например, в модуле документа РасходнаяНакладная доступны реквизиты документа и его табличные части, можно вызывать методы документа и обрабатывать события.

Что такое глобальный модуль 1с. Смотреть фото Что такое глобальный модуль 1с. Смотреть картинку Что такое глобальный модуль 1с. Картинка про Что такое глобальный модуль 1с. Фото Что такое глобальный модуль 1сВ контексте модуля формы доступны реквизиты формы, а также ее свойства, методы и события. Если у формы назначен основной реквизит, то в модуле формы становятся доступны свойства и методы прикладного объекта, используемого в качестве основного реквизита, а также экспортируемые переменные, процедуры и функции модуля этого прикладного объекта.

Необходимо помнить правила видимости экспортируемых переменных, процедур и функций различных модулей:

Проиллюстрируем применение первых четырех правил на следующей схеме:

Что такое глобальный модуль 1с. Смотреть фото Что такое глобальный модуль 1с. Смотреть картинку Что такое глобальный модуль 1с. Картинка про Что такое глобальный модуль 1с. Фото Что такое глобальный модуль 1с

Стрелки на схеме обозначают, что модуль предоставляет другим модулям возможность обращаться к своим экспортируемым переменным, процедурам и функциям. Напомним, что в общих модулях не может быть объявления переменных.

Источник

Правила создания общих модулей

Область применения: управляемое приложение, мобильное приложение, обычное приложение.

1.1. Общие модули создаются для реализации процедур и функций, объединенных по некоторому признаку. Как правило, в один общий модуль помещаются процедуры и функции одной подсистемы конфигурации (продажи, закупки) или процедуры и функции сходного функционального назначения (работа со строками, общего назначения).

1.2. При разработке общих модулей следует выбирать один из четырех контекстов выполнения кода:

2.1. Серверные общие модули предназначены для размещения серверных процедур и функций, не доступных для использования из клиентского кода. В них реализуется вся внутренняя серверная бизнес-логика приложения.
Для корректной работы конфигурации в режимах внешнего соединения, управляемого и обычного приложений, серверные процедуры и функции следует размещать в общих модулях с признаками:

2.2. Серверные общие модули для вызова с клиента содержат серверные процедуры и функции, доступные для использования из клиентского кода. Они составляют клиентский программный интерфейс сервера приложения.
Такие процедуры и функции размещаются в общих модулях с признаком:

2.3. Клиентские общие модули содержат клиентскую бизнес-логику (функциональность, определенную только для клиента) и имеют признаки:

Исключение составляют случаи, когда клиентские процедуры и функции должны быть доступны только в режиме управляемого приложения (только в режиме обычного приложения или только в режиме внешнего соединения). В таких случаях, допустима иная комбинация двух этих признаков.

2.4. Для того чтобы избежать дублирования кода, рекомендуется создавать клиент-серверные общие модули с теми процедурами и функциями, содержание которых одинаково на сервере и на клиенте. Такие процедуры и функции размещаются в общих модулях с признаками:

В то же время, как только возникает необходимость ветвить код в клиент-серверных общих модулях на серверный и клиентский, то не следует использовать для этого инструкции препроцессора. Вместо этого, функциональность, различную для клиента и для сервера, рекомендуется реализовывать по общим правилам в модулях соответствующего типа – см. пп. 2.1 и 2.3. Такое явное разделение клиентской и серверной бизнес-логики продиктовано соображениями повышения модульности прикладного решения, упрощения контроля со стороны разработчика над клиент-серверным взаимодействием и снижением риска ошибок из-за принципиальных отличий требований к разработке клиентского и серверного кода (необходимость минимизации кода, выполняемого на клиенте, разной доступностью объектов и типов платформы и др.). При этом нужно иметь в виду неизбежное увеличение числа общих модулей в конфигурации.

Особым случаем смешанных клиент-серверных модулей являются модули форм и команд, которые специально предназначены для реализации серверной и клиентской бизнес-логики в одном модуле.

3.1. Имена общих модулей рекомендуется строить по общим правилам именования объектов метаданных. Название общего модуля должно совпадать с названием подсистемы или отдельного механизма, процедуры и функции которой он реализует. Рекомендуется избегать в названиях общих модулей таких общих слов как «Процедуры», «Функции», «Обработчики», «Модуль», «Функциональность» и т.п. и применять их только в исключительных случаях, когда они более полно раскрывают назначение модуля.

Для того чтобы различать общие модули одной подсистемы, которые созданы для реализации процедур и функций, выполняемых в разных контекстах, рекомендуется задавать им постфиксы, описанные ранее в пп. 2.1-2.4.

3.2. Дополнительно к общим модулям могут быть добавлены уточняющие постфиксы.

Источник

Общий модуль в 1С 8.3

Что такое глобальный модуль 1с. Смотреть фото Что такое глобальный модуль 1с. Смотреть картинку Что такое глобальный модуль 1с. Картинка про Что такое глобальный модуль 1с. Фото Что такое глобальный модуль 1с

Зачем нужны общие модули

Общий модуль нужен для того, чтобы вынести код процедуры или функции в одно место, откуда в дальнейшем его можно будет вызывать. Например, есть процедура для расчета суммы строки:

Если в конфигурации есть несколько видов документов с табличной частью, то данную процедуру придется расположить в модуле формы каждого вида документа. Если в дальнейшем потребуется внести изменения в эту процедуру, то придется сделать это несколько раз, в модуле формы каждого вида документа.

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

Вызов общего модуля

Вызов общего модуля выполняется через имя общего модуля. После имени общего модуля нужно указать точку, а потом имя метода. Метод должен быть экспортным, иначе при вызове возникнет ошибка «Метод объекта не обнаружен».

Для примера добавим в конфигурацию новый общий модуль. Общие модули расположены в узле Общие — Общие модули:

Что такое глобальный модуль 1с. Смотреть фото Что такое глобальный модуль 1с. Смотреть картинку Что такое глобальный модуль 1с. Картинка про Что такое глобальный модуль 1с. Фото Что такое глобальный модуль 1с

В свойствах общего модуля установим флаг Клиент:

Что такое глобальный модуль 1с. Смотреть фото Что такое глобальный модуль 1с. Смотреть картинку Что такое глобальный модуль 1с. Картинка про Что такое глобальный модуль 1с. Фото Что такое глобальный модуль 1с

В самом модуле добавим следующий код:

В модуле обработки вызовем оба метода общего модуля:

Вызов метода ТестОдин отработает корректно, а при вызове метода ТестДва возникнет ошибка «Метод объекта не обнаружен», потому что у процедуры нет ключевого слова Экспорт.

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

Клиентский общий модуль

Если в свойствах общего модуля установлен только флаг Клиент, то к методам такого модуля можно будет обращаться только на клиенте. Из самого общего модуля можно выполнять вызов экспортных методов модуля приложения.

Что такое глобальный модуль 1с. Смотреть фото Что такое глобальный модуль 1с. Смотреть картинку Что такое глобальный модуль 1с. Картинка про Что такое глобальный модуль 1с. Фото Что такое глобальный модуль 1с

Серверный общий модуль

Если установлен только флаг Сервер, то к методам такого модуля можно будет обращаться только на сервер.

Что такое глобальный модуль 1с. Смотреть фото Что такое глобальный модуль 1с. Смотреть картинку Что такое глобальный модуль 1с. Картинка про Что такое глобальный модуль 1с. Фото Что такое глобальный модуль 1с

Вызов сервера

При установленных двух флагах Сервер и Вызов сервера к методам модуля можно обращаться как на клиенте, так и на сервере. Но само выполнение методов будет выполнено на сервере.

Что такое глобальный модуль 1с. Смотреть фото Что такое глобальный модуль 1с. Смотреть картинку Что такое глобальный модуль 1с. Картинка про Что такое глобальный модуль 1с. Фото Что такое глобальный модуль 1с

Клиент-серверный общий модуль

У такого общего модуля в свойствах нужно установить и флаг Клиент и флаг Сервер.

Что такое глобальный модуль 1с. Смотреть фото Что такое глобальный модуль 1с. Смотреть картинку Что такое глобальный модуль 1с. Картинка про Что такое глобальный модуль 1с. Фото Что такое глобальный модуль 1с

Чтобы при компиляции такого общего модуля не было ошибок нужно с помощью инструкций препроцессора разделить процедуры на клиентские и серверные:

Вызывать серверные методы общего модуля можно только на сервере:

Глобальный общий модуль

Если в свойствах модуля поставить флаг Глобальный, то для вызова методов общего модуля не нужно указывать имя общего модуля.

Что такое глобальный модуль 1с. Смотреть фото Что такое глобальный модуль 1с. Смотреть картинку Что такое глобальный модуль 1с. Картинка про Что такое глобальный модуль 1с. Фото Что такое глобальный модуль 1с

Глобальные общие модули будут скомпилированы при запуске конфигурации.

Привилегированный общий модуль

Общий модуль с таким флагом всегда выполняется без проверки прав доступа. Такой общий модуль может быть только серверным.

Что такое глобальный модуль 1с. Смотреть фото Что такое глобальный модуль 1с. Смотреть картинку Что такое глобальный модуль 1с. Картинка про Что такое глобальный модуль 1с. Фото Что такое глобальный модуль 1с

Повторное использование возвращаемых значений

Использование данного свойства позволяет сохранять в кеше параметры и результат функций. Работает только для функций в неглобальных общих модулях.

При первом вызове такой функции она будет выполнена как обычно. После выполнения значения параметров и результат будут сохранены в кеше. Если снова обратиться к такой функции с теми же значениями параметров, то результат будет сразу взят из кеша, без выполнения тела функции.

Есть два варианта повторного использования возвращаемых значений:

Кешированный результат выполнения может быть удален в нескольких случаях:

Если выполнить вызов функции общего модуля с повторным использованием возвращаемых значений из самого общего модуля и не указать до имени функции имя общего модуля, то функция будет выполнена как в первый раз.

Для сохранения в кеше и повторного использования можно использовать параметры следующих типов:

Источник

Объект 1С:Предприятие «Общие модули»

Что такое глобальный модуль 1с. Смотреть фото Что такое глобальный модуль 1с. Смотреть картинку Что такое глобальный модуль 1с. Картинка про Что такое глобальный модуль 1с. Фото Что такое глобальный модуль 1с

Понятие объекта «Общие модули»

Объект «Общие модули» содержит программный код (процедуры и функции), вызываемый из других мест конфигурации (используемый в других программных модулях), и может принадлежать всей конфигурации.

Примеры общего модуля 1С:

Особенности объекта «Общий модуль»:

Палитра свойств объекта «Общие модули»

Что такое глобальный модуль 1с. Смотреть фото Что такое глобальный модуль 1с. Смотреть картинку Что такое глобальный модуль 1с. Картинка про Что такое глобальный модуль 1с. Фото Что такое глобальный модуль 1с
«Глобальный» — если флаг установлен, функции и процедуры из этого модуля становятся доступны в глобальном контексте (их можно вызвать в любом месте конфигурации, обращаясь без названия общего модуля). При этом названия процедур и функций должны быть уникальны в рамках глобального контекста.

Если флаг не установлен, то экспортируемые методы общего модуля не являются частью глобального контекста и могут иметь одинаковые имена в разных неглобальных общих модулях.

«Клиент (управляемое приложение)» — если флаг установлен, методы общего модуля будут доступны для тонкого клиента, веб-клиента, а также для толстого клиента в режиме управляемого приложения.

В контексте неглобального общего модуля с установленным свойством «Клиент (управляемое приложение)» доступны экспортируемые переменные, процедуры и функции модуля управляемого приложения.

«Сервер» — если флаг установлен, процедуры и функции данного общего модуля могут быть выполнены на сервере (в клиент-серверном варианте).

«Внешнее соединение» — если флаг установлен, программные коды данного общего модуля могут быть выполнены при подключении внешним источником (например, COM).

В контексте неглобального общего модуля с установленным свойством » Внешнее соединение» доступны экспортируемые переменные, процедуры и функции модуля внешнего соединения.

В контексте неглобального общего модуля с установленным свойством «Клиент (обычное приложение)» доступны экспортируемые переменные, процедуры и функции модуля обычного приложения.

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

«Привилегированный» — если флаг установлен, то устанавливаются полные права доступа при выполнении действий с базой данных в процедурах и функциях общего модуля. При установленном свойстве выполнение производится только на сервере.

Опция может принимать следующие значения:

Особенности сохранения результатов вызова:

Сохраненные значения удаляются:

Сохраненные значения могут быть удалены:

После удаления значений вызов экспортной функции выполняется как при первом вызове!

Рекомендации по выставлению флагов общего модуля 1С:

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Источник

Глобальный модуль

1. Свойства общих модулей в 1С

Что мы знаем про общие модули в 1С? Только то, что этот общий объект конфигурации помогает нам обращаться к коду, который необходим в разных объектах нашего программного продукта 1С Предприятие.

Практически все типовые процедуры и функции находятся в модулях. Спросите, зачем? Одна из главных причин такого способа разработки – читабельность кода. Допустим, Вы имеете дело громоздкой процедурой «Обработка проведения», в которой выполняется множество проверок и заполнений. Будет ли Вам удобно разбираться в коде другого программиста, который написал такую большую процедуру? Полагаю, нет. Реализация процедуры отдельными блоками в общем модуле с возможностью вызвать их в любую секунду значительно упрощает и ускоряет работу.

Другая причина – разделение выполнения кода на разных уровнях контекста конфигурации. На управляемых формах идет жесткое разделение на 2 уровня и потому часть функционала, который можно выполнить на сервере, можно также просто выполнить и в общем модуле с определенным признаком, предварительно передав в него данные.

У общего модуля есть несколько свойств, на которые в большей своей степени мы не обращаем внимание, а зря.

2. Преимущества Глобального модуля в 1С

Всего у него 7 свойств, которые можно смело использовать. В данной статье я расскажу о свойстве модуля «Глобальный».

Общий модуль может быть клиентским модулем или серверным модулем – в этом плане разницы нет. Но если установлен флаг «Глобальный», это дает пользователю массу преимуществ.

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

Приведу пример. Допустим, Вы создали отдельный модуль программы, в который добавили склонение ФИО сотрудника в определенном падеже. И для того чтобы Ваш код выглядел более гармонично и читабельно, Вы решили добавить флаг «Глобальный» для модуля. Теперь Вы сможете вызывать вашу экспортную процедуру легко, всего лишь по наименованию, словно эта функция процедуры модуля, который на данный момент выполняется.

У глобального модуля в 1С масса преимуществ, которые могут помочь улучшить разработку решений 1С и повысить производительность. Но, увы, мало кто знает про преимущества данного свойства общего модуля. Хотите узнавать и о других полезных фишках в работе с 1С. Что ж, коллеги, на сайте мы постоянно публикуем интересные материалы, а если у Вас возникают вопросы, не стесняйтесь обращаться – мы всегда на связи и всегда на связи и рады помочь!

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Тип общего модуляПример наименованияВызов сервераСерверВнешнее соединениеКлиент
(обычное приложение)
Клиент
(управляемое приложение)
1.СерверныйОбщегоНазначения (или ОбщегоНазначенияСервер)