@Nobody_Admin
Швец, жнец, дежурный фиксик, личинка эникейщика.

Как создать базу на сервере 1С с помощью командной строки?

Добрый день. Занимаюсь по мере сил автоматизацией работы с сервером 1С, возник вопрос - как создать новую базу? Покопался в руководствах, написал такую строку, но база не создается:
1cestart.exe CREATEINFOBASE /SSrvr="192.168.0.2\Tst";Ref="Tst";DBMS="PostgreSQL";DBSrvr="192.168.0.2";DB="Tst";DBUID="postgres";DBPwd="postgress_pass";SUsr="admin";SPwd="1cadmin_pass" /AddInList="Tst"


База в Постгрессе на момент выполнения команды не существует. Впрочем, когда я создал её через PgAdmin, ситуация не изменилась.

Где допущена ошибка? Подозреваю, что дело в параметрах соединения, но я не нашел ни одного примера по созданию БД таким образом.
  • Вопрос задан
  • 4523 просмотра
Решения вопроса 1
@asoplevenko
программист 1С
Добрый день. Информация о параметрах командной строки легко ищется в справке самой 1С.
5bb5e952a5dd8956534848.png
Вот, например, статья о параметре "CREATEINFOBASE", с примером:
5bb5e9634798c134075247.png
Вот работающий код на Powershell:
$path1c = "c:\Program Files\1cv8\common\1cestart.exe"
$arg1c = "CREATEINFOBASE Srvr=""localhost"";Ref=""test3"";DBMS=""PostgreSQL"";DBSrvr=""localhost"";DB=""test3"";DBUID=""postgres"";DBPwd=""159753"";CrSQLDB=""Y"";SchJobDn=""N""; /AddInList test3 /Out create.log"
Start-Process $path1c $arg1c
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@pe4enushkin
Небольшой скрипт на поше.
$path1c = "c:\Program Files\1cv8\common\1cestart.exe"
$arg1c = "CREATEINFOBASE Srvr=""{0}"";Ref=""{1}"";DBMS=""{2}"";DBSrvr=""{3}"";DB=""{1}"";DBUID=""{4}"";DBPwd=""{5}"";CrSQLDB=""Y"";SchJobDn=""N""; /AddInList {1} /Out create.log"

$srvr = Read-Host "Введите значение для переменной Srvr"

# Выбор типа ДБ
$validDBMSOptions = @("PostgreSQL", "MySQL", "SQL Server")

Write-Host "Выберите значение для переменной DBMS:"
for ($i = 0; $i -lt $validDBMSOptions.Count; $i++) {
    Write-Host ("{0}. {1}" -f ($i + 1), $validDBMSOptions[$i])
}

while ($true) {
    $choice = Read-Host "Введите номер выбранного варианта (1-$($validDBMSOptions.Count))"

    if ([int]::TryParse($choice, [ref]$null) -and $choice -ge 1 -and $choice -le $validDBMSOptions.Count) {
        $bd_type = $validDBMSOptions[$choice - 1]
        break
    }

    Write-Host "Введено некорректное значение, попробуйте снова."
}

$db_srv = Read-Host "Укажите сервер субд"
$bd_user = Read-Host "Пользователь субд"
$bd_pass = Read-Host "Пароль субд"
$refFile = Read-Host "Путь к текстовому файлу"

Get-Content -Path $refFile | ForEach-Object {
    $ref = $_.Trim()  # удаление возможных пробелов в начале и конце строки значения

    $command = $arg1c -f $srvr, $ref, $bd_type, $db_srv, $bd_user, $bd_pass
    Start-Process $path1c $command

    Write-Host ("Информационная база с именем ""{0}"" успешно создана" -f $ref)
}
Ответ написан
Комментировать
@Xilian
Программист 1С, сетевые технологии, SQL
1cestart.exe - это просто определятель версии базы. Для работы с командной строкой используй "%ProgramFiles(x86)%\1cv8\<версия>\bin\1cv8.exe"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы