cmdlets/Load-ToBase1C.ps1
. $PSScriptRoot\CommonUtils\CommonUtils.ps1 function Load-ToBase1C { <# .SYNOPSIS Загружает dt-файл в базу 1С. .DESCRIPTION Загружает dt-файл в базу 1С. dt-файл может быть задан как параметр или помещен в буфер обмена перед запуском скрипта. В случае если dt-файл расположен в локальной сети (начинается на \\), то перед загрузкой в базу он будет скопирован на локальный компьютер. Если указаная локальная база и имеются запущенные клиенты или конфигуратор к этой базе, то перед загрузкой будет предпринята попытка завершить все рабочие процессы. .PARAMETER FilePath Путь к dt-файлу. Псевдоним: dt .PARAMETER IBName Имя базы как оно задано в окне запуска предприятия. Псевдоним: ib .PARAMETER UserName Имя пользователя базы. Если не указан, то Администратор. Псевдоним: u .PARAMETER Password Пароль пользователя базы. Псевдоним: p .PARAMETER DirTemp Каталог приемник куда будут копироваться файлы из сети. Если не задан то файл копируется во временный каталог пользователя и после загрузки в базу удаляется. Если каталог указан, то файл после загрузки не удаляется. Псевдоним: tmp .PARAMETER OpenEnterprise После загрузки dt-файла запустить базу в режиме предприятия. Если параметр не задан, то база открывается в режиме конфигуратора. Псевдоним: ent .PARAMETER Wait После выполнения дождаться нажатия любой клавиши. Псевдоним: w #> [CmdletBinding()] param( [Alias("dt")][string]$FilePath, # Путь к Dt файлу [Alias("ib")][string]$IBName, # имя базы как оно указано в окне запуска предприятия [Alias("u")][string]$UserName='Администратор', # имя пользователя базы [Alias("p")][string]$Password, # пароль пользователя базы [Alias("tmp")][string]$DirTemp, # Каталог приемник куда копировать файлы из сети [Alias("ent")][switch]$OpenEnterprise, # после загрузки запустить в режиме предприятия (по умолчанию открывается конфигуратор) [Alias("w")][switch]$Wait # Ожидать нажатия любой клавиши (параметр переключатель) ) $TotalWatch = [System.Diagnostics.Stopwatch]::StartNew() # глобальный секундомер $Watch = [System.Diagnostics.Stopwatch]::StartNew() # секундомер операции if ('' -eq $FilePath){ $FileSource = Get-Clipboard }else{ $FileSource = $FilePath } $FileSource = $FileSource.Trim().Trim('`"') if ($null -eq $FileSource -or '' -eq $FileSource -or !(Test-Path $FileSource)){ Write-Warning "В буфере обмена не обнаружен путь к DT-файлу" return } if ('' -eq $DirTemp){ $DirTemp = $Env:TMP } $DirTemp = $DirTemp.TrimEnd('\') $FileFromNetwork = $false if ($FileSource[1] -eq '\') { $FileSource = $FileSource.Replace('/', '\') Write-Host ('Файл источник: {0}' -f $FileSource) $PartPath = $FileSource -split "\\" $NewFile = "$DirTemp\{0}" -f ($PartPath[-1]) Write-Host ('Файл получатель: {0}' -f $NewFile) Copy-Item $FileSource $NewFile $FileFromNetwork = $true $Watch.Stop() #Остановка секундомера операции Write-Host ("Затрачено на копирование: {0:hh}:{0:mm}:{0:ss}" -f $Watch.Elapsed) -ForegroundColor White '' } else { $NewFile = $FileSource } Stop-1C $IBName -Force '' $Designer1C = New-Designer1C -IBName $IBName -User $UserName -PasswordUser $Password $Designer1C.RestoreIB($NewFile) if ($OpenEnterprise) { $Designer1C.RunEnterprise() } else { $Designer1C.Open() } if ($FileFromNetwork -and $DirTemp -eq $Env:TMP){ Remove-Item $NewFile } $TotalWatch.Stop() #Остановка глобального секундомера Write-Host("`nВсего затрачено: {0:hh}:{0:mm}:{0:ss}" -f $TotalWatch.Elapsed) -ForegroundColor White if ($Wait) { Wait-PressAnyKey } } # end of Load-ToBase1C |