{{tag>1s}} ===== Администрирование 1С ===== === COM объект === к 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): Недопустимая строка с указанием класса === RAS и CRS === Если вдруг понадобиться удалить предыдущие: 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 === дать доступ по RDP пользователю USR1CV8 === Это делается в локальных политиках (gpedit из под админа) Локальный компьютер\Конфигурация компьютера\Конфигурация Windows\Параметры безопасности\Локальные политики\Назначение прав пользователя Запретить вход в систему через службу удалённых рабочих столов Запретить локальный вход Отказать в доступе к этому компьютеру из сети после этого применяем политики: gpupdate /force