32 или 64 бита: проверяем, какой сервер 1С:Предприятия у вас работает

· 9 мин

Содержание

Быстрее всего разрядность сервера 1С определяется по пути к процессу ragent.exe. Путь начинается с C:\Program Files (x86)\1cv8\ — сервер 32-разрядный (x86). Путь C:\Program Files\1cv8\ на 64-разрядной Windows означает 64-разрядный сервер (x64). Путь видно в Диспетчере задач, в свойствах службы агента или одной командой PowerShell.

Вопрос обычно всплывает не из любопытства. Рабочий процесс падает с нехваткой памяти, внешняя компонента не грузится, а в лицензии написано «x86-64». Ниже разобраны все способы проверки: в Windows, в Linux и изнутри самой 1С. Отдельно — как перейти с 32 бит на 64 и не потерять список баз кластера.

Чем 32-разрядный сервер 1С отличается от 64-разрядного

Сервер 1С 8.3 — это три вида процессов: агент ragent, менеджер кластера rmngr и рабочие процессы rphost. Все они ставятся из одного дистрибутива и имеют одну разрядность. Проверять достаточно любой из них.

Главное различие — память. 32-разрядный процесс адресует не больше 4 ГБ, а на практике рабочему процессу доступно меньше. 64-разрядный процесс упирается только в физическую память сервера и файл подкачки.

Параметрx86 (32 бита)x64 (64 бита)
Память на один rphostдо 4 ГБ на 64-битной Windows, меньше на 32-битнойограничена ресурсами сервера
Каталог установки в WindowsC:\Program Files (x86)\1cv8\C:\Program Files\1cv8\
Можно поставить на 32-битную ОСданет
Внешние компоненты на серверенужны 32-битные версиинужны 64-битные версии
Лицензия на серверподходит 32-битная или 64-битнаянужна 64-битная (x86-64)

Для базы на 10–20 пользователей и пару гигабайт разница может быть незаметна. Когда база растёт, тяжёлые отчёты, закрытие месяца и обновление конфигурации на 32-битном сервере начинают падать с ошибками памяти. Поэтому для новых установок практики ставят x64.

Разрядность клиента и сервера друг от друга не зависят. 32-битный толстый или тонкий клиент спокойно работает с 64-битным сервером. Совпадать должна версия платформы (например, 8.3.24.1548 у клиента и сервера), а не битность.

Способ 1. Диспетчер задач Windows

Самый наглядный путь, если у вас есть доступ к рабочему столу сервера.

  1. Откройте Диспетчер задач: Ctrl+Shift+Esc.
  2. Перейдите на вкладку «Подробности».
  3. Щёлкните правой кнопкой по заголовку любого столбца и выберите «Выбрать столбцы».
  4. Отметьте «Платформа» и «Командная строка», нажмите «ОК».
  5. Найдите в списке ragent.exe, rmngr.exe и rphost.exe.

В столбце «Платформа» будет написано «32 бита» или «64 бита». Это прямой ответ, без догадок по пути. В столбце «Командная строка» видно полный путь к исполняемому файлу и ключи запуска, включая порт агента и каталог srvinfo.

На вкладке «Процессы» 32-битные программы помечены припиской «(32 бита)» после имени. Но процессы сервера там часто свёрнуты в группу служб, поэтому вкладка «Подробности» удобнее.

Если процессов ragent.exe нет вообще — сервер 1С на этой машине не запущен или установлен как приложение, а не как служба. Проверьте службы: Win+R → services.msc, найдите строку с «1C:Enterprise 8.3 Server Agent». У 64-битной установки в названии обычно стоит «(x86-64)».

Способ 2. Путь к файлу и заголовок ragent.exe

Когда Диспетчера задач под рукой нет (сервер без графики, доступ только по файлам), смотрите сам исполняемый файл.

Путь к службе агента

  1. Откройте services.msc.
  2. Откройте свойства службы агента сервера 1С.
  3. На вкладке «Общие» посмотрите поле «Исполняемый файл».

Строка выглядит примерно так:

"C:\Program Files\1cv8\8.3.24.1548\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo"

Program Files без (x86) — 64 бита. Вариант с (x86) — 32 бита.

Проверка по заголовку PE

Путь — косвенный признак. Администратор мог вручную положить 32-битный дистрибутив в любой каталог. Однозначно разрядность записана в заголовке исполняемого файла: поле Machine равно 0x8664 для x64 и 0x14C для x86.

Прочитать его можно в PowerShell без сторонних утилит:

$f = "C:\Program Files\1cv8\8.3.24.1548\bin\ragent.exe"
$b = [System.IO.File]::ReadAllBytes($f)
$pe = [BitConverter]::ToInt32($b, 0x3C)
$m = [BitConverter]::ToUInt16($b, $pe + 4)
switch ($m) { 0x8664 {"x64 (64 бита)"} 0x14C {"x86 (32 бита)"} default {"другое: 0x{0:X}" -f $m} }

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

Если на машине стоит Visual Studio, то же самое покажет dumpbin /headers ragent.exe в строке «machine».

Способ 3. Командная строка: wmic, sc и PowerShell

Удобно, когда вы подключены к серверу удалённо через консоль или проверяете несколько машин скриптом.

wmic

wmic process where "name='ragent.exe'" get ProcessId,ExecutablePath

Команда вернёт PID и полный путь. Дальше всё как во втором способе: Program Files (x86) — 32 бита.

На свежих сборках Windows утилита wmic объявлена устаревшей и может быть не установлена. Тогда используйте PowerShell.

PowerShell

Get-CimInstance Win32_Process -Filter "Name='rphost.exe' OR Name='ragent.exe'" |
  Select-Object Name, ProcessId, ExecutablePath

Для удалённой машины добавьте -ComputerName имя_сервера (нужны права администратора и включённый WinRM).

sc — без запуска процессов

Если служба остановлена, процесса нет, и wmic ничего не найдёт. Путь к файлу берите из настроек службы:

sc query state= all | findstr /i "1C:Enterprise"
sc qc "1C:Enterprise 8.3 Server Agent (x86-64)"

Первая команда покажет точное имя службы на вашей машине. Его подставьте во вторую. В выводе нужна строка BINARY_PATH_NAME.

Способ 4. Изнутри 1С: тип платформы на сервере

Приём, о котором вспоминают реже всего, хотя он не требует доступа к серверу вообще. Встроенный язык знает, на какой платформе выполняется код. Объект СистемнаяИнформация имеет свойство ТипПлатформы.

Если выполнить его в серверном контексте, вы получите тип платформы сервера приложений:

&НаСервере
Функция ТипПлатформыСервера()
	Инфо = Новый СистемнаяИнформация;
	Возврат Строка(Инфо.ТипПлатформы);
КонецФункции

&НаКлиенте
Процедура Проверить(Команда)
	Сообщить("Сервер: " + ТипПлатформыСервера());
КонецПроцедуры

Ответ будет вида Windows_x86_64 (64 бита) или Windows_x86 (32 бита), для Linux — Linux_x86_64. Код удобно положить во внешнюю обработку и открыть через Файл → Открыть в клиент-серверной базе.

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

Открыть внешнюю обработку могут не все пользователи: это зависит от прав. Если команда меню недоступна, попросите администратора базы.

Как проверить разрядность сервера 1С на Linux

В Linux 32-битные и 64-битные сборки сервера лежат в разных каталогах. Начните с процесса:

ps -eo pid,args | grep [r]agent

В выводе будет полный путь. Для новых версий платформы с единым установщиком это /opt/1cv8/x86_64/8.3.xx.xxxx/ragent. В старых пакетах встречается /opt/1C/v8.3/x86_64/ или /opt/1C/v8.3/i386/. Каталог x86_64 — 64 бита, i386 — 32 бита.

Однозначно разрядность покажет утилита file:

file /opt/1cv8/x86_64/8.3.24.1548/ragent

Ответ «ELF 64-bit LSB … x86-64» — сервер 64-битный. «ELF 32-bit LSB … Intel 80386» — 32-битный.

Не путайте разрядность сервера 1С с разрядностью системы. Команда uname -m (ответ x86_64) говорит только о том, что ОС 64-битная. На ней мог быть запущен и 32-битный сервер 1С.

Если сервер работает как служба systemd, путь также видно в её описании:

systemctl list-units --all | grep -i 1c
systemctl status имя_службы

Как перейти с 32-битного сервера 1С на 64-битный

Перевод на x64 не требует выгрузки баз. Базы лежат в СУБД (MS SQL, PostgreSQL), а сервер 1С только работает с ними. Меняется программа сервера, а список баз кластера нужно сохранить.

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

  1. Убедитесь, что ОС 64-битная, а лицензия на сервер — x86-64. 32-битная лицензия на сервер не позволит запустить 64-битный сервер.
  2. Запишите параметры текущей службы: порты (-port, -regport, -range), путь -d к каталогу srvinfo и учётную запись, от которой работает служба.
  3. Скопируйте каталог srvinfo целиком в резервное место. В нём хранится реестр кластера: список баз, рабочие серверы, администраторы.
  4. Остановите службу 32-битного агента и переведите её в тип запуска «Отключена».
  5. Установите 64-битную технологическую платформу той же версии. В установщике отметьте компоненты «Сервер 1С:Предприятия 8» и «Модули расширения веб-сервера», если публикуете базы через веб.
  6. При установке как службы укажите ту же учётную запись и те же порты.
  7. Направьте новую службу на старый каталог srvinfo (ключ -d в командной строке службы) или скопируйте его содержимое в новый каталог.
  8. Запустите службу и откройте консоль администрирования кластера: базы должны быть на месте.
  9. Проверьте вход в 2–3 базы и работу регламентных заданий.

После проверки 32-битную платформу можно удалить через «Программы и компоненты». Не делайте этого раньше: старая служба — путь отката.

Не запускайте две службы агента одновременно. Они займут одни и те же порты 1540 и 1541, вторая не стартует, а в журнале будет ошибка привязки порта.

Что ещё сменить вместе с сервером

  • 🔌 COM-соединение comcntr.dll. Его разрядность должна совпадать с программой, которая подключается к 1С, а не с сервером. Регистрируйте regsvr32 из каталога bin нужной разрядности.
  • 🌐 Публикация на веб-сервере. Модуль wsisapi.dll (IIS) или wsap24.dll (Apache) должен совпадать по разрядности с веб-сервером и с версией платформы.
  • 🧩 Внешние компоненты. Старые компоненты только под x86 на 64-битном сервере не загрузятся. Нужна 64-битная версия от поставщика.
  • 🗂 Консоль администрирования. После переустановки консоль иногда не открывается. Помогает повторная регистрация radmin.dll из каталога bin новой версии: regsvr32 "C:\Program Files\1cv8\8.3.24.1548\bin\radmin.dll".
Перед переходом на x64
Выполнено: 0 / 6

Ошибки, которые указывают на разрядность

Часть проблем выглядит как сбой 1С, а на деле это ограничение 32-битного сервера или несовпадение битности компонентов.

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

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

Можно ли держать 32-битный и 64-битный сервер 1С на одной машине?
Установить обе платформы можно, а запускать две службы агента на одних и тех же портах — нет. Если нужны оба сервера, каждому задают свои порты и свой каталог srvinfo.
Нужно ли переустанавливать клиентов после перехода сервера на x64?
Нет. Клиенты подключаются к 64-битному серверу без изменений. Важно, чтобы версия платформы у клиента и сервера совпадала до последней цифры.
Почему на 64-битной Windows стоит 32-битный сервер 1С?
Обычно так ставили ради старой 32-битной лицензии на сервер или внешней компоненты, существующей только под x86. Иногда — просто по ошибке, выбрав не тот дистрибутив.
Какой сервер выбирать при новой установке?
64-битный, если ОС 64-битная и лицензия x86-64. Причина оставить x86 одна: незаменимая 32-битная внешняя компонента, которую нужно выполнять на сервере.
Влияет ли разрядность сервера 1С на СУБД?
Нет. MS SQL или PostgreSQL имеют свою разрядность и могут стоять на другой машине. Сервер 1С работает с ними как клиент.