Complete name-first 1C adapter saved-state support
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[string]$DesignerPath = "C:\Program Files\1cv8\8.5.1.1236\bin\1cv8.exe",
|
||||
[string]$ExpectedVersion = "8.5.1.1236",
|
||||
[string]$ServerConnection = "wsr\upo_test",
|
||||
[string]$Extension = "test2",
|
||||
[Parameter(Mandatory = $true)]
|
||||
[string]$OutputDirectory
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
Set-StrictMode -Version Latest
|
||||
|
||||
if (-not (Test-Path -LiteralPath $DesignerPath -PathType Leaf)) {
|
||||
throw "1C Designer executable not found: $DesignerPath"
|
||||
}
|
||||
|
||||
$actualVersion = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($DesignerPath).FileVersion
|
||||
if ($actualVersion -ne $ExpectedVersion) {
|
||||
throw "1C Designer version mismatch: expected $ExpectedVersion, found $actualVersion"
|
||||
}
|
||||
|
||||
$resolvedOutput = [System.IO.Path]::GetFullPath($OutputDirectory)
|
||||
if (Test-Path -LiteralPath $resolvedOutput) {
|
||||
$existingItems = @(Get-ChildItem -LiteralPath $resolvedOutput -Force)
|
||||
if ($existingItems.Count -gt 0) {
|
||||
throw "Output directory must be empty: $resolvedOutput"
|
||||
}
|
||||
}
|
||||
else {
|
||||
New-Item -ItemType Directory -Path $resolvedOutput | Out-Null
|
||||
}
|
||||
|
||||
$logPath = [System.IO.Path]::GetTempFileName()
|
||||
try {
|
||||
$designerArguments = @(
|
||||
"DESIGNER",
|
||||
"/S", $ServerConnection,
|
||||
"/WA+",
|
||||
"/DisableStartupMessages",
|
||||
"/DisableStartupDialogs",
|
||||
"/Out", $logPath,
|
||||
"/DumpConfigToFiles", $resolvedOutput,
|
||||
"-Extension", $Extension
|
||||
)
|
||||
|
||||
& $DesignerPath @designerArguments
|
||||
$designerExitCode = $LASTEXITCODE
|
||||
$designerLog = Get-Content -LiteralPath $logPath -Raw -ErrorAction SilentlyContinue
|
||||
if ($designerExitCode -ne 0) {
|
||||
$details = if ($designerLog) { $designerLog.Trim() } else { "Designer did not write a diagnostic log." }
|
||||
throw "1C Designer export failed with exit code ${designerExitCode}: $details"
|
||||
}
|
||||
|
||||
$exportedFiles = @(Get-ChildItem -LiteralPath $resolvedOutput -File -Recurse)
|
||||
if ($exportedFiles.Count -eq 0) {
|
||||
$details = if ($designerLog) { $designerLog.Trim() } else { "No diagnostic log was written." }
|
||||
throw "1C Designer reported success but exported no files: $details"
|
||||
}
|
||||
|
||||
[pscustomobject]@{
|
||||
status = "exported"
|
||||
designer_version = $actualVersion
|
||||
server_connection = $ServerConnection
|
||||
extension = $Extension
|
||||
output_directory = $resolvedOutput
|
||||
exported_files = $exportedFiles.Count
|
||||
access_mode = "operating_system_integrated"
|
||||
} | ConvertTo-Json -Depth 3
|
||||
}
|
||||
finally {
|
||||
if (Test-Path -LiteralPath $logPath -PathType Leaf) {
|
||||
Remove-Item -LiteralPath $logPath -Force
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user