Перейти к содержанию
#std469

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

1.1.

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

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

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

Свойства:

  • Клиент (управляемое приложение)
  • Сервер
  • Внешнее соединение
  • Клиент (обычное приложение)
  • Вызов сервера

Назначение: внутренняя серверная бизнес-логика, недоступная клиентскому коду.

Пример имени: ОбщегоНазначения (или ОбщегоНазначенияСервер).

Свойства:

  • Клиент (управляемое приложение)
  • Сервер
  • Внешнее соединение
  • Клиент (обычное приложение)
  • Вызов сервера

Назначение: серверные процедуры и функции, доступные из клиентского кода.

Пример имени: ОбщегоНазначенияВызовСервера.

Свойства:

  • Клиент (управляемое приложение)
  • Сервер
  • Внешнее соединение
  • Клиент (обычное приложение)
  • Вызов сервера

Назначение: клиентская бизнес-логика.

Пример имени: ОбщегоНазначенияКлиент (или ОбщегоНазначенияГлобальный).

Свойства:

  • Клиент (управляемое приложение)
  • Сервер
  • Внешнее соединение
  • Клиент (обычное приложение)
  • Вызов сервера

Назначение: единый код, одинаково выполняемый на клиенте и сервере.

Пример имени: ОбщегоНазначенияКлиентСервер.

2.1.

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

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

  • Вызов сервера выключен

    чтобы обеспечить корректный вызов процедур и функций, которые работают с мутабельными типами (СправочникОбъект, ДокументОбъект и т.п.).

Типовые случаи:

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

Именуйте такие модули по общим правилам именования.

Примеры

РаботаСФайлами, FilesOperations.

Если возможен конфликт имен с глобальным контекстом, допускается постфикс Сервер (Server).

Примеры

РегламентныеЗаданияСервер, ScheduledJobsServer.

2.2.

Серверные общие модули для вызова с клиента содержат серверные процедуры и функции, которые образуют клиентский API сервера.

  • Вызов сервера включен
  • Внешнее соединение выключен
  • Клиент (обычное приложение) выключен

Именуйте по общим правилам именования с обязательным постфиксом ВызовСервера (ServerCall).

Примеры

РаботаСФайламиСлужебныйВызовСервера, FilesOperationsInternalServerCall.

Экспортные процедуры и функции в таких модулях не должны принимать мутабельные типы (СправочникОбъект, ДокументОбъект и т.п.), потому что их нельзя передавать между клиентом и сервером.

Проверки

#v8cs:common-module-name-cached #v8cs:common-module-name-client-cached #v8cs:common-module-name-server-call-cached #v8cs:common-module-name-server-call #v8cs:extension-md-object-prefix

См. также
2.3.

Клиентские общие модули содержат клиентскую бизнес-логику.

  • Клиент (управляемое приложение)
  • Клиент (обычное приложение)

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

Используйте постфикс Клиент (Client).

Примеры

РаботаСФайламиКлиент, FilesOperationsClient.

См. также: минимизация кода, выполняемого на клиенте.

2.4.

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

  • Вызов сервера выключен

Используйте постфикс КлиентСервер (ClientServer).

Примеры

РаботаСФайламиКлиентСервер, FilesOperationsClientServer.

Если в таком модуле появляется ветвление клиент/сервер, не используйте для этого инструкции препроцессора.

Разделяйте отличающуюся функциональность по модулям соответствующего типа (по правилам п. 2.1 и 2.3).

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

Подробнее: Использование директив компиляции и инструкций препроцессора.

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

3.1.

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

Избегайте общих слов:

  • Процедуры;
  • Функции;
  • Обработчики;
  • Модуль;
  • Функциональность.

Используйте такие слова только в исключительных случаях, когда они реально уточняют назначение.

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

3.2.

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

3.2.1.

Для глобальных модулей используйте постфикс Глобальный (Global). Постфикс Клиент в этом случае не добавляйте.

Свойства:

  • Глобальный

Примеры

РаботаСФайламиСлужебныйГлобальный, FilesOperationsInternalGlobal.

Проверки

#v8cs:common-module-name-global-client

3.2.2.

Для модулей с признаком Привилегированный используйте постфикс ПолныеПрава (FullAccess).

Свойства:

  • Привилегированный

Примеры

РаботаСФайламиСлужебныйПолныеПрава, FilesOperationsInternalFullAccess.

Проверки

#v8cs:common-module-name-full-access

3.2.3.

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

  • ПовтИсп (Cached) — для серверного варианта;
  • КлиентПовтИсп (ClientCached) — для клиентского варианта.

Свойства:

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

Примеры

РаботаСФайламиСлужебныйКлиентПовтИсп, FilesOperationsInternalClientCached.

См. также
3.2.4.

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

  • Переопределяемый (Overridable);
  • КлиентПереопределяемый (ClientOverridable).

Примеры

РаботаСФайламиКлиентПереопределяемый, FilesOperationsClientOverridable.

См. также
3.2.5.

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

  • Локализация (Localization);
  • КлиентЛокализация (ClientLocalization).

Примеры

ЭлектроннаяПодписьСлужебныйЛокализация, ElectronicSignatureInternalLocalization.

См. также
Проверки

#bslls:CommonModuleInvalidType #bslls:CommonModuleNameCached #bslls:CommonModuleNameClientServer #bslls:CommonModuleNameClient #bslls:CommonModuleNameFullAccess #bslls:CommonModuleNameGlobalClient #bslls:CommonModuleNameGlobal #bslls:CommonModuleNameServerCall #bslls:CommonModuleNameWords

#acc:73 #acc:80 #acc:83 #acc:84 #acc:85 #acc:90 #acc:125 #acc:363 #acc:547 #acc:1245

Источник

https://its.1c.ru/db/v8std#content:469