к 1С можно обращаться через COM объект, для этого нужно зарегистрировать библиотеку:
set SrvVersion=8.3.18.1334 regsvr32 /s -n -i:user "C:\Program Files\1cv8\%SrvVersion%\bin\comcntr.dll"
в powershell
$ComCntr=(Get-WmiObject win32_service | ?{$_.Name -eq '1C:Enterprise 8.3 Server Agent (x86-64)'}).PathName.split('"')[1].Replace("ragent.exe","comcntr.dll")
$ComCntr="/s -n -i:user ""$ComCntr"""
Start-Process regsvr32.exe -ArgumentList "$ComCntr"
если этого не сделать 1Серы будут ругаться такими ошибками:
При попытке подключения к информационной базе произошла ошибка: Ошибка при вызове конструктора (COMОбъект): Недопустимая строка с указанием класса
или
Не удалось подключится к другой программе: -2147221005(0x800401F3): Недопустимая строка с указанием класса
Если вдруг понадобиться удалить предыдущие:
set SrvVersion=8.3.14.1565 "C:\Program Files\1cv8\%SrvVersion%\bin\crserver.exe" -rmsrvc sc delete "1C:Enterprise 8.3 Remote Administration Server"
Добавляем службы RAS и CRS
set SrvUserName="USR1C82@mi.local" set SrvUserPwd="***" set SrvVersion=8.3.14.1565 "C:\Program Files\1cv8\%SrvVersion%\bin\crserver.exe" -instsrvc -port 1542 -d F:\RootRepository\ -usr %SrvUserName% -pwd %SrvUserPwd% sc create "1C:Enterprise 8.3 Remote Administration Server" binPath= "\"C:\Program Files\1cv8\%SrvVersion%\bin\ras.exe\" cluster -- service --port 1545 localhost:1540" start= auto obj= %SrvUserName% password= %SrvUserPwd% displayname= "1C:Enterprise 8.3 Remote Administration Server" sc description "1C:Enterprise 8.3 Remote Administration Server" "1C:Enterprise 8.3 Remote Administration Server"
(Добавление/Удаление службы RAS в powershell)
New-Service ` -Name "1C:Enterprise 8.3 Remote Administration Server" ` -DisplayName "1C:Enterprise 8.3 Remote Administration Server" ` -Description "1C:Enterprise 8.3 Remote Administration Server" ` -BinaryPathName "`"C:\Program Files\1cv8\8.3.24.1467\bin\ras.exe`" cluster --service --port 1545 localhost:1540" ` -StartupType Automatic ` -Credential .\usr1cv8 ` -DependsOn "1C:Enterprise 8.3 Server Agent (x86-64)" ` | Start-Service Get-Service -Name "1C:Enterprise 8.3 Remote Administration Server" ` | Stop-Service -PassThru ` | Remove-Service
частая проблема какие порты открывать на сервере 1С
если на сервере расположена база SQL, а 1С сервера расположены на других машинах, то нужно открыть порт SQL сервера tcp 1433, но ограничить удаленные ip - адресами 1С серверов.
если SQL сервер и 1С сервер на одном хосте, то tcp 1433 открывать не нужно, это серьезная брешь в безопасности
Порт tcp 1540 должен быть открыт для других 1С серверов и Компьютеров с которых будет запускаться оснастка управления кластерами 1С
Если Агент сервера 1С запущен с параметром /debug и программистам требуется подключаться отладчиком с удалённой машины то для неё на сервере 1С нужно открыть порт по умолчанию tcp 1550 изменить порт можно в файле конфигурации кластера C:\Program Files\1cv8\srvinfo\reg_1541\1CV8Clst.lst в секции [ServerAgent] параметр DebugPort=1550 Там же можно включить отладку: параметр Debug=1
для того чтобы к 1С серверу могли подключаться толстые и тонкие клиенты нужно пробросить порты tcp 1541, 1560-1591 - это порты по умолчанию их всегда нужно проверять в настройках 1С сервера:
для этого нужно запустить оснастку Администрирование серверов 1С Предприятия x86-64
Console Root -> Central 1C:Enterprise 8.3 servers -> имя нашего сервера -> ПКМ -> Свойства -> IP Порт (по-умолчанию: 1540) Console Root -> Central 1C:Enterprise 8.3 servers -> имя нашего сервера -> Кластеры -> Локальный Кластер -> ПКМ -> Свойства -> IP Порт (по-умолчанию: 1541) Console Root -> Central 1C:Enterprise 8.3 servers -> имя нашего сервера -> Кластеры -> Локальный Кластер -> Рабочие серверы -> имя нашего сервера -> ПКМ -> Свойства -> Диапазоны IP Портов (по-умолчанию: 1560:1591)
для того чтобы к 1С серверу могли подключаться web клиенты - нужно открыть порт web сервера (по-умолчанию 443 в локальной сети возможно 80), какой именно нужно смотреть в настройках веб сервера.
Если развернут 1C Configuration Repository Server то по-умолчанию он работает на порту tcp 1542 Это можно проверить в свойствах службы 1C:Enterprise 8.3 Configuration Repository Server, в поле исполняемый файл параметр -port
Если запущен 1C:Enterprise 8.3 Remote Administration Server то по-умолчанию порт 1545, проверка в свойствах службы
Порты по-умолчанию (все порты TCP):
| MSSQL | Агент | Менеджер кластера | CRS | Конфигуратор в режиме агента | RAS | Debug server | Рабочие процессы |
|---|---|---|---|---|---|---|---|
| 1433 | 1540 | 1541 | 1542 | 1543 | 1545 | 1550 | 1560-1590 |
1С сервер откажется создавать файл публикации если не обнаружит веб сервера на localhost 1С сервер можно обмануть таким способом:
mkdir C:\apache\conf sc create Apache2.4 DisplayName= Apache2.4 binPath= "\"C:\apache\bin\httpd.exe\" -k runservice" start= disabled echo "1C" > C:\apache\conf\httpd.conf
пример для базы данных trade_dev
USE [trade_dev]
GO
UPDATE Files SET BinaryData = CAST ('' as varbinary(max)), datasize = 0 WHERE FileName = 'c01b78f6-1525-41b1-9cc1-69e3da58d2ac.pfl'
GO
Это делается в локальных политиках (gpedit из под админа)
Локальный компьютер\Конфигурация компьютера\Конфигурация Windows\Параметры безопасности\Локальные политики\Назначение прав пользователя Запретить вход в систему через службу удалённых рабочих столов Запретить локальный вход Отказать в доступе к этому компьютеру из сети
после этого применяем политики: gpupdate /force