Путь запроса в 1С 8.3: от окна программы до базы данных и обратно
Содержание
Соединение в 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С:Предприятие» в окне запуска:
- Клиент обращается к агенту на сервер
srv1cна порт 1540. - Агент сообщает, где находится менеджер нужного кластера.
- Клиент связывается с менеджером кластера (1541) и называет информационную базу (
Ref="buh"). - Менеджер выбирает рабочий процесс и сообщает клиенту его адрес и порт.
- Клиент открывает соединение с
rphostна порт из диапазона 1560–1591. По нему дальше идёт вся работа. 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 TCP | MS 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, где записана строка подключения к базе.
Как идёт соединение в этой схеме:
- Тонкий клиент или браузер обращается к веб-серверу по HTTP или HTTPS.
- Модуль 1С на веб-сервере для серверной базы подключается к кластеру по тем же портам 1540/1541/1560–1591, для файловой — читает файл сам.
- Ответ возвращается клиенту через веб-сервер.
Наружу публикуется только порт 443. Порты кластера и СУБД остаются внутри сети.
Не открывайте порты 1540–1591 и порт СУБД в интернет напрямую. Протокол кластера не рассчитан на открытую сеть. Для удалённой работы есть три нормальных варианта: веб-публикация по HTTPS, VPN до офиса или удалённый рабочий стол (RDP/RemoteApp) на терминальном сервере рядом с базой.
| Вариант | Когда подходит | Минусы |
|---|---|---|
| Веб-публикация, HTTPS | Тонкий клиент или браузер, любая сеть | Нужен сертификат, веб-сервер, настройка публикации |
| VPN до офиса | Клиент-серверная база, сотрудники с ноутбуками | Чувствителен к задержкам канала; для файловой базы не годится |
| RDP / RemoteApp | Файловая база, слабый канал, много печати | Нужен терминальный сервер и лицензии на него |
Как найти, где рвётся соединение в 1С
Идите по цепочке от клиента к СУБД и проверяйте каждое звено. Так находится место обрыва, а не перебираются догадки.
- Разрешение имени.
ping srv1cс клиента. Имя должно отвечать тем же адресом, что и в консоли кластера. - Порт агента. В PowerShell:
Test-NetConnection srv1c -Port 1540. В строкеTcpTestSucceededдолжно бытьTrue. - Порты менеджера и рабочих процессов. Тот же тест для 1541 и любого порта из диапазона, на котором сейчас висит
rphost. Фактические порты процессов видны в консоли кластера. - Служба агента. На сервере в
services.mscслужба агента должна быть в состоянии «Выполняется». - База в кластере. В консоли кластера в разделе
Информационные базыдолжна быть база с именем изRef. - Связь с СУБД. Если клиент доходит до сервера, но получает ошибку базы данных — проблема между
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С
Можно ли перевести файловую базу в клиент-серверный режим?
.dt в конфигураторе, создайте пустую базу в кластере 1С с подключением к СУБД и загрузите в неё этот файл. Нужны установленный сервер 1С, СУБД и лицензия на сервер.