cmdlets/Designer1C.ps1
. $PSScriptRoot\CommonUtils\classLog.ps1 . $PSScriptRoot\CommonUtils\CommonUtils.ps1 . $PSScriptRoot\Common1C.ps1 function New-Designer1C { <# .SYNOPSIS Возвращает экземпляр класса Designer1c. .DESCRIPTION Создает объект класса Designer1C позволяющий работать с командной строкой 1С в объектной технике. .NOTES В методе класса CreateInfoBaseSrvr для задания типа СУБД используется перечисление: enum TypeDBMS { MSSQLServer, PostgreSQL, IBMDB2, OracleDatabase } Перечисление добавляется в текущую сессию методом AddType при первом вызове New-Designer1C. После после чего оно будет доступно как обычный тип. Например: [TypeDBMS]::MSSQLServer .PARAMETER PathBase Задается адрес расположения базы (можно установить методом SetBase): - для файловой базы c:\CatalogBases1C\NameBase - для клиент-серверной базы NameServer[:NumberPort]\NameBase - для базы на веб-сервере http://NameWebServer/NameBase Псевдонимы: b .PARAMETER UserName Имя пользователя базы (можно установить методом SetUserBase). Псевдонимы: u .PARAMETER PasswordUser Пароль пользователя базы (можно установить методом SetUserBase). Псевдонимы: p .PARAMETER IBName Имя базы как оно задано в окне запуске 1С. Псевдонимы: ib .PARAMETER Platform Номер версии платформы 8.3.XX.XXXX. Если не задан, то будет произведен поиск в стандартном каталоге установки последней установленной версии платформы. Игнорируется если задан параметр IBName. .PARAMETER LogFile Полный путь к лог-файлу. Псевдонимы: l, log .PARAMETER Settings Путь к файлу значений полей класса выгруженных методом ExportToYAML или ExportToJSON (можно загрузить методом ImportFrom) Псевдонимы: set, import .EXAMPLE #Создать объект для работы с командной строкой платформы $Designer = New-Designer1C 'c:\Namebase' 'Администратор' .EXAMPLE #Создать базу на сервере 1С при этом сервер СУБД имеет такое же имя как и имя сервера 1С. #По умолчанию тип СУБД имеет значение перечисления [TypeDBMS]::MSSQLServer #Тип перечисления добавляется в текущую сессию методом AddType при первом вызове New-Designer1C. $Designer = New-Designer1C 'ИмяСервера1С\ИмяБазы' 'Администратор' $Designer.CreateInfoBaseSrvr('ИмяАдминистратораСУБД', 'ПарольАдминистратораСУБД') .EXAMPLE #Создать базу на сервере 1С при этом имя сервера СУБД отличается от имени сервера 1С. #Для задания типа СУБД используется явное указание значения перечисления. #Тип перечисления добавляется в текущую сессию методом AddType при первом вызове New-Designer1C. $Designer = New-Designer1C 'ИмяСервера1С\ИмяБазы' 'Администратор' $Designer.CreateInfoBaseSrvr([TypeDBMS]::PostgreSQL, 'ИмяСервераСУБД', 'ИмяАдминистратораСУБД', 'ПарольАдминистратораСУБД') .EXAMPLE #Посмотреть все свойства и методы класса (со всеми перегрузками методов) New-Designer1C | Get-Member | Format-List #> [CmdletBinding()] param( [Alias("b")][string]$PathBase='', [Alias("u")][string]$UserName='', [Alias("p")][string]$PasswordUser='', [Alias("ib")][string]$IBName='', [string]$Platform='', [Alias("l", "log")][string]$LogFile='', [Alias("set", "import")][string]$Settings='' ) Add-Type -TypeDefinition " public enum TypeDBMS { MSSQLServer, PostgreSQL, IBMDB2, OracleDatabase }" $Designer = New-Object Designer1C($PathBase, $UserName, $PasswordUser, $IBName, $Platform, $LogFile) if ('' -ne $Settings) { $Designer.ImportFrom($Settings) } $Designer }# end New-Designer1C # Перечисление типы серверов баз данных для создания базы данных на сервере enum TypeDBMS { MSSQLServer PostgreSQL IBMDB2 OracleDatabase } # описание класса class Designer1C { #region Properties hidden [string]$PathBase='' hidden [string]$ConnectionString='' hidden [hashtable]$UserBase=$null [String]$Storage='' hidden [hashtable]$UserStorage=$null hidden [string]$IBName='' hidden [string]$Platform='' hidden [string]$Exe1cv8='' $Log = $null hidden [string]$NameBase='' [bool]$Debug=$false hidden [bool]$Done=$false hidden [string]$DumpResult='' #endregion Properties #region Constructor Designer1C() { $this.SetBase('', '', '', '', '','') } Designer1C([String]$PathBase, [String]$UserName, [String]$PasswordUser, [String]$IBName, [String]$Platform, [string]$LogFile) { $this.SetBase($PathBase, $UserName, $PasswordUser, $IBName, $Platform, $LogFile) } #endregion Constructor #region Methods [bool] CommandIsDone() { return $this.Done } #region SetBase [void] SetBase() { $this.SetBase('', '', '', '', '','') } [void] SetBase([String]$PathBase) { $this.SetBase($PathBase, '', '', '', '','') } [void] SetBase([String]$PathBase, [String]$UserName, [String]$PasswordUser) { $this.SetBase($PathBase, $UserName, $PasswordUser, '', '','') } [void] SetBase([String]$PathBase, [String]$UserName, [String]$PasswordUser, [String]$LogFile) { $this.SetBase($PathBase, $UserName, $PasswordUser, '', '', $LogFile) } [void] SetBase([String]$PathBase, [String]$UserName, [String]$PasswordUser,` [String]$IBName, [String]$Platform, [string]$LogFile) { $this.PathBase = $PathBase $this.SetLog($LogFile) $this.IBName = $IBName $this.Platform = $Platform $this.SetNameBase() $this.SetConnectionString() if ('' -ne $UserName){ $this.SetUserBase($UserName, $PasswordUser) } $this.SetExe1cv8() }# end SetBase #endregion SetBase [void] SetLog() { $this.SetLog('', $false)} [void] SetLog([string]$FullName) { $this.SetLog($FullName, $true)} [void] SetLog([string]$FullName, [bool]$Append) { if ($null -eq $this.Log) { $this.Log = New-Log $FullName -Append:$Append } elseif ('' -ne $FullName) { $this.Log.SetFullName($FullName, $Append) } }# end SetLog [string] GetNameBase() { if ('' -eq $this.NameBase) { $this.SetNameBase() } return $this.NameBase } hidden [void] SetNameBase() { $this.NameBase = $this.IBName if ('' -ne $this.PathBase) { if ($this.PathBase.ToLower().IndexOf('http://') -ge 0 ` -or $this.PathBase.ToLower().IndexOf('https://') -ge 0 ` -or (Test-Path $this.PathBase) ` -or $this.PathBase.split('\').Length -eq 2) { $Path = $this.PathBase.TrimEnd('\').TrimEnd('/') $Index = $Path.LastIndexOf('\') if($Index -lt 0) {$Index = $Path.LastIndexOf('/')} $this.NameBase = $Path.Substring($Index+1) } } }# end SetNameBase hidden SetConnectionString() { if ('' -ne $this.IBName) { $this.ConnectionString = '/IBName "{0}"' -f $this.IBName.Replace('"','""') } elseif ('' -ne $this.PathBase) { if ($this.PathBase.ToLower().IndexOf('http://') -ge 0 ` -or $this.PathBase.ToLower().IndexOf('https://') -ge 0) { $this.ConnectionString = '/WS"{0}"' -f $this.PathBase } elseif (Test-Path $this.PathBase) { $this.ConnectionString = '/F"{0}"' -f $this.PathBase } elseif ($this.PathBase.split('\').Length -eq 2) { $this.ConnectionString = '/S"{0}"' -f $this.PathBase } } }# end SetConnectionString hidden [string] GetConnectionString() { return $this.ConnectionString } [string] GetIBName(){ return $this.IBName } [void] SetIBName([string]$IBName){ $this.SetIBName($IBName, '', '', '') } [void] SetIBName([string]$IBName, [String]$UserName, [String]$PasswordUser, [string]$LogFile){ $this.IBName = $IBName $this.SetLog($LogFile) $this.PathBase = '' $this.Platform = '' if ('' -ne $UserName){ $this.SetUserBase($UserName, $PasswordUser) } $this.SetNameBase() $this.SetConnectionString() $this.SetExe1cv8() } [string] GetExe1cv8() { return $this.Exe1cv8 } #region SetExe1cv8 <# В SetExe1cv8 можно передать: - пустую строку - будет произведен поиск в стандартном каталоге последней установленной версии платформы - каталог установки 1С - будет произведен поиск последней установленной версии - номер версии платформы в формате 8.3.XX.XXXX - в стандартном каталоге установки, в подкаталоге с заданным номером версии будет произведен поиск 1cv8.exe - непосредственно сам exe файл платформы - если не задан IBName, то установит его, если задан IBName устанавливает '\common\1cestart.exe' из стандартного каталога #> [void] SetExe1cv8() { $this.SetExe1cv8('') } [void] SetExe1cv8([string]$VersionCatalogExe) { $this.Exe1cv8 = Get-Exe1C $VersionCatalogExe $Name = Get-VersionCatalogExe $this.Exe1cv8 $this.Platform = $Name.VersionPlatform1C $InstalledLocation1C = Get-InstalledLocation1C if ('' -ne $Name.InstalledLocation1C) { $InstalledLocation1C = $Name.InstalledLocation1C } if ('' -ne $this.IBName){ $this.Platform = '' $this.Exe1cv8 = $InstalledLocation1C + 'common\1cestart.exe' } }# end SetExe1cv8 #endregion SetExe1cv8 [string] GetPlatform(){ return $this.Platform } [hashtable] GetUserBase() { if ($null -eq $this.UserBase){ $this.UserBase = @{Name=''; Password=''} } return $this.UserBase }# end GetUserBase [void] SetUserBase([string]$UserName) { $this.SetUserBase($UserName, '') }# end SetUserBase [void] SetUserBase([string]$UserName, [string]$UserPassword) { $this.UserBase = @{Name=$UserName; Password=$UserPassword} }# end SetUserBase hidden [string] GetLoginBase() { $Login = @() if ($null -ne $this.UserBase){ if ('' -ne $this.UserBase.Name){ $Login += '/N"{0}"' -f $this.UserBase.Name.Trim('"') if ('' -ne $this.UserBase.Password){ $Login += '/P"{0}"' -f $this.UserBase.Password } } } return ([string]$Login).Trim() }# end GetLoginBase [void] SetStorage([string]$Storage, [string]$UserName) { $this.SetStorage($Storage, $UserName, '') } [void] SetStorage([string]$Storage, [string]$UserName, [string]$UserPassword) { $this.Storage = $Storage $this.UserStorage = @{Name=$UserName; Password=$UserPassword} }# end SetStorage [hashtable] GetUserStorage() { if ($null -eq $this.UserStorage){ $this.UserStorage = @{Name=''; Password=''} } return $this.UserStorage }# end GetUserStorage hidden [string] GetLoginStorage() { $Login = @() if ('' -ne $this.Storage) { $Login += '/ConfigurationRepositoryF"{0}"' -f $this.Storage.Trim('"') if ($null -ne $this.UserStorage){ if ('' -ne $this.UserStorage.Name){ $Login += '/ConfigurationRepositoryN"{0}"' -f $this.UserStorage.Name.Trim('"') if ('' -ne $this.UserStorage.Password) { $Login += '/ConfigurationRepositoryP"{0}"' -f $this.UserStorage.Password } } } } return ([string]$Login).Trim() }# end GetLoginStorage #region ExportTo [string] ExportToYAML(){ return $this.ExportTo('', 'YAML') } [string] ExportToYAML([string]$PathFile){ return $this.ExportTo($PathFile, 'YAML') } [string] ExportToJSON(){ return $this.ExportTo('', 'JSON') } [string] ExportToJSON([string]$PathFile){ return $this.ExportTo($PathFile, 'JSON') } hidden [string] ExportTo([string]$PathFile, [string]$Format){ $Result = '' if ('' -eq $PathFile) { if ('JSON' -eq $Format) { $Result = ConvertTo-Json $this } elseif ('YAML' -eq $Format){ $Result = ConvertTo-Yaml -Data $this } } else { if ('JSON' -eq $Format) { ConvertTo-Json $this | Out-File $PathFile } elseif ('YAML' -eq $Format) { ConvertTo-Yaml -Data $this | Out-File $PathFile } } return $Result } #endregion ExportTo #region ImportFrom [void] ImportFrom([string]$PathFile){ if ($null -eq $PathFile -or '' -eq $PathFile -or !(Test-Path $PathFile)){ return } $string_cfg = Get-Content $PathFile -Raw $FormatConfig = "YAML" if ($string_cfg.Trim()[0] -eq "{") { $FormatConfig = "JSON" } $DataClass = $null if("YAML" -eq $FormatConfig) { $DataClass = ConvertFrom-Yaml -Yaml $string_cfg } elseif("JSON" -eq $FormatConfig) { $DataClass = ConvertFrom-Json $string_cfg | Convert-PSObjectToHashtable } if ($null -eq $DataClass) { Write-Warning 'Не удалось распознать формат данных. На текущий момент поддерживаются форматы YAML и JSON.' return } $this.PathBase = $DataClass.PathBase $this.SetLog($DataClass.Log.FullName) $this.Log.Silent = $DataClass.Log.Silent $this.Log.TemplateMessage = $DataClass.Log.TemplateMessage $this.Log.Symbol = $DataClass.Log.Symbol $this.Log.AmountSymbol = $DataClass.Log.AmountSymbol $this.IBName = $DataClass.IBName $this.Platform = $DataClass.Platform $this.NameBase = $DataClass.NameBase $this.SetConnectionString() $this.UserBase = $DataClass.UserBase $this.Storage = $DataClass.Storage $this.UserStorage = $DataClass.UserStorage if ('' -eq $this.IBName) { $this.Platform = $DataClass.Platform $this.Exe1cv8 = $DataClass.Exe1cv8 } else { $this.SetExe1cv8() } if ($null -ne $DataClass.Debug) { $this.Debug = $DataClass.Debug } if ($null -ne $DataClass.Done) { $this.Done = $DataClass.Done } } #endregion ImportFrom #region RunEnterprise [void] RunEnterprise(){ $Wait = $false $Enterprise = $true $this.Run('', @(), $Wait, $Enterprise) } [void] RunEnterprise([string]$Command){ $Wait = $false $Enterprise = $true $this.Run($Command, @(), $Wait, $Enterprise) } [void] RunEnterprise([string]$Command, [bool]$Wait){ $Enterprise = $true $this.Run($Command, @(), $Wait, $Enterprise) } [void] RunEnterprise([string]$Command, [System.Array]$Parametrs){ $Wait = $false $Enterprise = $true $this.Run($Command, $Parametrs, $Wait, $Enterprise) } [void] RunEnterprise([string]$Command, [System.Array]$Parametrs, [bool]$Wait){ $Enterprise = $true $this.Run($Command, $Parametrs, $Wait, $Enterprise) } #endregion RunEnterprise [void] Open(){ $Wait = $false $Enterprise = $false $this.Run('', @(), $Wait, $Enterprise) } #region Run [void] Run([string]$Command){ $Wait = $true $Enterprise = $false $this.Run($Command, @(), $Wait, $Enterprise) } [void] Run([string]$Command, [bool]$Wait){ $Enterprise = $false $this.Run($Command, @(), $Wait, $Enterprise) } [void] Run([string]$Command, [System.Array]$Parametrs){ $Wait = $true $Enterprise = $false $this.Run($Command, $Parametrs, $Wait, $Enterprise) } [void] Run([string]$Command, [System.Array]$Parametrs, [bool]$Wait){ $Enterprise = $false $this.Run($Command, $Parametrs, $Wait, $Enterprise) } [void] Run([string]$Command, [System.Array]$Parametrs, [bool]$Wait, [bool]$Enterprise){ $WatchKey = [System.Diagnostics.Stopwatch]::StartNew() # секундомер команды $WatchKey.Start() $Command = $Command.Replace("<NameBase>", $this.GetNameBase()) $Command = $Command.Replace("<Date>", (Get-Date -Format yyyyMMdd)) $Command = $Command.Replace("<Time>", (Get-Date -Format hhmm)) $Arguments = $this.GetArguments($Command, $Parametrs) if ($Enterprise){ $Arguments[0] = 'ENTERPRISE' } if ($Wait -and '' -ne $this.log.GetFullName()){ $Arguments += ("/Out {0} -NoTruncate" -f $this.log.GetFullName()) } #/DumpResult <имя файла> #Записать результат работы конфигуратора в файл. Результат ‑ число (0 ‑ в случае успеха). $tmpFile = New-TemporaryFile if ('' -ne $this.DumpResult) { $tmpFile = $this.DumpResult } $Arguments += ("/DumpResult {0}" -f $tmpFile) $Indent = 12 if ('' -eq $Command){ $this.Log.Write("Запуск".PadRight($Indent) + $Arguments[0]) } else { $this.Log.Write("Выполняется".PadRight($Indent) + $Command) } #$Silent = ('' -ne $this.Log.FullName) $Silent = $true $RealCommand = '"{0}" {1}' -f $this.exe1cv8, [string]$Arguments $this.Log.Write(("Команда".PadRight($Indent) + $RealCommand), $Silent) $this.Done = $false if(!$this.Debug) { $process1cv8 = Start-Process -FilePath $this.exe1cv8 -ArgumentList $Arguments -Wait:$Wait -PassThru $buffer = (Get-Content $tmpFile) if ($buffer.Length -gt 0) { Write-Verbose ('process1cv8.ExitCode = {0}' -f $process1cv8.ExitCode) Write-Verbose ('DumpResult = {0} (0 = успех, 1 = ошибка)' -f $buffer[0]) $this.Done = ($buffer[0] -eq '0') } } $WatchKey.Stop() #Запись в лог замера времени для ключа if ($Wait){ $this.Log.Write("Затрачено".PadRight($Indent) + ("{0:hh}:{0:mm}:{0:ss}" -f $WatchKey.Elapsed)) } Remove-Item -Path $tmpFile }# end Run [System.Array] GetArguments(){ return GetArguments('', @()) } [System.Array] GetArguments([String]$Command){ return GetArguments($Command, @()) } hidden [System.Array] GetArguments([string]$Command, [System.Array]$Parametrs){ $Arguments = @('DESIGNER') if ($Command.ToUpper().Contains("CREATEINFOBASE")){ $Arguments = @('CREATEINFOBASE') } else { $Arguments += $this.GetConnectionString() $Arguments += $this.GetLoginBase() $Arguments += $this.GetLoginStorage() $Arguments += $Command } $Arguments += [string]$Parametrs $Arguments = $Arguments | Where-Object{$_ -ne ''} return $Arguments } #endregion Run #endregion Methods #region CreateInfoBase #region File [void] CreateInfoBaseFile() { $this.CreateInfoBaseFile('') } [void] CreateInfoBaseFile([string]$NameToList) { $Param = @(("File={0};" -f $this.PathBase)) if ('' -ne $NameToList){ $Param += "/AddList $NameToList" } $this.Run("CREATEINFOBASE", $Param) } #endregion File #region Srvr <# Параметры подключения: Srvr - ИмяСервера[:НомерПорта] <- $this.PathBase <- NameServer:Port\NameBase Ref - Имя базы на сервере 1С <- $this.PathBase <- NameServer:Port\NameBase DBMS - Тип сервера СУБД может быть: - MSSQLServer - PostgreSQL - IBMDB2 - OracleDatabase DBSrvr - Имя сервера СУБД DB - имя базы на сервере СУБД = Ref DBUID - логин пользователя СУБД с правами на создание баз DBPwd - пароль пользователя СУБД SQLYOffs - смещение дат = 2000 Locale - Если параметр не задан, то будут использованы региональные установки текущей информационной базы. Допустимые значения такие же, как у параметра <Форматная строка> метода Формат(). Необязательный. CrSQLDB - создать базу в случае ее отсутствия. Может быть Y или N без учета регистра. Если не задан, то N. SchJobDn - В созданной базе запретить выполнение регламентных созданий. Может быть Y или N без учета регистра. Если не задан, то N. SUsr - Имя администратора кластера, в котором должен быть создан начальный образ. Параметр необходимо задавать, если в кластере определены администраторы и для них аутентификация операционной системы не установлена или не подходит. SPwd - Пароль администратора кластера. #> hidden [void] TestTypeDBMS([TypeDBMS]$DBMS){ $this.Log.OutValue("$DBMS = [TypeDBMS]::MSSQLServer", $DBMS -eq [TypeDBMS]::MSSQLServer) $this.Log.OutValue("$DBMS = [TypeDBMS]::PostgreSQL", $DBMS -eq [TypeDBMS]::PostgreSQL) $this.Log.OutValue("$DBMS = [TypeDBMS]::IBMDB2", $DBMS -eq [TypeDBMS]::IBMDB2) $this.Log.OutValue("$DBMS = [TypeDBMS]::OracleDatabase", $DBMS -eq [TypeDBMS]::OracleDatabase) } [void] CreateInfoBaseSrvr([string]$UserDBSrvr, [string]$PwdUserDBSrvr) { $this.CreateInfoBaseSrvr([TypeDBMS]::MSSQLServer,'', '', $UserDBSrvr, $PwdUserDBSrvr, 'Y', 'N', '', '', '') } [void] CreateInfoBaseSrvr([string]$UserDBSrvr, [string]$PwdUserDBSrvr, [string]$NameToList) { $this.CreateInfoBaseSrvr([TypeDBMS]::MSSQLServer,'', '', $UserDBSrvr, $PwdUserDBSrvr, 'Y', 'N', $NameToList, '', '') } [void] CreateInfoBaseSrvr([TypeDBMS]$DataBaseManagmentSystem, [string]$NameDBSrvr,` [string]$UserDBSrvr, [string]$PwdUserDBSrvr) { $this.CreateInfoBaseSrvr($DataBaseManagmentSystem, $NameDBSrvr, '', $UserDBSrvr, $PwdUserDBSrvr,` 'Y', 'N', '', '', '') } [void] CreateInfoBaseSrvr([TypeDBMS]$DataBaseManagmentSystem, [string]$NameDBSrvr,` [string]$UserDBSrvr, [string]$PwdUserDBSrvr, [string]$NameToList) { $this.CreateInfoBaseSrvr($DataBaseManagmentSystem, $NameDBSrvr, '', $UserDBSrvr, $PwdUserDBSrvr,` 'Y', 'N', $NameToList, '', '') } [void] CreateInfoBaseSrvr([TypeDBMS]$DataBaseManagmentSystem, [string]$NameDBSrvr, [string]$NameDB,` [string]$UserDBSrvr, [string]$PwdUserDBSrvr,` [string]$CreateDBifNull, [string]$ScheduleJobOff, [string]$NameToList,` [string]$AdminCluster, [string]$PwdAdminCluster) { $Names = $this.PathBase.Split('\') $Srvr = $Names[0] $Ref = $Names[1] $Srvr1C = "Srvr=$Srvr;Ref=$Ref;" if ('' -eq $NameDBSrvr){ $NameDBSrvr = $Srvr} if ('' -eq $NameDB){ $NameDB = $Ref} if ($null -eq $DataBaseManagmentSystem){ $DataBaseManagmentSystem = [TypeDBMS]::MSSQLServer } $DBMS = "DBMS=$DataBaseManagmentSystem;DBSrvr=$NameDBSrvr;DB=$NameDB;DBUID=$UserDBSrvr;" if ('' -ne $PwdUserDBSrvr){ $DBMS += "DBPwd=$PwdUserDBSrvr;" } $AddSettings = "SQLYOffs=2000;" if ('' -ne $CreateDBifNull){ $AddSettings += "CrSQLDB=$CreateDBifNull;" } if ('' -ne $ScheduleJobOff){ $AddSettings += "SchJobDn=$ScheduleJobOff;" } if ('' -ne $AdminCluster){ $AddSettings += "SUsr=$AdminCluster;" } if ('' -ne $PwdAdminCluster){ $AddSettings += "SPwd=$PwdAdminCluster;" } # $LocaleSettings = "Locale=$Locale;" $Param = @("$Srvr1C$DBMS$AddSettings") if ('' -ne $NameToList){ $Param += "/AddList $NameToList" } $this.Run("CREATEINFOBASE", $Param) } #endregion Srvr #endregion CreateInfoBase #region Unloading_and_loading_of_information_base [void] DumpIB([string]$FileDT){ $this.Run(('/DumpIB "{0}"' -f $FileDT)) }# end DumpIB [void] RestoreIB([string]$FileDT){ $this.Run(('/RestoreIB "{0}"' -f $FileDT)) }# end RestoreIB #endregion Unloading_and_loading_of_information_base #region Configuration_and_extensions #region DumpCfg [void] DumpCfg([string]$FileCF){ $this.Run(('/DumpCfg "{0}"' -f $FileCF)) } [void] DumpCfg([string]$FileCF, [string]$NameExtension){ $this.Run(('/DumpCfg "{0}" -Extension "{1}"' -f $FileCF, $NameExtension)) } #endregion DumpCfg #region LoadCfg [void] LoadCfg([string]$FileCF){ $this.LoadCfg($FileCF, $false) } [void] LoadCfg([string]$FileCF, [bool]$UpdDBCfg){ $Param = @() if ($UpdDBCfg){ $Param += $this.GetCommandUpdateDBCfg() } $this.Run(('/LoadCfg "{0}"' -f $FileCF), $Param) } [void] LoadCfg([string]$FileCF, [string]$NameExtension){ $this.LoadCfg($FileCF, $NameExtension, $false) } [void] LoadCfg([string]$FileCF, [string]$NameExtension, [bool]$UpdDBCfg){ $Param = @() if ($UpdDBCfg){ $Param += $this.GetCommandUpdateDBCfg() } $this.Run(('/LoadCfg "{0}" -Extension "{1}"' -f $FileCF, $NameExtension), $Param) } #endregion LoadCfg #region UpdateDBCfg [void] UpdateDBCfg(){ $this.UpdateDBCfg($false) } [void] UpdateDBCfg([bool]$Dynamic){ $this.Run($this.GetCommandUpdateDBCfg($Dynamic)) }# end UpdateDBCfg hidden [string] GetCommandUpdateDBCfg(){ return $this.GetCommandUpdateDBCfg($false) } hidden [string] GetCommandUpdateDBCfg([bool]$Dynamic){ $ModeDynamic = '-Dynamic–' if ($Dynamic){ $ModeDynamic = '-Dynamic+' } return "/UpdateDBCfg $ModeDynamic" }# end GetCommandUpdateDBCfg #endregion UpdateDBCfg #region DumpConfigToFiles [void] DumpConfigToFiles([string]$UploadDirectory){ $this.DumpConfigToFiles($UploadDirectory, '') } [void] DumpConfigToFiles([string]$UploadDirectory, [string]$ListFiles){ $Param = @() if ('' -ne $ListFiles){ $Param += $this.GetListFiles($ListFiles) } $this.Run(('/DumpConfigToFiles "{0}"' -f $UploadDirectory), $Param) } #endregion DumpConfigToFiles hidden [string] GetListFiles($ListFiles){ $i = 0 $Key = '-listFiles' foreach($line in [System.IO.File]::ReadLines($ListFiles)){ if($line -match ','){ $Key = '-Files' break } if ($i -eq 3) { break } $i += 1 } return ('{0} "{1}"' -f $Key, $ListFiles) } #region LoadConfigFromFiles [void] LoadConfigFromFiles([string]$LoadDirectory){ $this.LoadConfigFromFiles($LoadDirectory, '', $false) } [void] LoadConfigFromFiles([string]$LoadDirectory, [bool]$UpdDBCfg){ $this.LoadConfigFromFiles($LoadDirectory, '', $UpdDBCfg) } [void] LoadConfigFromFiles([string]$LoadDirectory, [string]$ListFiles, [bool]$UpdDBCfg){ $Param = @() if ('' -ne $ListFiles){ $Param += $this.GetListFiles($ListFiles) } if ($UpdDBCfg){ $Param = @($this.GetCommandUpdateDBCfg()) } $this.Run(('/LoadConfigFromFiles "{0}"' -f $LoadDirectory), $Param) } #endregion LoadConfigFromFiles #endregion Configuration_and_extensions #region Configuration_storage_commands #region RepositoryBindCfg [void] RepositoryBindCfg(){ $this.RepositoryBindCfg($true, $true, '') } [void] RepositoryBindCfg([bool]$forceBindAlreadyBindedUser){ $this.RepositoryBindCfg($forceBindAlreadyBindedUser, $true, '') } [void] RepositoryBindCfg([bool]$forceBindAlreadyBindedUser, [bool]$forceReplaceCfg, [string]$Extension){ $Param = @() if ($forceBindAlreadyBindedUser){ $Param += '-forceBindAlreadyBindedUser' } if ($forceReplaceCfg){ $Param += '-forceReplaceCfg' } if ('' -ne $Extension){ $Param += ('-Extension "{0}"' -f $Extension) } $this.Run('/ConfigurationRepositoryBindCfg', $Param) } #endregion RepositoryBindCfg #region RepositoryDumpCfg [void] RepositoryDumpCfg([string]$FileCF){ $this.RepositoryDumpCfg($FileCF, '', '') } [void] RepositoryDumpCfg([string]$FileCF, [string]$Version, [string]$Extension) { $Param = @($FileCF) if ('' -ne $Version){ $Param += ('-v {0}' -f $Version) } if ('' -ne $Extension){ $Param += ('-Extension "{0}"' -f $Extension) } $this.Run('/ConfigurationRepositoryDumpCfg', $Param) } #endregion RepositoryDumpCfg #region RepositoryLock [void] RepositoryLock([string]$Objects){ $this.RepositoryLock($Objects, $true, '') } [void] RepositoryLock([string]$Objects, [bool]$Revised){ $this.RepositoryLock($Objects, $Revised, '') } [void] RepositoryLock([string]$Objects, [bool]$Revised, [string]$Extension){ $Param = @() if ('' -ne $Objects){ $Param += ('-Objects "{0}"' -f $Objects) } if ($Revised){ $Param += '-revised' } if ('' -ne $Extension){ $Param += ('-Extension "{0}"' -f $Extension) } $this.Run('/ConfigurationRepositoryLock', $Param) } #endregion RepositoryLock #region RepositoryCommit [void] RepositoryCommit([string]$Objects){ $this.RepositoryCommit($Objects, '', $false, $false, '') } [void] RepositoryCommit([string]$Objects, [string]$Comment){ $this.RepositoryCommit($Objects, $Comment, $false, $false, '') } [void] RepositoryCommit([string]$Objects, [string]$Comment, [bool]$keepLocked){ $this.RepositoryCommit($Objects, $Comment, $keepLocked, $false, '') } [void] RepositoryCommit([string]$Objects, [string]$Comment, [bool]$keepLocked, [bool]$Force){ $this.RepositoryCommit($Objects, $Comment, $keepLocked, $Force, '') } [void] RepositoryCommit([string]$Objects, [string]$Comment, [bool]$keepLocked, [bool]$Force, [string]$Extension){ $Param = @() if ('' -ne $Objects){ $Param += ('-Objects "{0}"' -f $Objects) } if ('' -ne $Comment){ $Comment -split "`n" | foreach{$Param += ('-Comment "{0}"' -f $_)} } if ($keepLocked){ $Param += '-keepLocked' } if ($Force){ $Param += '-force' } if ('' -ne $Extension){ $Param += ('-Extension "{0}"' -f $Extension) } $this.Run('/ConfigurationRepositoryCommit', $Param) } #endregion RepositoryCommit #region RepositoryUnLock [void] RepositoryUnLock([string]$Objects){ $this.RepositoryUnLock($Objects, $false, '') } [void] RepositoryUnLock([string]$Objects, [bool]$Force){ $this.RepositoryUnLock($Objects, $Force, '') } [void] RepositoryUnLock([string]$Objects, [bool]$Force, [string]$Extension){ $Param = @() if ('' -ne $Objects){ $Param += ('-Objects "{0}"' -f $Objects) } if ($Force){ $Param += '-force' } if ('' -ne $Extension){ $Param += ('-Extension "{0}"' -f $Extension) } $this.Run('/ConfigurationRepositoryUnLock', $Param) } #endregion RepositoryUnLock #region RepositoryUpdateCfg [void] RepositoryUpdateCfg([string]$Version){ $this.RepositoryUpdateCfg($Version, $false, $true, '', '') } [void] RepositoryUpdateCfg([bool]$Revised){ $this.RepositoryUpdateCfg('', $Revised, $true, '', '') } [void] RepositoryUpdateCfg([string]$Version, [bool]$Revised, [bool]$Force, [string]$Objects, [string]$Extension){ $Param = @() if ('' -ne $Version){ $Param += ('-v {0}' -f $Version) } if ($Revised){ $Param += '-revised' } if ($Force){ $Param += '-force' } if ('' -ne $Objects){ $Param += ('-Objects "{0}"' -f $Objects) } if ('' -ne $Extension){ $Param += ('-Extension "{0}"' -f $Extension) } $this.Run('/ConfigurationRepositoryUpdateCfg', $Param) } #endregion RepositoryUpdateCfg #endregion Configuration_storage_commands #region The command to create a file delivery and update #region CreateDistributionFiles [void] CreateDistributionFiles([string]$cffile){ $this.CreateDistributionFiles($cffile, '', '', '', $false) } [void] CreateDistributionFiles([string]$cfufile, [string]$NameCF_VersionCF){ $this.CreateDistributionFiles('', $cfufile, $NameCF_VersionCF, $false) } [void] CreateDistributionFiles([string]$cffile, [string]$cfufile, [string]$NameCF_VersionCF,` [string]$digisign, [bool]$WarningAsError){ $Param = @() if ('' -ne $cfufile){ $Param += ('-cfufile "{0}"' -f $cfufile) } if ('' -ne $NameCF_VersionCF){ $template = '-v "{0}"' if (Test-Path $NameCF_VersionCF) { $template = '-f "{0}"' } $Param += ($template -f $NameCF_VersionCF) } if ('' -ne $digisign){ $Param += ('-digisign "{0}"' -f $digisign) } if ($WarningAsError){ $Param += '-WarningAsError' } $this.Run(('/CreateDistributionFiles -cffile "{0}"' -f $cffile), $Param) } #endregion CreateDistributionFiles #endregion The command to create a file delivery and update }# end class Designer1C #Export-ModuleMember -Function New-Designer1C |