Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Флаг "Сервер" в 1С: назначение и применение
Галочка "Сервер" (флаг Server) — один из ключевых атрибутов модулей в конфигураторе 1С, определяющий, где именно будет выполняться код: на сервере, на клиенте или везде.
Основное назначение флага "Сервер"
Управление местом выполнения кода:
- Отмеченный флаг означает, что процедура/функция выполняется только на серверной части
- Код выполняется в контексте сервера 1С:Предприятия
- Обеспечивает разделение логики между клиентом и сервером
Защита данных и безопасность:
- Серверный код невозможно перехватить или изменить со стороны клиента
- Критичная бизнес-логика, выполняется только на сервере
- Предотвращает несанкционированные операции
- Обеспечивает центральный контроль над данными
Когда использовать флаг "Сервер"
Функции, которые ДОЛЖНЫ быть серверными:
Критичные операции:
- Записьдокументов, изменение остатков, начисление платежей
- Любые операции, влияющие на БД
- Финансовые расчёты и формирование отчётов
- Получение конфиденциальной информации
Работа с базой данных:
Процедура ПолучитьВсеДокументы() Экспорт
// Код с флагом "Сервер" выполняется на сервере
// Выполняется выборка из БД
Запрос = Новый Запрос("ВЫБРАТЬ * ИЗ Документ.ПриходнаяНакладная");
Результат = Запрос.Выполнить();
КонецПроцедуры;
Вычисления и логика:
- Расчёт налогов, зарплаты, себестоимости
- Сложные формулы и алгоритмы
- Интеграции с внешними системами
- Обработка больших объёмов данных
Отличие от клиентского кода
Серверный код (флаг "Сервер" отмечен):
- Выполняется на сервере 1С
- Медленнее в обращении к данным (сетевые задержки)
- Безопасен и защищён
- Имеет доступ ко всем данным, согласно правам БД
Клиентский код (флаг "Сервер" не отмечен):
- Выполняется на клиентской машине пользователя
- Быстрее для локальных операций
- Может быть перехвачен или изменён
- Имеет ограничение по ресурсам машины
Пример: правильное распределение кода
Неправильно (всё на клиенте):
Процедура ЗаписатьДокумент()
// Опасно! Логика на клиенте
Объект = РеквизитФормы("Объект");
Остаток = ПолучитьОстаток() - Объект.Количество;
ОбновитьОстаток(Остаток);
КонецПроцедуры;
Правильно (логика на сервере):
Процедура ЗаписатьДокумент() Экспорт
// На клиенте: форма и UI
Объект = РеквизитФормы("Объект");
РезультатЗаписи = ЗаписатьДокументНаСервере(Объект);
КонецПроцедуры;
Процедура ЗаписатьДокументНаСервере(Объект) Экспорт
// На сервере: критичная логика
Объект.Записать();
ОбновитьОстатки(Объект);
КонецПроцедуры;
Контекст выполнения
Когда необходим флаг "Сервер":
- Работа с данными (SELECT, INSERT, UPDATE, DELETE)
- Чтение/запись файлов на сервере
- Вызовы внешних систем (веб-сервисы, 1С-Бухгалтерия)
- Критичные вычисления
- Логирование и аудит операций
Когда можно без флага:
- Форматирование данных для отображения
- Валидация пользовательского ввода
- Управление интерфейсом
- Локальные вычисления для UI
Флаг "Сервер" — это основной инструмент разделения ответственности в архитектуре клиент-сервер, обеспечивающий безопасность, целостность данных и центральный контроль над бизнес-логикой.