• Как создать базу на сервере 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
    Ответ написан
  • Как закрыть элемент root в XML силами PowerShell и экспортировать пачку файлов XML в единый CSV?

    @asoplevenko
    программист 1С
    Доброго времени суток.

    1. Если мы точно знаем как поврежден xml файл – то можно его исправить. Для этого сначала загружаем содержимое файла как текст. Проверяем наличие ошибки, исправляем содержимое, и только потом преобразуем в xml.
    $WorkFolder = "c:\WorkFolder"
    $LogFile = $WorkFolder + "\" + "sample_0001.log"
    $FileContent = (Get-Content $LogFile).Trim()
    if (-not ($FileContent -match "</root>$")){$FileContent += "</root>"}
    [xml]$XmlFile = $FileContent


    2. Обходить файлы в каталоге/каталогах можно с помощью командлета Get-ChildItem. Он позволяет задать отбор файлов по шаблону. Собирать данные csv в одном файле позволяет опция -Append командлета Export-Csv.
    $WorkFolder = "c:\WorkFolder"
    $ResultFile = "$WorkFolder\result.csv"
    
    Get-ChildItem "$WorkFolder\*.log" | ForEach-Object {
    
        $FileContent = (Get-Content $_).Trim()
        if (-not ($FileContent -match "</root>$")){$FileContent += "</root>"}
    
        [xml]$XmlFile = $FileContent
    
        $XmlFile.root.item | Select-Object @(
            @{l="date"; e={$_.date}}
            @{l="time"; e={$_.time}}
            @{l="data1"; e={$_.data1}}
            ) | Export-Csv -Path $ResultFile -NoTypeInformation -Append -Encoding UTF8
    }


    Протестировано на Powershell 5.1
    Ответ написан
    2 комментария