Общий модуль 1С хранит общий алгоритм, который используют документы, справочники, формы, обработки и регламентные задания. Он помогает не копировать один и тот же код по модулям объектов и делает доработку проще для проверки и обновления.
Вынесите код в общий модуль, если он повторяется в двух и более местах, работает с данными независимо от конкретной формы или должен запускаться по расписанию. Логику кнопки оставляйте в модуле формы, а расчёт, запросы и запись данных — в общем серверном модуле.
Процедура выполняет действие без возврата результата, функция возвращает значение. Чтобы вызвать их из другого модуля, добавьте ключевое слово Экспорт.
// Общий модуль ПроверкиДанныхСервер.
Функция МожноПроводитьДокумент(ДокументОбъект) Экспорт
Если Не ЗначениеЗаполнено(ДокументОбъект.Организация) Тогда
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
// Модуль объекта документа.
Если Не ПроверкиДанныхСервер.МожноПроводитьДокумент(ЭтотОбъект) Тогда
Отказ = Истина;
КонецЕсли;
| Где выполняется код | Для чего подходит |
|---|---|
| Сервер | Запросы, запись объектов, регистры, фоновые операции |
| Клиент | Сообщения, элементы формы, интерактивные действия |
| Клиент-сервер | Небольшие функции, доступные с обеих сторон при совместимых типах |
В свойствах общего модуля указывают доступные контексты. Серверный модуль не сделает кнопку на форме сам по себе, а клиентский не должен создавать запрос и писать регистры. Для вызова серверной экспортной функции из управляемой формы используйте корректный флаг «Вызов сервера» и передавайте только необходимые значения.
&НаКлиенте
Процедура ПроверитьПередЗаписью(Команда)
Если Не ПроверкиДанныхКлиентСервер.МожноЗаписатьНаСервере(Объект.Ссылка) Тогда
Сообщить("Проверьте обязательные реквизиты.");
КонецЕсли;
КонецПроцедуры
Имя модуля должно объяснять ответственность: ПроверкиДанных, ИнтеграцияСайта, РасчетыПродаж. Не создавайте один модуль «Общий» на всю конфигурацию: со временем в нём появляются несвязанные процедуры и трудно понять, кто за что отвечает. Клиентскую и серверную части одной задачи удобно разделять именами с суффиксами Клиент, Сервер или КлиентСервер.
Если в конфигурации копируется одинаковый код, ошибки проявляются в разных документах или требуется безопасно расширить типовой алгоритм, структуру модулей лучше продумать до внедрения. Опишите задачу — предложим вариант через расширение без снятия с поддержки.
Станьте частью сообщества!
Войдите или зарегистрируйтесь, и вы сможете участвовать в обсуждениях.