← Назад к вопросам

Для чего нужна галочка "сервер"?

1.3 Junior🔥 131 комментариев
#Стандарты разработки

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Флаг "Сервер" в 1С: назначение и применение

Галочка "Сервер" (флаг Server) — один из ключевых атрибутов модулей в конфигураторе 1С, определяющий, где именно будет выполняться код: на сервере, на клиенте или везде.

Основное назначение флага "Сервер"

Управление местом выполнения кода:

  • Отмеченный флаг означает, что процедура/функция выполняется только на серверной части
  • Код выполняется в контексте сервера 1С:Предприятия
  • Обеспечивает разделение логики между клиентом и сервером

Защита данных и безопасность:

  • Серверный код невозможно перехватить или изменить со стороны клиента
  • Критичная бизнес-логика, выполняется только на сервере
  • Предотвращает несанкционированные операции
  • Обеспечивает центральный контроль над данными

Когда использовать флаг "Сервер"

Функции, которые ДОЛЖНЫ быть серверными:

Критичные операции:

  • Записьдокументов, изменение остатков, начисление платежей
  • Любые операции, влияющие на БД
  • Финансовые расчёты и формирование отчётов
  • Получение конфиденциальной информации

Работа с базой данных:

Процедура ПолучитьВсеДокументы() Экспорт
    // Код с флагом "Сервер" выполняется на сервере
    // Выполняется выборка из БД
    Запрос = Новый Запрос("ВЫБРАТЬ * ИЗ Документ.ПриходнаяНакладная");
    Результат = Запрос.Выполнить();
КонецПроцедуры;

Вычисления и логика:

  • Расчёт налогов, зарплаты, себестоимости
  • Сложные формулы и алгоритмы
  • Интеграции с внешними системами
  • Обработка больших объёмов данных

Отличие от клиентского кода

Серверный код (флаг "Сервер" отмечен):

  • Выполняется на сервере 1С
  • Медленнее в обращении к данным (сетевые задержки)
  • Безопасен и защищён
  • Имеет доступ ко всем данным, согласно правам БД

Клиентский код (флаг "Сервер" не отмечен):

  • Выполняется на клиентской машине пользователя
  • Быстрее для локальных операций
  • Может быть перехвачен или изменён
  • Имеет ограничение по ресурсам машины

Пример: правильное распределение кода

Неправильно (всё на клиенте):

Процедура ЗаписатьДокумент()
    // Опасно! Логика на клиенте
    Объект = РеквизитФормы("Объект");
    Остаток = ПолучитьОстаток() - Объект.Количество;
    ОбновитьОстаток(Остаток);
КонецПроцедуры;

Правильно (логика на сервере):

Процедура ЗаписатьДокумент() Экспорт
    // На клиенте: форма и UI
    Объект = РеквизитФормы("Объект");
    РезультатЗаписи = ЗаписатьДокументНаСервере(Объект);
КонецПроцедуры;

Процедура ЗаписатьДокументНаСервере(Объект) Экспорт
    // На сервере: критичная логика
    Объект.Записать();
    ОбновитьОстатки(Объект);
КонецПроцедуры;

Контекст выполнения

Когда необходим флаг "Сервер":

  • Работа с данными (SELECT, INSERT, UPDATE, DELETE)
  • Чтение/запись файлов на сервере
  • Вызовы внешних систем (веб-сервисы, 1С-Бухгалтерия)
  • Критичные вычисления
  • Логирование и аудит операций

Когда можно без флага:

  • Форматирование данных для отображения
  • Валидация пользовательского ввода
  • Управление интерфейсом
  • Локальные вычисления для UI

Флаг "Сервер" — это основной инструмент разделения ответственности в архитектуре клиент-сервер, обеспечивающий безопасность, целостность данных и центральный контроль над бизнес-логикой.