# epf-init v1.3 — Init 1C external data processor scaffold # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] [string]$Name, [string]$Synonym = $Name, [string]$SrcDir = "src" ) $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() $xml = @" c3831ec8-d8d5-4f93-8a22-f9bfae07327f $uuid2 $uuid3 $uuid4 $Name ru $Synonym "@ $rootFile = Join-Path $SrcDir "$Name.xml" $processorDir = 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 $processorDir "Ext" New-Item -ItemType Directory -Path $extDir -Force | Out-Null $enc = New-Object System.Text.UTF8Encoding($true) # XML в каноне выгрузки Конфигуратора: CRLF в разделителях, без перевода в конце. # # Копия этой функции есть в каждом навыке-эмиттере (навыки автономны). Держать # копии одинаковыми — сознательно: разошедшиеся копии сводят на нет весь смысл. function Write-XmlFile([string]$path, [string]$text, $encoding) { $t = ($text -replace "`r`n", "`n") -replace "`n", "`r`n" [System.IO.File]::WriteAllText($path, $t.TrimEnd("`r", "`n"), $encoding) } Write-XmlFile (Resolve-Path $SrcDir | Join-Path -ChildPath "$Name.xml") $xml $enc # --- Модуль объекта --- $moduleBsl = @" #Область ОписаниеПеременных #КонецОбласти #Область ПрограммныйИнтерфейс #КонецОбласти #Область СлужебныеПроцедурыИФункции #КонецОбласти "@ $modulePath = Join-Path $extDir "ObjectModule.bsl" # Модуль пишем в каноне платформы: CRLF в разделителях строк (корпус: 2643 CRLF, # чисто-LF 0 из 3001). Хвостовой перевод НЕ навязываем — у платформы он # неканоничен (1235 модулей с ним, 766 без). Шаблон берёт переводы строк из # самого скрипта, а он в репозитории хранится с LF. $moduleBsl = ($moduleBsl -replace "`r`n", "`n") -replace "`n", "`r`n" [System.IO.File]::WriteAllText($modulePath, $moduleBsl, $enc) Write-Host "[OK] Создана обработка: $rootFile" Write-Host " Каталог: $processorDir" Write-Host " Модуль: $modulePath"