Сервер 1С:Предприятия 8.3 изнутри: от агента до рабочих процессов и базы данных
Содержание
В серверном режиме 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 Server | Windows-инфраструктура, есть лицензии | Редакция Express ограничена по размеру базы (10 ГБ) и ресурсам |
| PostgreSQL | Экономия на лицензиях, Linux | Нужна сборка с патчами под 1С (дистрибутив от 1С или Postgres Pro) |
| IBM Db2, Oracle | Крупные внедрения | Встречаются редко, нужен профильный администратор |
Регистрация базы в кластере
- В консоли раскройте кластер, правой кнопкой по узлу
Информационные базы→Создать→Информационная база. - Укажите имя базы в кластере — его потом пишут в строке подключения клиента.
- Выберите тип СУБД, сервер баз данных, имя базы в СУБД, логин и пароль.
- Флажок «Создать базу данных в случае ее отсутствия» создаст пустую базу на стороне СУБД.
- Сохраните и добавьте базу в список у пользователей: вариант «На сервере 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.
Как найти узкое место
- В консоли откройте
Сеансыбазы: колонки «Время вызова (текущее)», «Память (текущая)» и «Захвачено СУБД» сразу показывают, кто сейчас нагружает сервер. - Посмотрите
Рабочие процессыкластера: размер памяти и признак «Использование» по каждомуrphost. - Включите технологический журнал файлом
logcfg.xmlв каталогеconfплатформы, если нужно найти долгие запросы и ожидания на блокировках. - В консоли есть разделы «Счетчики потребления ресурсов» и «Ограничения потребления ресурсов» — ими можно ограничить, например, длительность или память вызова для конкретной базы или пользователя.
Пример настройки технологического журнала на долгие запросы (длительность в десятитысячных долях секунды, 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С, с модулями расширения веб-сервера.
- Запустите Конфигуратор от имени администратора и выберите
Администрирование → Публикация на веб-сервере. - Укажите имя публикации, тип веб-сервера и каталог. Отметьте, что публиковать: тонкий и веб-клиент, HTTP-сервисы, веб-сервисы.
- После публикации в каталоге появится файл
default.vrdсо строкой подключения к базе. - Адрес для пользователей:
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С и СУБД на одну машину?
Нужно ли устанавливать платформу на компьютеры пользователей?
Почему клиент видит сервер, но не открывает базу?
1540, а 1541 и диапазон рабочих процессов закрыты. Клиент проходит к агенту, но не может установить соединение с рабочим процессом.Должны ли совпадать версии платформы на клиенте и сервере?
Как перенести базу из файлового режима на сервер?
.dt в Конфигураторе файловой базы, создайте пустую базу в кластере и загрузите в неё .dt. Загрузка требует монопольного доступа к новой базе.