diff --git a/src/content/docs/knowledge-base/Примеры, сниппеты/Стандарты, методики и рекомендации/Правила создания общий модулей.md b/src/content/docs/knowledge-base/Примеры, сниппеты/Стандарты, методики и рекомендации/Правила создания общий модулей.md new file mode 100644 index 0000000..f4bef64 --- /dev/null +++ b/src/content/docs/knowledge-base/Примеры, сниппеты/Стандарты, методики и рекомендации/Правила создания общий модулей.md @@ -0,0 +1,57 @@ + +# Правила создания общих модулей + +При разработке общих модулей в 1С следует выбирать один из четырёх контекстов выполнения кода. + +## Типы общих модулей и контексты выполнения + +| № | Тип общего модуля | Пример наименования | Вызов сервера | Сервер | Внешнее соединение | Клиент (обычное приложение) | Клиент (управляемое приложение) | +|----|-------------------------------------|---------------------------------------------|---------------|--------|---------------------|-----------------------------|----------------------------------| +| 1 | Серверный | `ОбщегоНазначения` или `ОбщегоНазначенияСервер` | + | + | + | | | +| 2 | Серверный для вызова с клиента | `ОбщегоНазначенияВызовСервера` | + | + | | | | +| 3 | Клиентский | `ОбщегоНазначенияКлиент` или `ОбщегоНазначенияГлобальный` | | | | + | + | +| 4 | Клиент-серверный | `ОбщегоНазначенияКлиентСервер` | | + | + | + | + | + +**Пояснения:** +- **Вызов сервера** — позволяет вызывать методы модуля с клиента на сервер. +- **Сервер** — методы выполняются на сервере. +- **Внешнее соединение** — доступность методов при внешнем соединении. +- **Клиент (обычное приложение)** — доступность методов в толстом клиенте. +- **Клиент (управляемое приложение)** — доступность методов в тонком клиенте и веб-клиенте. + +## Рекомендации по выбору типа модуля + +- **Серверный модуль**: используется для выполнения операций, требующих доступа к серверным данным или ресурсам. +- **Серверный модуль для вызова с клиента**: предназначен для ситуаций, когда необходимо вызвать серверную логику из клиентского кода. +- **Клиентский модуль**: применяется для реализации логики, выполняемой на клиенте, например, для управления интерфейсом пользователя. +- **Клиент-серверный модуль**: объединяет возможности клиентского и серверного модулей, позволяя использовать общую логику в обоих контекстах. + +## Использование директив компиляции + +Для управления выполнением кода в различных контекстах можно использовать директивы компиляции: + +```1C +#Если Сервер Тогда + // Код, выполняемый на сервере +#Иначе + // Код, выполняемый на клиенте +#КонецЕсли +``` + +Это позволяет создавать универсальные модули, адаптирующие своё поведение в зависимости от контекста выполнения. + +## Повторное использование возвращаемых значений + +Общие модули могут использовать механизм повторного использования возвращаемых значений функций для оптимизации производительности. Это позволяет избежать повторных вычислений при одинаковых входных параметрах. + +Настройка этого поведения осуществляется через свойство модуля: + +- **Не использовать** — повторное использование отключено. +- **На время вызова** — результаты сохраняются на время выполнения функции. +- **На время сеанса** — результаты сохраняются на время сеанса пользователя. + +**Важно:** При использовании этого механизма следует учитывать, что функции должны быть чистыми (не изменять состояние системы) и не иметь побочных эффектов. + +--- + +Для получения более подробной информации и примеров рекомендуется ознакомиться с официальной документацией 1С:ИТС по [ссылке](https://its.1c.ru/db/v8std/content/469/hdoc).