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

· 9 мин

Содержание

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

Разберём проверку по слоям для обоих вариантов — файловой базы на сетевой папке и клиент-серверной базы на сервере «1С:Предприятие» 8.3. Команды ниже выполняются в обычной командной строке Windows (cmd) на компьютере пользователя, у которого проблема.

С чего начать: пинг и имя сервера

Первым делом проверьте, что компьютер вообще видит сервер по сети. Откройте командную строку и выполните:

ping имя_сервера

Если в ответ идут строки Ответ от ...: байт=32 время=1мс, узел доступен. Если Превышен интервал ожидания или Не удалось обнаружить узел — проблема не в 1С, а в сети или в разрешении имени.

ping может не проходить, даже когда сервер жив: ICMP часто закрыт фаерволом. Поэтому отсутствие пинга — повод проверить дальше, а не окончательный приговор.

Отдельно проверьте, что имя сервера разворачивается в правильный IP:

nslookup имя_сервера

Сверьте выданный адрес с тем, что реально у сервера (на самом сервере — команда ipconfig). Рассинхрон DNS — одна из самых частых причин «вчера работало, сегодня нет»: сервер сменил адрес, а на клиенте остался старый из кэша. Сбросить кэш имён на клиенте:

ipconfig /flushdns

Если сервер в другой подсети или за маршрутизатором и пинг теряет пакеты через раз, посмотрите маршрут до него:

tracert имя_сервера

Длинная цепочка узлов с потерями на каком-то из них подскажет, что проблема в сетевом оборудовании между клиентом и сервером, а не в 1С. Это тот случай, когда диагностику дальше ведёт сетевой администратор.

Отдельно сверьте, что в окне запуска 1С указан правильный адрес. Для клиент-серверной базы в свойствах базы (кнопка Изменить) поле «Кластер серверов » должно содержать актуальное имя или IP сервера «1С:Предприятие», а не старое. Для файловой — правильный каталог.

Проверка доступа к файловой базе

Файловая база — это папка с файлом 1Cv8.1CD на общем сетевом ресурсе. Здесь «соединение» означает сетевой доступ к папке и права на запись.

Проверьте по шагам:

  1. Откройте проводник и вставьте в адресную строку UNC-путь к базе целиком, например \\server\bases\buh. Папка должна открыться без запроса пароля и без ошибки.
  2. Убедитесь, что внутри лежит файл 1Cv8.1CD. Путь к базе в окне запуска 1С должен указывать ровно на эту папку.
  3. Проверьте права: у пользователя должны быть доступ на изменение (чтение и запись), а не только чтение. 1С при входе создаёт служебные файлы блокировки 1Cv8.1CL и временные файлы, и без права записи вход оборвётся.

Файловую базу нельзя класть на диск, подключённый по DFS, в облачную синхронизируемую папку (OneDrive, Яндекс.Диск) или на NAS с агрессивным кэшированием. Это приводит к повреждению 1Cv8.1CD. Для сетевой работы файловую базу держат на обычной общей папке Windows-сервера.

Если папка открывается в проводнике, но 1С выдаёт ошибку — чаще всего дело в блокировке файла 1Cv8.1CD зависшим сеансом. Посмотрите, нет ли рядом файла блокировки 1Cv8.1CL, который остался от аварийно закрытого сеанса. Удалять его можно, только когда в базе точно никто не работает : иначе оборвёте чужой сеанс и рискуете повредить данные.

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

В клиент-серверном варианте между клиентом и базой стоит кластер серверов «1С:Предприятие». Клиент не лезет в файл напрямую — он проходит цепочку:

  • агент сервера (ragent) — точка входа, порт 1540 по умолчанию;
  • менеджер кластера (rmngr) — порт 1541;
  • рабочие процессы (rphost) — динамический диапазон портов, по умолчанию 1560–1591.

Чтобы соединение состоялось, с клиента должны быть открыты как минимум порты 1540, 1541 и весь диапазон рабочих процессов. Проверить доступность порта можно так:

telnet имя_сервера 1540

Чёрный экран без текста или мигающий курсор — порт открыт и кто-то на нём слушает. Сообщение Не удалось открыть подключение... Сбой подключения — порт закрыт или служба не запущена.

Клиент telnet в Windows по умолчанию выключен. Включите его в Панель управления → Программы → Включение или отключение компонентов Windows → Клиент Telnet, либо используйте PowerShell:

Test-NetConnection имя_сервера -Port 1540

Строка TcpTestSucceeded : True означает, что порт доступен.

Проверьте каждый порт из списка: 1540, 1541 и несколько из диапазона 1560–1591. Если открыт только 1540, а остальные закрыты, клиент подключится к агенту, но не сможет начать работу с базой — соединение «подвиснет» на этапе авторизации.

Жива ли сама служба и кластер

На сервере откройте оснастку Администрирование серверов 1С Предприятия. Если в ней виден центральный сервер, кластер и внутри него нужная информационная база — кластер работает.

Если оснастка не подключается к центральному серверу, проверьте, что запущена служба агента сервера. В services.msc она называется примерно Агент сервера 1С:Предприятия 8.3 (1C:Enterprise 8.3 Server Agent). Состояние должно быть «Выполняется».

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

Из командной строки состояние кластера удобно смотреть утилитой администрирования rac. Безопасные команды только на чтение:

rac cluster list
rac infobase summary list --cluster=<идентификатор>

Первая выведет список кластеров с их идентификаторами, вторая — базы в выбранном кластере. Если не помните синтаксис конкретной подкоманды — смотрите встроенную справку rac help, не подбирайте параметры наугад.

Как читать сообщение об ошибке

Текст ошибки при входе подсказывает слой, на котором оборвалась цепочка:

  • сообщение о том, что сервер «1С:Предприятия» не обнаружен, — клиент не достучался до агента на порту 1540: сервер выключен, служба не запущена или закрыт порт;
  • ошибка установки соединения с сервером по таймауту — агент ответил, но дальше по цепочке (менеджер или рабочий процесс) связь не прошла: проверяйте порты 1541 и диапазон 1560–1591;
  • «Ошибка СУБД» или упоминание сервера баз данных — сеть до сервера 1С в порядке, но сам сервер «1С:Предприятие» не смог соединиться со своей СУБД (PostgreSQL или MS SQL). Это уже не клиентская проблема — разбираться нужно на сервере.

Различать эти три случая важно: в первых двух чините сеть и порты на пути клиент → сервер, в третьем — соединение сервер → СУБД, куда клиент вообще не влияет.

Технологический журнал: когда простых проверок мало

Когда сеть и порты в порядке, а соединение всё равно рвётся, подробности даёт технологический журнал (ТЖ). Это текстовый лог событий платформы, который включается файлом настройки logcfg.xml.

Файл кладут в каталог conf установленной платформы (рядом с исполняемыми файлами, папка вида ...\1cv8\conf) — либо на сервере, либо на клиенте, смотря где ловим проблему. Минимальная конфигурация для разбора соединений — писать события подключений и исключений:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="C:\logs_1c" history="24">
    <event>
      <eq property="name" value="CONN"/>
    </event>
    <event>
      <eq property="name" value="EXCP"/>
    </event>
  </log>
</config>

После сохранения файла платформа подхватывает настройку без перезапуска службы в течение примерно минуты. В папке C:\logs_1c появятся подкаталоги процессов с файлами логов.

На что смотреть:

  • событие CONN — установка и разрыв сетевых соединений;
  • событие EXCP — исключения, то есть текст ошибки, который платформа получила в момент сбоя;
  • свойство descr в строке EXCP обычно содержит человекочитаемую причину: отказ в соединении, таймаут, проблема с сертификатом.

Технологический журнал быстро растёт — счёт идёт на гигабайты в час при широком отборе. Включайте его точечно, под конкретную проблему, и обязательно выключайте после диагностики, иначе забьёте диск. Для этого удалите или переименуйте logcfg.xml.

Фаервол и антивирус: что именно блокирует 1С

Если ping проходит, а telnet на порт 1540 — нет, трафик режет фаервол или антивирус. Проверьте оба конца.

На сервере в Брандмауэр Защитника Windows в режиме повышенной безопасности должны быть разрешающие правила для входящих подключений на порты 1540, 1541 и диапазон 1560–1591 (протокол TCP). Если правил нет — их добавляют вручную; создайте правило для входящего трафика по этим портам.

Антивирус с модулем сетевого экрана (Kaspersky, ESET, Dr.Web и другие) ведёт собственный список правил, независимый от брандмауэра Windows. Он может блокировать и порты, и сами процессы ragent.exe, rmngr.exe, rphost.exe.

Как быстро локализовать:

Диагностика: выберите симптом

Проверять «в лоб», временно отключив фаервол на минуту, допустимо на тестовом стенде. На рабочем сервере, смотрящем в интернет, так не делают — лучше точечно открыть порты.

Соединение через VPN и терминальный сервер

При работе через VPN и RDP добавляются свои нюансы, которых нет в локальной сети.

VPN. Самая частая проблема — не закрытый порт, а разорванный MTU. Большие пакеты 1С не проходят через туннель, и соединение «залипает» на передаче данных: окно открылось, а документ не проводится. Проверьте доступность портов изнутри VPN теми же Test-NetConnection или telnet. Если порты открыты, а работа всё равно рвётся на больших операциях — проблема в размере пакета, её решает администратор VPN уменьшением MTU на туннеле.

Терминальный сервер (RDP). Здесь 1С запускается на самом терминальном сервере, а не на машине пользователя. Значит, проверять сеть и порты до сервера баз нужно с терминального сервера, а не с ноутбука пользователя. Пользователь видит лишь картинку рабочего стола.

Частый сценарий — публикация 1С как отдельного приложения RemoteApp. Если приложение не стартует, проверьте, что на терминальном сервере корректно запускается 1cestart.exe (стартёр 1С) и что в его списке есть нужная база. RemoteApp лишь транслирует окно того же стартёра.

При тонком клиенте через веб-сервер (публикация на IIS или Apache) порты кластера 1540–1591 клиенту вообще не нужны — он ходит по HTTP(S) на порт 80/443 веб-сервера. Проверяйте доступность именно веб-публикации, открыв её адрес в браузере.

Короткий порядок диагностики

Чтобы не метаться между слоями, идите по списку сверху вниз и останавливайтесь на первом, что не прошло.

Проверка соединения с базой 1С
Выполнено: 0 / 8

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

Какие порты открыть для работы клиент-серверной базы 1С?
По умолчанию: 1540 (агент сервера), 1541 (менеджер кластера) и диапазон 1560–1591 (рабочие процессы). Если портов менеджера или рабочих процессов несколько, открывают все заданные в настройках кластера и рабочих серверов.
Чем проверить порт, если telnet не установлен?
Командой PowerShell Test-NetConnection имя_сервера -Port 1540. Строка TcpTestSucceeded : True означает, что порт доступен. Устанавливать telnet при этом не нужно.
ping до сервера не проходит — значит, сервер недоступен?
Не обязательно. ICMP (протокол ping) часто закрыт фаерволом, при этом порты 1С открыты и база работает. Ориентируйтесь на проверку конкретного порта через Test-NetConnection, а не только на ping.
Соединение то есть, то пропадает — где искать?
Сначала исключите антивирус: его сетевой экран периодически перепроверяет процессы и может рвать сессии. Добавьте процессы 1С в исключения. Если не помогло — включите технологический журнал по событиям CONN и EXCP и посмотрите причину разрыва в свойстве descr.
Нужно ли открывать порты кластера для веб-клиента?
Нет. При работе через опубликованную на веб-сервере базу клиент обращается к порту 80 или 443 веб-сервера по HTTP(S). Порты кластера 1540–1591 нужны только толстому и тонкому клиенту, подключающимся к серверу 1С напрямую.