Сервер 1С:Предприятия 8.3 изнутри: от агента до рабочих процессов и базы данных

· 10 мин

Содержание

В серверном режиме 1С работает в три звена: клиент (тонкий, толстый или веб) отправляет запросы серверу 1С:Предприятия, рабочие процессы сервера выполняют серверный код конфигурации, а данные хранятся в отдельной СУБД — MS SQL Server, PostgreSQL, IBM Db2 или Oracle. Клиент сначала стучится к агенту сервера на порт 1540, тот передаёт его менеджеру кластера (1541), а дальше соединение уходит в рабочий процесс из диапазона 1560:1591.

Схема общая для платформы 8.3 и не зависит от конфигурации: БП, ЗУП, УТ и ERP работают на сервере одинаково. Разберём, кто за что отвечает, где хранятся настройки, как распределить память и права и чем веб-клиент отличается от тонкого.

Клиент-серверная схема 1С: три звена вместо одного файла

В файловом варианте база — это один файл 1Cv8.1CD. Каждый клиент сам открывает его по сети и сам считает проводки, остатки и отчёты. Блокировки идут на уровне файла, и при 10–15 активных пользователях всё начинает тормозить.

В клиент-серверном варианте работа разделена:

  • 🖥️ Клиент — показывает формы, принимает ввод, выполняет клиентский код. Тяжёлых расчётов почти не делает.
  • ⚙️ Сервер 1С:Предприятия — выполняет серверные процедуры модулей, запросы, проведение, регламентные задания. Держит сеансы и кэш метаданных.
  • 🗄️ СУБД — хранит таблицы базы, выполняет SQL-запросы, которые сервер 1С строит из запросов на языке 1С.

Сервер 1С и СУБД могут стоять на одной машине или на разных. Для 20–50 пользователей обычно хватает одной машины, дальше СУБД выносят отдельно.

Где выполняется код

Разработчик управляет местом исполнения директивами компиляции. Процедура с &НаКлиенте выполняется у пользователя, с &НаСервере или &НаСервереБезКонтекста — в рабочем процессе сервера. Каждый вызов сервера с клиента — это сетевой обмен, поэтому хорошая конфигурация делает мало вызовов, но содержательных.

&НаКлиенте
Процедура Рассчитать(Команда)
	Итог = ПолучитьИтогНаСервере(Объект.Ссылка);
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьИтогНаСервере(Документ)
	Запрос = Новый Запрос("ВЫБРАТЬ СУММА(Т.Сумма) КАК Итог ИЗ Документ.РеализацияТоваровУслуг.Товары КАК Т ГДЕ Т.Ссылка = &Ссылка");
	Запрос.УстановитьПараметр("Ссылка", Документ);
	Выборка = Запрос.Выполнить().Выбрать();
	Возврат ?(Выборка.Следующий(), Выборка.Итог, 0);
КонецФункции

Запрос уходит на сервер одним вызовом, сервер 1С превращает его в SQL, СУБД считает сумму, на клиент возвращается одно число.

Кластер серверов 1С: агент, менеджер и рабочие процессы

Кластер — это логическая единица, которая объединяет один или несколько рабочих серверов и обслуживает список информационных баз. На одной машине обычно один кластер, но их может быть несколько на разных портах.

ПроцессПорт по умолчаниюЧто делает
ragent — агент сервера1540Принимает первое обращение клиента и консоли, хранит список кластеров
rmngr — менеджер кластера1541Ведёт реестр баз, сеансов, блокировок, распределяет нагрузку
rphost — рабочий процесс1560–1591Выполняет серверный код и запросы к СУБД
ras — сервер администрирования1545Нужен утилите rac и сторонним консолям

Путь соединения такой: клиент обращается к агенту на 1540, агент сообщает адрес менеджера кластера на 1541, менеджер выдаёт рабочий процесс из диапазона портов. Диапазон задаётся в свойствах рабочего сервера, а не кластера. Если на брандмауэре открыт только 1540, клиент увидит базу в списке, но подключиться не сможет.

Консоль администрирования серверов (MMC-оснастка в Windows) тоже идёт через агент на 1540. Если оснастка не открывается после переустановки платформы, перерегистрируйте radmin.dll нужной версии командой regsvr32 из каталога bin этой версии.

Служба агента и каталог srvinfo

Установщик платформы регистрирует агент как службу «Агент сервера 1С:Предприятия 8.3». При ручной регистрации в Windows используется ragent.exe с ключами портов и рабочего каталога:

"C:\Program Files\1cv8\8.3.24.1548\bin\ragent.exe" -instsrvc -usr .\USR1CV8 -pwd Пароль -regport 1541 -port 1540 -range 1560:1591 -d "D:\srvinfo"

Номер версии в пути подставьте свой. В каталоге srvinfo (у нас это D:\srvinfo) лежат реестр кластера 1CV8Clst.lst, сеансовые данные и кэши баз. Его разумно держать на быстром SSD и включить в резервную копию — без 1CV8Clst.lst кластер «забудет» список баз и настройки.

В Linux сервер ставится в /opt/1cv8/x86_64/<версия>/ и запускается как systemd-служба. Порты и каталог srvinfo те же по смыслу.

Несколько рабочих серверов

В кластер можно добавить второй и третий рабочий сервер. Менеджер кластера распределяет соединения между рабочими процессами всех серверов. Параметры отказоустойчивости и требования назначения функциональности (какой сервер берёт клиентские соединения, какой — фоновые задания) настраиваются в свойствах рабочего сервера.

Связка с СУБД: как 1С хранит данные на сервере

Сервер 1С не хранит данные сам. Каждая информационная база в кластере — это запись с параметрами подключения к конкретной базе в СУБД.

СУБДКогда выбираютЧто учесть
MS SQL ServerWindows-инфраструктура, есть лицензииРедакция Express ограничена по размеру базы (10 ГБ) и ресурсам
PostgreSQLЭкономия на лицензиях, LinuxНужна сборка с патчами под 1С (дистрибутив от 1С или Postgres Pro)
IBM Db2, OracleКрупные внедренияВстречаются редко, нужен профильный администратор

Регистрация базы в кластере

  1. В консоли раскройте кластер, правой кнопкой по узлу Информационные базы → Создать → Информационная база.
  2. Укажите имя базы в кластере — его потом пишут в строке подключения клиента.
  3. Выберите тип СУБД, сервер баз данных, имя базы в СУБД, логин и пароль.
  4. Флажок «Создать базу данных в случае ее отсутствия» создаст пустую базу на стороне СУБД.
  5. Сохраните и добавьте базу в список у пользователей: вариант «На сервере 1С:Предприятия», кластер и имя базы.

Строка подключения клиента выглядит так: Srvr="srv1c";Ref="buh_main";. Если кластер на нестандартном порту, порт пишут через двоеточие: Srvr="srv1c:2541" — указывается порт менеджера кластера.

Логину СУБД, под которым работает 1С, нужны права владельца своей базы (в MS SQL — роль db_owner). Создавать базы из консоли получится, только если у логина есть право создавать базы на сервере СУБД. Давать sysadmin «чтобы точно работало» — плохая привычка.

Что происходит при запросе

Запрос на языке 1С сервер транслирует в SQL под конкретную СУБД. Временные таблицы из запросов попадают во временную область СУБД: в MS SQL это tempdb, поэтому её размещают на быстром диске. Блокировки данных в режиме управляемых блокировок держит сам сервер 1С, а СУБД работает с более мягким уровнем изоляции. Отсюда меньше взаимоблокировок, чем в старом автоматическом режиме.

Ресурсы и производительность сервера 1С

Типичная жалоба «1С на сервере тормозит» почти никогда не лечится одной галочкой. Сначала надо понять, где узкое место: рабочий процесс, диск СУБД, сеть или код конфигурации.

Настройки рабочего сервера, которые реально влияют

  • 🔢 Количество ИБ на процесс и количество соединений на процесс — определяют, сколько рабочих процессов поднимет сервер. При значении 0 ограничения нет.
  • 🧠 Объём памяти рабочих процессов — порог, после которого сервер перестаёт считать процессы «производительными» и не отдаёт им новые соединения.
  • 🚨 Безопасный расход памяти за один вызов — защищает от одного кривого отчёта, который съест всю память: вызов, превысивший лимит, прерывается с ошибкой у пользователя, остальные продолжают работать.
  • 🧩 Менеджер под каждый сервис — выносит службы кластера в отдельные процессы rmngr, полезно на нагруженных кластерах.

Ориентир по памяти: на каждые 10 активных пользователей типовой конфигурации закладывают 2–4 ГБ под рабочие процессы, плюс отдельная память для СУБД. Для MS SQL ограничьте «максимальную память сервера», иначе он заберёт всю оперативку и вытеснит rphost.

Как найти узкое место

  1. В консоли откройте Сеансы базы: колонки «Время вызова (текущее)», «Память (текущая)» и «Захвачено СУБД» сразу показывают, кто сейчас нагружает сервер.
  2. Посмотрите Рабочие процессы кластера: размер памяти и признак «Использование» по каждому rphost.
  3. Включите технологический журнал файлом logcfg.xml в каталоге conf платформы, если нужно найти долгие запросы и ожидания на блокировках.
  4. В консоли есть разделы «Счетчики потребления ресурсов» и «Ограничения потребления ресурсов» — ими можно ограничить, например, длительность или память вызова для конкретной базы или пользователя.

Пример настройки технологического журнала на долгие запросы (длительность в десятитысячных долях секунды, 50000 = 5 секунд):

<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="D:\techlog" history="24">
    <event>
      <eq property="name" value="DBMSSQL"/>
      <gt property="duration" value="50000"/>
    </event>
    <property name="all"/>
  </log>
</config>

Технологический журнал без фильтра за час может вырасти на десятки гигабайт. Ставьте фильтры, ограничивайте history и убирайте файл, когда разбор закончен.

Регламентные задания

Фоновые и регламентные задания тоже выполняются в рабочих процессах. Обмен с банком, загрузка курсов, полнотекстовый индекс — всё это нагрузка на тот же сервер. На копиях баз (тестовых, обучающих) включайте флажок «Блокировка регламентных заданий» в свойствах базы в кластере, иначе копия начнёт слать данные в ЭДО и банк.

Безопасность сервера 1С и права доступа

Права в серверной 1С разделены на несколько уровней. Путать их — частая причина, по которой «администратор» не может ни создать базу, ни завершить чужой сеанс.

УровеньГде задаётсяЧто даёт
Администратор центрального сервераАгент сервера (узел «Администраторы» на уровне агента)Создание и удаление кластеров
Администратор кластераСвойства кластера → «Администраторы»Управление базами, сеансами, рабочими серверами
Пользователь базыКонфигуратор или Администрирование → Настройки пользователей и правРабота в конкретной базе по ролям
Логин СУБДСервер СУБДДоступ сервера 1С к таблицам

Пока в списке администраторов кластера пусто, управлять им может любой, кто дотянулся до порта 1540. Заведите администратора сразу после установки.

Ещё четыре вещи, которые закрывают основные дыры:

  • 🔒 Служба агента работает под отдельной учётной записью (по умолчанию USR1CV8) без прав администратора Windows.
  • 🧱 Порты 1540, 1541, 1545 и рабочий диапазон открыты только из локальной сети или VPN, не в интернет.
  • 🛡️ Профили безопасности кластера ограничивают, к каким файлам, COM-объектам и внешним ресурсам серверный код базы имеет доступ. Это защищает от внешних обработок с сюрпризом.
  • 🔑 Для пользователей включают аутентификацию операционной системы — тогда не нужно хранить пароли 1С в ярлыках.

Если пароль администратора кластера потерян, не пересоздавайте кластер. Остановите службу агента в нерабочее время (все сеансы оборвутся), восстановите 1CV8Clst.lst из резервной копии или обратитесь к тому, кто настраивал сервер.

Веб-клиент и тонкий клиент при работе через сервер

Тонкий клиент может подключаться к серверу 1С напрямую (строка Srvr=...;Ref=...;) или через веб-сервер по HTTP. Веб-клиент работает только через веб-сервер — в браузере ничего ставить не нужно.

Как устроена публикация

Цепочка такая: браузер или тонкий клиент → веб-сервер (Apache 2.4 или IIS) → модуль расширения веб-сервера 1С → кластер серверов → СУБД. Сам модуль ставится вместе с платформой как компонент «Модули расширения веб-сервера».

  1. Установите на веб-сервер ту же версию платформы, что и на сервере 1С, с модулями расширения веб-сервера.
  2. Запустите Конфигуратор от имени администратора и выберите Администрирование → Публикация на веб-сервере.
  3. Укажите имя публикации, тип веб-сервера и каталог. Отметьте, что публиковать: тонкий и веб-клиент, HTTP-сервисы, веб-сервисы.
  4. После публикации в каталоге появится файл default.vrd со строкой подключения к базе.
  5. Адрес для пользователей: http://имя_сервера/имя_публикации.

Для Linux и автоматизации есть консольная утилита webinst. Например, для Apache 2.4:

sudo /opt/1cv8/x86_64/8.3.24.1548/webinst -publish -apache24 -wsdir buh -dir /var/www/buh -connstr 'Srvr="srv1c";Ref="buh_main";' -confpath /etc/apache2/apache2.conf

Публикация через Конфигуратор и webinst перезаписывает конфиг веб-сервера, а для применения нужен его перезапуск. Делайте это вне рабочего времени: у всех, кто сейчас в веб-клиенте, оборвётся работа.

Чем отличаются режимы на практике

РежимПлюсыОграничения
Тонкий клиент напрямуюБыстрый отклик, меньше звеньевНужен доступ к портам кластера
Тонкий клиент через HTTPРаботает через интернет по 80/443Лишнее звено, нужен HTTPS
Веб-клиентБез установки, с любой ОСЧасть внешних компонент и работа с файлами ограничены

Для удалённых сотрудников наружу выставляют только веб-сервер с HTTPS, а сам сервер 1С остаётся во внутренней сети.

Лицензии на сервере 1С

Серверный вариант требует двух видов лицензий: лицензию на сервер 1С:Предприятия (на каждый рабочий сервер; для 64-разрядного сервера нужна лицензия с поддержкой x86-64) и клиентские лицензии по числу одновременных пользователей.

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

rac session list --licenses --cluster=<UUID_кластера>

UUID кластера возвращает rac cluster list. Для работы rac должен быть запущен сервер администрирования ras.

Минимальная настройка нового сервера 1С
Выполнено: 0 / 7

Частые вопросы

Можно ли поставить сервер 1С и СУБД на одну машину?
Да. Для 20–50 пользователей это нормальная схема. Главное — ограничить память СУБД, чтобы рабочим процессам 1С хватило оперативки.
Нужно ли устанавливать платформу на компьютеры пользователей?
Для тонкого клиента — да, только клиентскую часть той же версии, что и сервер. Для веб-клиента ничего ставить не надо, нужен браузер.
Почему клиент видит сервер, но не открывает базу?
Чаще всего на брандмауэре открыт только порт 1540, а 1541 и диапазон рабочих процессов закрыты. Клиент проходит к агенту, но не может установить соединение с рабочим процессом.
Должны ли совпадать версии платформы на клиенте и сервере?
Да, номер версии должен совпадать полностью, иначе тонкий клиент к серверу не подключится. Если на компьютере стоит несколько версий платформы, нужную указывают в свойствах базы в окне запуска, в поле «Версия 1С:Предприятия».
Как перенести базу из файлового режима на сервер?
Выгрузите базу в .dt в Конфигураторе файловой базы, создайте пустую базу в кластере и загрузите в неё .dt. Загрузка требует монопольного доступа к новой базе.