mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-08 12:33:21 +03:00
fix(epf-init,erf-init,form-add): CRLF в разделителях строк модуля
Скелетные генераторы писали Module.bsl с LF, а платформа пишет модули с CRLF: в выгрузке БП 2643 CRLF и чисто-LF 0 из 3001 модуля (358 «смешанных» — LF внутри строковых литералов кода), BOM 2001/2001. По тому же доводу сходимости, что и для XML: платформа перепишет модуль в CRLF при первой выгрузке, значит наш LF — дифф, созданный нами. В репозитории уже была встречная конвенция: meta-compile (модуль команды) и cfe-patch-method (base/local/remote.bsl) пишут .bsl явным CRLF в обоих портах. Выбивались только эти три скелета. Хвостовой перевод строки НЕ трогаем: у платформы он неканоничен — 1235 модулей с ним, 766 без; это след автора кода, а не правило. Меняем только разделители. Правка в точке записи, а не в шаблоне: так одна строка на скрипт и не трогаются \u-экранированные кириллические литералы в py (Edit по ним переэкранирует). Снэпшоты нормализуют EOL и увидеть это не могут — добавлен preserves на модуль в epf-init/basic, erf-init/basic, form-add/basic. Windows 641/641 обоими портами, мак 590/0/51, дрейфа снэпшотов нет. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
caf038a192
commit
d05c91be03
@@ -1,4 +1,4 @@
|
|||||||
# epf-init v1.2 — Init 1C external data processor scaffold
|
# epf-init v1.3 — Init 1C external data processor scaffold
|
||||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||||
param(
|
param(
|
||||||
[Parameter(Mandatory)]
|
[Parameter(Mandatory)]
|
||||||
@@ -92,6 +92,11 @@ $moduleBsl = @"
|
|||||||
"@
|
"@
|
||||||
|
|
||||||
$modulePath = Join-Path $extDir "ObjectModule.bsl"
|
$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)
|
[System.IO.File]::WriteAllText($modulePath, $moduleBsl, $enc)
|
||||||
|
|
||||||
Write-Host "[OK] Создана обработка: $rootFile"
|
Write-Host "[OK] Создана обработка: $rootFile"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# epf-init v1.2 — Init 1C external data processor scaffold
|
# epf-init v1.3 — Init 1C external data processor scaffold
|
||||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||||
"""Generates minimal XML source files for a 1C external data processor."""
|
"""Generates minimal XML source files for a 1C external data processor."""
|
||||||
import sys, os, argparse, uuid
|
import sys, os, argparse, uuid
|
||||||
@@ -96,7 +96,10 @@ def main():
|
|||||||
#КонецОбласти"""
|
#КонецОбласти"""
|
||||||
|
|
||||||
module_path = os.path.join(ext_dir, "ObjectModule.bsl")
|
module_path = os.path.join(ext_dir, "ObjectModule.bsl")
|
||||||
write_utf8_bom(module_path, module_bsl)
|
# Модуль пишем в каноне платформы: CRLF в разделителях строк (корпус: 2643 CRLF,
|
||||||
|
# чисто-LF 0 из 3001). Хвостовой перевод НЕ навязываем — у платформы он
|
||||||
|
# неканоничен (1235 модулей с ним, 766 без).
|
||||||
|
write_utf8_bom(module_path, module_bsl.replace('\r\n', '\n').replace('\n', '\r\n'))
|
||||||
|
|
||||||
print(f"[OK] Создана обработка: {root_file}")
|
print(f"[OK] Создана обработка: {root_file}")
|
||||||
print(f" Каталог: {processor_dir}")
|
print(f" Каталог: {processor_dir}")
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# erf-init v1.2 — Init 1C external report scaffold
|
# erf-init v1.3 — Init 1C external report scaffold
|
||||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||||
param(
|
param(
|
||||||
[Parameter(Mandatory)]
|
[Parameter(Mandatory)]
|
||||||
@@ -126,6 +126,11 @@ $moduleBsl = @"
|
|||||||
"@
|
"@
|
||||||
|
|
||||||
$modulePath = Join-Path $extDir "ObjectModule.bsl"
|
$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)
|
[System.IO.File]::WriteAllText($modulePath, $moduleBsl, $enc)
|
||||||
|
|
||||||
Write-Host "[OK] Создан отчёт: $rootFile"
|
Write-Host "[OK] Создан отчёт: $rootFile"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# erf-init v1.2 — Init 1C external report scaffold
|
# erf-init v1.3 — Init 1C external report scaffold
|
||||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||||
"""Generates minimal XML source files for a 1C external report."""
|
"""Generates minimal XML source files for a 1C external report."""
|
||||||
import sys, os, argparse, uuid
|
import sys, os, argparse, uuid
|
||||||
@@ -114,7 +114,10 @@ def main():
|
|||||||
#КонецОбласти"""
|
#КонецОбласти"""
|
||||||
|
|
||||||
module_path = os.path.join(ext_dir, "ObjectModule.bsl")
|
module_path = os.path.join(ext_dir, "ObjectModule.bsl")
|
||||||
write_utf8_bom(module_path, module_bsl)
|
# Модуль пишем в каноне платформы: CRLF в разделителях строк (корпус: 2643 CRLF,
|
||||||
|
# чисто-LF 0 из 3001). Хвостовой перевод НЕ навязываем — у платформы он
|
||||||
|
# неканоничен (1235 модулей с ним, 766 без).
|
||||||
|
write_utf8_bom(module_path, module_bsl.replace('\r\n', '\n').replace('\n', '\r\n'))
|
||||||
|
|
||||||
print(f"[OK] Создан отчёт: {root_file}")
|
print(f"[OK] Создан отчёт: {root_file}")
|
||||||
print(f" Каталог: {report_dir}")
|
print(f" Каталог: {report_dir}")
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# form-add v1.16 — Add managed form to 1C config object
|
# form-add v1.17 — Add managed form to 1C config object
|
||||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||||
param(
|
param(
|
||||||
[Parameter(Mandatory)]
|
[Parameter(Mandatory)]
|
||||||
@@ -485,6 +485,11 @@ $moduleBsl = @"
|
|||||||
if (Test-Path $modulePath) {
|
if (Test-Path $modulePath) {
|
||||||
Write-Host "[SKIP] Module.bsl already exists: $modulePath — not overwriting"
|
Write-Host "[SKIP] Module.bsl already exists: $modulePath — not overwriting"
|
||||||
} else {
|
} else {
|
||||||
|
# Модуль пишем в каноне платформы: 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, $encBom)
|
[System.IO.File]::WriteAllText($modulePath, $moduleBsl, $encBom)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# form-add v1.16 — Add managed form to 1C config object
|
# form-add v1.17 — Add managed form to 1C config object
|
||||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
@@ -594,7 +594,10 @@ def main():
|
|||||||
if os.path.exists(module_path):
|
if os.path.exists(module_path):
|
||||||
print(f"[SKIP] Module.bsl already exists: {module_path} — not overwriting")
|
print(f"[SKIP] Module.bsl already exists: {module_path} — not overwriting")
|
||||||
else:
|
else:
|
||||||
write_text_with_bom(module_path, module_bsl)
|
# Модуль пишем в каноне платформы: CRLF в разделителях строк (корпус: 2643 CRLF,
|
||||||
|
# чисто-LF 0 из 3001). Хвостовой перевод НЕ навязываем — у платформы он
|
||||||
|
# неканоничен (1235 модулей с ним, 766 без).
|
||||||
|
write_text_with_bom(module_path, module_bsl.replace('\r\n', '\n').replace('\n', '\r\n'))
|
||||||
|
|
||||||
# --- Phase 4: Register in parent object ---
|
# --- Phase 4: Register in parent object ---
|
||||||
|
|
||||||
|
|||||||
@@ -8,15 +8,22 @@
|
|||||||
"files": [
|
"files": [
|
||||||
"ТестоваяОбработка.xml"
|
"ТестоваяОбработка.xml"
|
||||||
],
|
],
|
||||||
"preserves": {
|
"preserves": [
|
||||||
"file": "ТестоваяОбработка.xml",
|
{
|
||||||
"bom": true,
|
"file": "ТестоваяОбработка.xml",
|
||||||
"eol": "crlf",
|
"bom": true,
|
||||||
"encoding": "UTF-8",
|
"eol": "crlf",
|
||||||
"finalNewline": false,
|
"encoding": "UTF-8",
|
||||||
"noCR13": true,
|
"finalNewline": false,
|
||||||
"selfClose": "tight",
|
"noCR13": true,
|
||||||
"noEmptyPairs": true
|
"selfClose": "tight",
|
||||||
}
|
"noEmptyPairs": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "ТестоваяОбработка/Ext/ObjectModule.bsl",
|
||||||
|
"bom": true,
|
||||||
|
"eol": "crlf"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,15 +8,22 @@
|
|||||||
"files": [
|
"files": [
|
||||||
"ТестовыйОтчёт.xml"
|
"ТестовыйОтчёт.xml"
|
||||||
],
|
],
|
||||||
"preserves": {
|
"preserves": [
|
||||||
"file": "ТестовыйОтчёт.xml",
|
{
|
||||||
"bom": true,
|
"file": "ТестовыйОтчёт.xml",
|
||||||
"eol": "crlf",
|
"bom": true,
|
||||||
"encoding": "UTF-8",
|
"eol": "crlf",
|
||||||
"finalNewline": false,
|
"encoding": "UTF-8",
|
||||||
"noCR13": true,
|
"finalNewline": false,
|
||||||
"selfClose": "tight",
|
"noCR13": true,
|
||||||
"noEmptyPairs": true
|
"selfClose": "tight",
|
||||||
}
|
"noEmptyPairs": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "ТестовыйОтчёт/Ext/ObjectModule.bsl",
|
||||||
|
"bom": true,
|
||||||
|
"eol": "crlf"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,15 +19,22 @@
|
|||||||
},
|
},
|
||||||
"validatePath": "Catalogs/Товары/Forms/ФормаЭлемента",
|
"validatePath": "Catalogs/Товары/Forms/ФормаЭлемента",
|
||||||
"expect": {
|
"expect": {
|
||||||
"preserves": {
|
"preserves": [
|
||||||
"file": "Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form.xml",
|
{
|
||||||
"bom": true,
|
"file": "Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form.xml",
|
||||||
"eol": "crlf",
|
"bom": true,
|
||||||
"encoding": "UTF-8",
|
"eol": "crlf",
|
||||||
"finalNewline": false,
|
"encoding": "UTF-8",
|
||||||
"noCR13": true,
|
"finalNewline": false,
|
||||||
"selfClose": "tight",
|
"noCR13": true,
|
||||||
"noEmptyPairs": true
|
"selfClose": "tight",
|
||||||
}
|
"noEmptyPairs": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form/Module.bsl",
|
||||||
|
"bom": true,
|
||||||
|
"eol": "crlf"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user