Путь запроса в 1С 8.3: от окна программы до базы данных и обратно

· 11 мин

Содержание

Соединение в 1С 8.3 работает по одной из трёх схем. В файловом режиме программа сама читает файл базы 1Cv8.1CD по локальному диску или сетевой папке. В клиент-серверном клиент по TCP обращается к агенту сервера (порт 1540), тот направляет его к менеджеру кластера (1541) и рабочему процессу (порты 1560–1591), а уже рабочий процесс ходит в СУБД. Третья схема — через веб-сервер по HTTP или HTTPS.

Если база «не видит сервер», тормозит по сети или рвёт сеансы, почти всегда виноват один участок этой цепочки. Ниже — как устроена каждая схема, какие порты и настройки за неё отвечают и как быстро найти место обрыва.

Как устроены соединения в 1С: кто с кем разговаривает

У любой схемы три участника: клиентское приложение, место, где выполняется код конфигурации, и хранилище данных.

  • 🖥️ Клиент — толстый клиент, тонкий клиент (1cv8c.exe) или браузер с веб-клиентом. Показывает формы и отправляет запросы.
  • ⚙️ Исполнитель серверного кода — в файловом режиме это сам клиентский процесс, в клиент-серверном — рабочий процесс кластера rphost.
  • 🗄️ Хранилище — файл 1Cv8.1CD или база в СУБД: Microsoft SQL Server, PostgreSQL, IBM Db2, Oracle Database.

Главное различие режимов: где выполняется серверный код. Это определяет, что идёт по сети, сколько трафика и где искать проблему.

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

Файловый и клиент-серверный режим: разница в подключении

Файловый режимКлиент-серверный режимЧерез веб-сервер
Строка в списке базFile="D:\Bases\Buh";Srvr="srv1c";Ref="buh";ws="https://srv/buh";
Что идёт по сетиСтраницы файла базы по SMBВызовы сервера и данные форм по TCPТо же, но в HTTP
Где выполняется код «на сервере»В процессе каждого клиентаВ rphost на сервере 1СВ rphost или в модуле веб-сервера (для файловой базы)
Нужна СУБДНетДаЗависит от базы
Нужна лицензия на серверНетДаЗависит от базы
Типичный сценарий1–5 пользователей в одном офисеДесятки и сотни пользователейУдалённые сотрудники, веб-клиент

Файловый режим

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

Отсюда характерные симптомы. При двух-трёх пользователях в гигабитной сети всё работает быстро. С ростом числа сеансов растёт конкуренция за блокировки, а Wi-Fi и VPN делают работу почти невозможной: каждый запрос — это десятки обращений к файлу через сеть.

Файловую базу на сетевой папке нельзя открывать через нестабильный канал. Обрыв SMB посреди записи — одна из главных причин повреждения 1Cv8.1CD.

Клиент-серверный режим

Здесь клиент передаёт серверу только вызов: «выполни процедуру с такими параметрами». Запрос к данным, расчёты и запись выполняет rphost рядом с СУБД, а клиенту возвращается результат: строки списка, реквизиты формы. Трафик кратно меньше, а блокировками управляет сервер и СУБД.

Агент, менеджер кластера и рабочие процессы: путь соединения по шагам

Сервер 1С:Предприятия — это не один процесс, а несколько. Их удобно видеть в диспетчере задач на сервере:

  • ragent — агент сервера. Работает как служба Windows «Агент сервера 1С:Предприятия 8.3» или как демон в Linux. По умолчанию слушает порт 1540.
  • rmngr — менеджер кластера. Хранит реестр кластера, распределяет сеансы, по умолчанию порт 1541.
  • rphost — рабочие процессы. Выполняют код конфигурации и держат соединения с СУБД. Порты берут из диапазона 1560–1591.
  • ras — сервер администрирования для утилиты rac и консолей, кроме стандартной. Порт по умолчанию 1545, запускается отдельно.

Что происходит, когда пользователь нажимает «1С:Предприятие» в окне запуска:

  1. Клиент обращается к агенту на сервер srv1c на порт 1540.
  2. Агент сообщает, где находится менеджер нужного кластера.
  3. Клиент связывается с менеджером кластера (1541) и называет информационную базу (Ref="buh").
  4. Менеджер выбирает рабочий процесс и сообщает клиенту его адрес и порт.
  5. Клиент открывает соединение с rphost на порт из диапазона 1560–1591. По нему дальше идёт вся работа.
  6. rphost подключается к СУБД с учётными данными из параметров базы.

Из этой цепочки вытекает самый частый подвох. На шагах 2 и 4 сервер возвращает клиенту имя компьютера, а не IP-адрес. Если клиент не может разрешить это имя через DNS, подключение падает, даже когда в строке подключения указан правильный IP.

💡 Проверка простая: на клиенте выполните ping srv1c по тому имени, которое показано в консоли кластера у рабочего сервера. Не отвечает по имени — пропишите запись в DNS или временно в C:\Windows\System32\drivers\etc\hosts.

Диапазоны портов рабочих процессов, а также параметры «Количество ИБ на процесс» и «Количество соединений на процесс» задаются в свойствах рабочего сервера в консоли кластера, а не в свойствах самого кластера.

Где это смотреть: консоль Администрирование серверов 1С Предприятия → ваш сервер → Кластеры → кластер → Рабочие серверы → свойства сервера.

Порты, протоколы и строка подключения к базе

Какие порты открыть

ПортКто слушаетКому открывать
1540 TCPАгент сервера ragentКлиентам и консоли
1541 TCPМенеджер кластера rmngrКлиентам
1560–1591 TCPРабочие процессы rphostКлиентам
1545 TCPСервер администрирования rasТолько администраторам
1433 / 5432 TCPMS SQL / PostgreSQLТолько серверу 1С, не клиентам

Если на одном компьютере работают два кластера, второй обычно ставят на порты 1640/1641. Тогда в строке подключения указывают порт менеджера кластера: Srvr="srv1c:1641";.

Правило для брандмауэра Windows на сервере 1С можно добавить в PowerShell от администратора:

New-NetFirewallRule -DisplayName "1C Server" -Direction Inbound -Protocol TCP -LocalPort 1540,1541,1560-1591 -Action Allow

Строка подключения и список баз

Список баз в окне запуска хранится в файле %APPDATA%\1C\1CEStart\ibases.v8i. Каждая база — секция с параметром Connect:

[Бухгалтерия (сервер)]
Connect=Srvr="srv1c";Ref="buh";

[Склад (файл)]
Connect=File="\\fileserver\1c\sklad";

[Бухгалтерия (через интернет)]
Connect=ws="https://1c.example.ru/buh";

Обратите внимание на два частых промаха:

  • 🔤 Ref — это имя базы в кластере 1С, а не имя базы в SQL Server. Они могут не совпадать.
  • 📁 Для файловой базы указывают папку, где лежит 1Cv8.1CD, а не путь к самому файлу.

Чтобы раздать одинаковый список баз всем пользователям, в файле 1CEStart.cfg указывают общий список: CommonInfoBases=\\fileserver\1c\bases.v8i. Тогда новую базу достаточно добавить один раз.

Версия клиента и сервера

В клиент-серверном режиме версия клиента должна совпадать с версией сервера до последней цифры. Если на сервере 8.3.25.1374, клиент с другой сборкой не подключится. Окно запуска 1cestart.exe подбирает нужную версию само, если она установлена на компьютере. Поэтому после обновления платформы на сервере ставьте ту же сборку клиентам до начала рабочего дня.

Подключение через веб-сервер и из интернета

Третья схема нужна, когда пользователи работают вне офиса или через браузер. Базу публикуют на веб-сервере (Apache или IIS) с модулем расширения 1С, после чего она открывается по адресу вида https://1c.example.ru/buh.

Публикация делается из конфигуратора, запущенного от администратора на компьютере с веб-сервером: Администрирование → Публикация на веб-сервере. Конфигуратор создаёт каталог публикации с файлом default.vrd, где записана строка подключения к базе.

Как идёт соединение в этой схеме:

  1. Тонкий клиент или браузер обращается к веб-серверу по HTTP или HTTPS.
  2. Модуль 1С на веб-сервере для серверной базы подключается к кластеру по тем же портам 1540/1541/1560–1591, для файловой — читает файл сам.
  3. Ответ возвращается клиенту через веб-сервер.

Наружу публикуется только порт 443. Порты кластера и СУБД остаются внутри сети.

Не открывайте порты 1540–1591 и порт СУБД в интернет напрямую. Протокол кластера не рассчитан на открытую сеть. Для удалённой работы есть три нормальных варианта: веб-публикация по HTTPS, VPN до офиса или удалённый рабочий стол (RDP/RemoteApp) на терминальном сервере рядом с базой.

ВариантКогда подходитМинусы
Веб-публикация, HTTPSТонкий клиент или браузер, любая сетьНужен сертификат, веб-сервер, настройка публикации
VPN до офисаКлиент-серверная база, сотрудники с ноутбукамиЧувствителен к задержкам канала; для файловой базы не годится
RDP / RemoteAppФайловая база, слабый канал, много печатиНужен терминальный сервер и лицензии на него

Как найти, где рвётся соединение в 1С

Идите по цепочке от клиента к СУБД и проверяйте каждое звено. Так находится место обрыва, а не перебираются догадки.

  1. Разрешение имени. ping srv1c с клиента. Имя должно отвечать тем же адресом, что и в консоли кластера.
  2. Порт агента. В PowerShell: Test-NetConnection srv1c -Port 1540. В строке TcpTestSucceeded должно быть True.
  3. Порты менеджера и рабочих процессов. Тот же тест для 1541 и любого порта из диапазона, на котором сейчас висит rphost. Фактические порты процессов видны в консоли кластера.
  4. Служба агента. На сервере в services.msc служба агента должна быть в состоянии «Выполняется».
  5. База в кластере. В консоли кластера в разделе Информационные базы должна быть база с именем из Ref.
  6. Связь с СУБД. Если клиент доходит до сервера, но получает ошибку базы данных — проблема между rphost и СУБД: пароль, доступность SQL, права пользователя SQL.
Диагностика: выберите симптом

Перезапуск службы агента или принудительное завершение rphost обрывает сеансы всех пользователей на этом сервере. Несохранённые документы будут потеряны. Делайте это вне рабочего времени или после предупреждения пользователей.

Список сеансов и соединений удобно смотреть утилитой rac. Она подключается к серверу администрирования ras, поэтому сначала запустите его на сервере. Базовые команды: rac cluster list — список кластеров, rac session list --cluster=<id> — сеансы. Полный перечень параметров выдаёт rac help.

Как ускорить работу соединений в 1С

Скорость клиент-серверной 1С упирается чаще всего не в ширину канала, а в задержку. Один вызов сервера — это несколько обменов пакетами, и каждая лишняя миллисекунда умножается на их число.

Между клиентом и сервером 1С

  • 📶 Подключайте рабочие места по кабелю, а не по Wi-Fi: задержка и потери пакетов в беспроводной сети заметно выше.
  • 🐢 Для медленных каналов у тонкого клиента есть режим низкой скорости соединения. Его включают параметром запуска /O Low. Платформа реже обновляет формы и экономит трафик.
  • 🌐 Удалённым офисам на канале с большой задержкой лучше работать через RDP: по сети идёт только картинка экрана, а 1С работает рядом с сервером.

Между сервером 1С и СУБД

Это самый «болтливый» участок: один отчёт может дать тысячи запросов к СУБД.

  • 🔗 Держите сервер 1С и СУБД в одной локальной сети, а лучше на одной машине или в одном гипервизоре.
  • ⚡ Если MS SQL Server стоит на одном компьютере с сервером 1С, включите протокол Shared Memory в SQL Server Configuration Manager. Обмен идёт через память, минуя сетевой стек.
  • 🧮 Следите, чтобы не было антивирусной проверки каталогов базы СУБД и каталога кластера 1С: это заметно замедляет и чтение, и запись.

В настройках кластера

  • Если рабочих процессов не хватает, сеансы скапливаются на одном rphost. Распределение регулируют параметры «Количество ИБ на процесс» и «Количество соединений на процесс» в свойствах рабочего сервера.
  • Перезапуск рабочих процессов по расписанию и по превышению памяти настраивается в свойствах кластера. При перезапуске сеансы переносятся на новый процесс, но долгие операции в момент переключения могут прерваться.

💡 Прежде чем покупать новое железо, замерьте задержку: ping -n 50 srv1c с рабочего места и с сервера 1С до сервера СУБД. Если задержка до СУБД заметно больше 1 мс, это и есть узкое место, которое не исправит ни процессор, ни память.

Проверка подключения к серверу 1С
Выполнено: 0 / 8

Частые вопросы о соединениях в 1С

Можно ли перевести файловую базу в клиент-серверный режим?
Да. Выгрузите базу в файл .dt в конфигураторе, создайте пустую базу в кластере 1С с подключением к СУБД и загрузите в неё этот файл. Нужны установленный сервер 1С, СУБД и лицензия на сервер.
Сколько пользователей выдержит файловая база?
Жёсткого лимита нет. На практике при работе нескольких человек в локальной сети проблем мало, а с ростом числа одновременных проводок и отчётов начинаются ожидания на блокировках. Это сигнал переходить на клиент-серверный вариант.
Почему консоль кластера открывается, а пользователи не подключаются?
Консоль общается только с агентом на порту 1540. Пользователям дополнительно нужны порты менеджера кластера и рабочих процессов, а также разрешение имени сервера.
Нужен ли статический IP для сервера 1С?
Желателен. Клиенты обращаются к серверу по имени, и если адрес меняется, а DNS обновляется с задержкой, подключения будут периодически падать.
Можно ли работать с базой на сервере 1С через браузер?
Да, если база опубликована на веб-сервере. Веб-клиент открывается по адресу публикации без установки платформы на компьютер.