1
0
mirror of https://github.com/ones-devguide/dev-rules.git synced 2026-05-04 19:44:10 +02:00
Files
dev-rules/docs/theory/client_server.md
T
2025-12-19 21:38:00 +07:00

7.4 KiB

sidebar_position, sidebar_label, title
sidebar_position sidebar_label title
2 Клиент-серверное взаимодействие Клиент-серверное взаимодействие

Клиент-серверная архитектура 1С — трехуровневая модель: Клиент (интерфейс), Кластер 1С (логика), СУБД (хранение данных).

Ключевой принцип: "Тяжелый сервер, легкий клиент". Максимальная нагрузка — на кластере, клиент занимается только интерфейсом.

Архитектура в деталях

Уровень Компоненты Назначение Ограничения
Клиент Толстый (1cv8.exe), Тонкий (1cv8c.exe), Веб-клиент Интерфейс пользователя, валидация ввода Нет доступа к базе данных
Кластер 1С Рабочие процессы, менеджер сеансов Обработка бизнес-логики, подготовка форм и отчетов, управление сеансами Клиенты не имеют прямого доступа к БД
СУБД MS SQL, PostgreSQL, Oracle Хранение и обработка данных на SQL-уровне Доступ только через кластер 1С
  • Толстый клиент: «Тяжелый», выполняет логику локально, поддерживает Конфигуратор.
  • Тонкий клиент: «Легкий», только отображение, вся логика на сервере.

Кластер серверов 1С:

  • Промежуточное звено между клиентами и СУБД.
  • Состоит из рабочих процессов, агентов и менеджеров кластера.
  • На него вынесена вся основная работа: выполнение прикладной логики, подготовка форм, формирование отчетов.
  • Обеспечивает масштабируемость, отказоустойчивость и одновременную работу большого числа пользователей.

Директивы компиляции и их использование

Директива Где выполняется Доступ к данным формы Доступ к БД Оптимальное использование
&НаКлиенте Только на клиенте Обработка событий интерфейса, локальная валидация
&НаСервере Только на сервере Действия, требующие и данных формы, и работы с БД
&НаСервереБезКонтекста Только на сервере Получение данных по параметрам без передачи формы
&НаКлиентеНаСервереБезКонтекста И на клиенте, и на сервере Вспомогательные методы, которые нужные в обоих контекстах.

Правило вызовов: Можно вызывать только методы под той же или более ограничивающей директивой (сверху вниз по таблице).

Общие модули

Флаг модуля Назначение Важные нюансы
Клиент/Сервер Определяет, в каких средах будет существовать скомпилированный код
Вызов сервера Позволяет вызывать экспортные функции напрямую из клиентского кода Только для безопасных функций. Не ставить всем серверным модулям!
Глобальный Функции доступны без указания имени модуля Риск конфликтов имен. Использовать осторожно

Правила оптимизации

Главная цель: Минимизировать количество и объем серверных вызовов.

Критическое правило: Одно действие пользователя = один серверный вызов (где возможно).

Главные принципы:

  • Меньше данных: Используйте &НаСервереБезКонтекста, передавайте только нужные параметры, а не всю форму.
  • Разделяйте ответственность: Бизнес-логика — на сервере. Интерфейс — на клиенте.
  • Избегайте вызовов в циклах: Не делайте серверный вызов для каждой строки таблицы. Соберите данные на клиенте и обработайте пакетом за один вызов.
  • Задача разработчика — минимизировать количество и объем серверных вызовов. Код нужно явно разделять между клиентом и сервером.

Сетевое взаимодействие с кластером «1С»

  1. Протокол и адресация: Все компоненты (клиенты, рабочие процессы, менеджеры) общаются по TCP/IP. Каждый процесс имеет уникальный адрес: имя сервера + номер порта.

  2. Порты по умолчанию:

    • Агент сервера: 1540
    • Менеджер кластера: 1541
    • Рабочие процессы и доп. менеджеры: динамически из диапазона 1560:1591
  3. Процесс подключения клиента:

    1. Клиент обращается к Менеджеру кластера (пример: сервер:1541).
    2. Менеджер выбирает свободный Рабочий процесс и сообщает его адрес клиенту (пример: сервер:1561).
    3. Клиент переподключается напрямую к выделенному Рабочему процессу, который и обслуживает всю его сессию.

Материалы