# erf-init v1.1 — Init 1C external report scaffold # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] [string]$Name, [string]$Synonym = $Name, [string]$SrcDir = "src", [switch]$WithSKD ) $ErrorActionPreference = "Stop" [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 [Console]::InputEncoding = [System.Text.Encoding]::UTF8 $uuid1 = [guid]::NewGuid().ToString() $uuid2 = [guid]::NewGuid().ToString() $uuid3 = [guid]::NewGuid().ToString() $uuid4 = [guid]::NewGuid().ToString() # --- Формируем Properties --- $mainDCSValue = "" $childObjectsContent = "" if ($WithSKD) { $mainDCSValue = "ExternalReport.$Name.Template.ОсновнаяСхемаКомпоновкиДанных" $childObjectsContent = @" "@ } $mainDCSElement = if ($mainDCSValue) { "$mainDCSValue" } else { "" } $childObjectsXml = if ($childObjectsContent) { "$childObjectsContent" } else { "" } $xml = @" e41aff26-25cf-4bb6-b6c1-3f478a75f374 $uuid2 $uuid3 $uuid4 $Name ru $Synonym $mainDCSElement $childObjectsXml "@ $rootFile = Join-Path $SrcDir "$Name.xml" $reportDir = Join-Path $SrcDir $Name if (Test-Path $rootFile) { Write-Error "Файл уже существует: $rootFile" exit 1 } if (-not (Test-Path $SrcDir)) { New-Item -ItemType Directory -Path $SrcDir -Force | Out-Null } $extDir = Join-Path $reportDir "Ext" New-Item -ItemType Directory -Path $extDir -Force | Out-Null $enc = New-Object System.Text.UTF8Encoding($true) [System.IO.File]::WriteAllText((Resolve-Path $SrcDir | Join-Path -ChildPath "$Name.xml"), $xml, $enc) # --- Модуль объекта --- $moduleBsl = @" #Область ОписаниеПеременных #КонецОбласти #Область ПрограммныйИнтерфейс #КонецОбласти #Область СлужебныеПроцедурыИФункции #КонецОбласти "@ $modulePath = Join-Path $extDir "ObjectModule.bsl" [System.IO.File]::WriteAllText($modulePath, $moduleBsl, $enc) Write-Host "[OK] Создан отчёт: $rootFile" Write-Host " Каталог: $reportDir" Write-Host " Модуль: $modulePath" # --- СКД-макет (если --WithSKD) --- if ($WithSKD) { $templatesDir = Join-Path $reportDir "Templates" $skdName = "ОсновнаяСхемаКомпоновкиДанных" $skdMetaPath = Join-Path $templatesDir "$skdName.xml" $skdExtDir = Join-Path (Join-Path $templatesDir $skdName) "Ext" New-Item -ItemType Directory -Path $skdExtDir -Force | Out-Null $skdUuid = [guid]::NewGuid().ToString() $skdMetaXml = @" "@ [System.IO.File]::WriteAllText($skdMetaPath, $skdMetaXml, $enc) $skdContent = @" ИсточникДанных1 Local "@ $skdFilePath = Join-Path $skdExtDir "Template.xml" [System.IO.File]::WriteAllText($skdFilePath, $skdContent, $enc) Write-Host " СКД: $skdMetaPath" Write-Host " Тело: $skdFilePath" }