Commit Graph
12 Commits
Author SHA1 Message Date
Nick ShirokovandClaude Opus 5.5 3e726495d5 fix(cfe-borrow): связь на незаимствованный реквизит объекта — ссылка на основной реквизит
С -BorrowMainAttribute Form в расширение попадают только реквизиты, используемые
формой; путь связи параметров выбора использованием не считается. Связь на такой
реквизит (Объект.Ответственный, которого нет на форме) оставалась текстом, и
платформа отвергала загрузку: «Неверный путь к полю».

Конфигуратор реквизит не заимствует, а связь пишет id основного реквизита — как
у стандартного поля (эталон УТ Претензии.ФормаЭлементаСамообслуживание:
Объект.Партнер → 1). Навык делает так же: текст — только для реквизита, который
попадёт в расширение (тот же сбор, что в Borrow-MainAttribute). Форма эталона
совпадает построчно в обоих портах.

Найдено ревью диапазона main...dev. Кейсы form-link-codes и -main дополнены
реквизитом вне формы.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-27 16:30:48 +03:00
7381b0503c feat(cfe-borrow): связи формы кодируются как у Конфигуратора, а не вырезаются
В заимствованной форме без основного реквизита навык вырезал связи параметров
выбора на Items.<Таблица>.CurrentData.<Поле>, а связи на стандартные поля
(Объект.Owner, Объект.Date) и Объект.<ТЧ>.<Реквизит> — молча. TypeLink на Items.*
вырезался всегда, даже с основным реквизитом. Конфигуратор пишет такие пути кодом.

Код — внутренняя ссылка платформы: в выгрузке она пишет имя, а если имя в форме
не разрешается — код. Грамматика восстановлена оракулом (код в форму конфигурации →
загрузка → выгрузка → имя, 8.3.27) и эталонами Конфигуратора УТ:
<id реквизита> или <id таблицы>:CurrentData, далее 0:<uuid> метаданных источника,
<id колонки>, <id>:<AdditionalColumns> или -k стандартного реквизита (коды своих
для каждого вида объекта — таблица в навыке и в спецификации §5.5.2).

Правило как у Конфигуратора: текст, где он разрешается, иначе код. Путь от
реквизита формы кодируется и с основным реквизитом — текст платформа отвергает
«Неверный путь к полю». TypeLink — то же правило. Некодируемое вырезается, всегда
с предупреждением «Вырезано связей формы». Измерения/ресурсы регистра и реквизиты
ТЧ теперь различаются как реквизиты (с основным реквизитом «Запись.Склад» больше
не подменяется ссылкой на сам реквизит).

Попутно: порядок заимствования ссылочных типов в PS зависел от хеша — теперь
порядок первого упоминания, как в Python-порте. Оба порта, v1.41.

Проверка: четыре формы УТ (ОприходованиеИзлишковТоваров, ЗначенияСвойствОбъектов,
ФормаРасчетыМеждуОрганизациями без и с основным реквизитом) совпадают с выгрузкой
Конфигуратора построчно; все 11 кодов новых кейсов оракул переводит обратно в
исходные пути. Кейсы form-link-codes, -main, -register; form-choice-link-items
ждёт код вместо вырезания.

Проблема и первые данные о кодировке — PR #105.

Co-Authored-By: Sergei Pleshanov <2357qwr@gmail.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-27 15:53:52 +03:00
8677770eea fix(cfe-borrow): многострочный текст в BaseForm копируется без сдвига
BaseForm собирался построчным сдвигом: таб дописывался к каждой строке,
в том числе к строкам продолжения многострочного текста (<v8:content>,
текст запроса динамического списка). Снимок получал «Адрес передачи↵⇥товара»
при «Адрес передачи↵товара» в форме — форма расходилась со своей BaseForm,
и Конфигуратор показывал такие значения изменёнными в расширении.

Теперь таб добавляется только в межтеговые пробельные промежутки; пробельное
значение элемента (<a>↵</a>) не трогается. Сдвиг один для всех четырёх блоков
BaseForm — заодно многострочные свойства формы (CommandSet, Title) получают
отступ как у Конфигуратора, раньше сдвигалась только первая строка. Оба порта, v1.40.

Сверка с Конфигуратором (УНФ 8.5, Номенклатура.ФормаЭлемента): до правки все
41 многострочный текст BaseForm расходились с эталоном, после — совпадают;
всё до <Attributes> совпадает с эталоном байт в байт. Эталоны кейсов:
13 — только межтеговые отступы, form-main-attr-list-query — текст запроса
в BaseForm больше без лишних табов. Новый кейс form-multiline-text.

Проблема, замеры и первое решение — PR #105.

Co-Authored-By: Sergei Pleshanov <2357qwr@gmail.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-27 14:33:59 +03:00
Nick ShirokovandClaude Opus 5.5 868ba8db49 fix(cfe-borrow): стандартные картинки элементов остаются в заимствованной форме
Навык вырезал у элементов заимствованной формы все StdPicture.*, кроме Print.
Сверка с Конфигуратором 8.3.27 (заимствование форм УТ с основным реквизитом
и без) правило опровергла: у кнопок, подменю и страниц — в командной панели
формы, контекстных меню и теле формы — стандартная картинка остаётся в обеих
частях формы байт в байт, 26 элементов из 26. Выбрасывается только картинка
декорации, это уже учтено. Вырезание убрано в обоих портах, v1.39.

На шести эталонах Конфигуратора картинки элементов и заимствованные общие
картинки теперь совпадают полностью. Спецификация (§5.5.2) приведена
к фактическому поведению, включая файлы встроенных картинок.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-26 20:10:26 +03:00
Nick ShirokovandClaude Opus 5 8fe727e32f feat(cfe-borrow,cfe-patch-method,cfe-validate): модули заимствованных объектов и пометка расширенного свойства
Объект заимствуют, чтобы дописать в него модуль, — теперь пустой файл модуля создаётся
навыком, а не руками. Тип с единственным модулем (CommonModule, HTTPService, WebService)
получает его без указаний, остальные — по -Module; -Module None отменяет. Существующий
файл не перезаписывается никогда.

Вместе с файлом проставляется <xr:PropertyState> со State=Extended. Замер по лестнице
платформ 8.3.20…8.5.1: элемент появился в формате 2.19 (8.3.26), ниже платформа молча
выбрасывает его при загрузке — отсюда гейт по версии формата. Имя свойства равно базовому
имени файла модуля, у заимствованной формы — Form. Правило владения одно: пометку ставит
тот, кто создал файл, поэтому её ставит и cfe-patch-method.

Заодно закрыта перезапись при повторном заимствовании: прямая ветка писала XML уже
заимствованного объекта начисто, унося собственные реквизиты расширения и регистрацию
формы, — молча, с успешным отчётом. Повторный вызов теперь безопасен и служит способом
дозаимствовать модуль.

cfe-validate сверяет «файл модуля ↔ пометка» в обе стороны (предупреждение: перекос
платформа принимает, но выгрузка Конфигуратора так не выглядит).

Проверено: полный регресс 827/0/8 (ps1) и 824/0/11 (py), гарды 5/5, сквозной раундтрип
на 8.3.26 и 8.3.27 — InternalInfo совпадает с выгрузкой платформы.

Закрывает #70. Разбор и эталоны выгрузки — Romandredan.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-17 20:59:39 +03:00
Nick ShirokovandClaude Opus 4.8 26888a07d5 chore(repo): нормализация EOL к LF + .gitattributes
Приводим авторский контент (.ps1/.psm1/.py/.mjs/.md/.json, пин .bsl)
к единому LF и закрепляем политикой в .gitattributes. Инструмент правки
всегда пишет LF, поэтому единый LF убирает EOL-шум в диффах, ложные
срабатывания blame и налог на ручную синхронизацию CRLF-файлов.

BOM на .ps1 сохранён (git с eol=lf меняет только CR<->LF, BOM не трогает).
Данные 1С (*.xml) и бинарники под нормализацию не берём.

Гейт: PS-порт 459/459, Python-порт 459/459, web-test E2E 22/22 (с пересборкой стенда).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 14:22:45 +03:00
Nick ShirokovandClaude Opus 4.6 f7695a9534 feat(cfe-borrow): add -BorrowMainAttribute for borrowing object attributes with form
When adding a new attribute to a borrowed form, -BorrowMainAttribute
borrows the form's main attribute ("Объект") and all referenced object
attributes, tabular sections, and their transitive type dependencies.

Two modes: Form (default — only attributes referenced by form DataPath)
and All (all object attributes). Deep paths like Объект.A.B are resolved
transitively. Already-borrowed objects are not overwritten.

Also fixed: CommonPicture auto-borrow from AutoCommandBar, form-attribute
DataPath stripping (keep only Объект.* paths).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 19:56:26 +03:00
Nick ShirokovandClaude Opus 4.6 6df64ae1c1 feat(cfe-borrow): full ChildItems form borrowing with auto-borrow dependencies
Borrow-Form now generates full ChildItems tree (matching Configurator output)
with stripping of DataPath, TitleDataPath, TypeLink, Events, CommandName→0.
Auto-borrows CommonPictures, StyleItems, and Enums+EnumValues referenced by
form elements. Verified loading into BP database with two production forms.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 20:18:12 +03:00
Nick ShirokovandClaude Opus 4.6 c72f2210b5 fix(cfe-borrow): strip DataPath, Events and preserve form properties in Borrow-Form
Borrowed forms failed to load with "Неверный путь к данным" and "Событие не было загружено"
errors. Root cause: base form elements contained DataPath and Events referencing attributes
and handlers not present in the extension.

Changes:
- Strip <DataPath> from base elements in both AutoCommandBar and ChildItems
- Strip element-level <Events> from both sections
- Collect form-level properties (AutoTitle, WindowOpeningMode, etc.) and write them
  into both main and BaseForm sections
- Update 1c-extension-spec.md with rules 5-7

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 19:12:24 +03:00
Nick ShirokovandClaude Opus 4.6 3565e1c97f fix(cfe): 6 fixes from E2E test — Manager types, borrowed form structure, ConfigPath, guard checks
1. meta-compile + cfe-borrow: add Manager GeneratedType for Report/DataProcessor
2. cfe-borrow: rewrite Form.xml generation — extract only visual elements
   (AutoCommandBar + ChildItems), replace CommandName→0, strip Attributes/Events/Parameters
3. cfe-init: add -ConfigPath to auto-resolve Language UUID and CompatibilityMode
4. form-add: guard against overwriting existing Form.xml and Module.bsl
5. docs: update GeneratedType table for Report/DataProcessor
6. docs: rewrite section 5.4.2 with accurate borrowed form structure

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 16:39:27 +03:00
Nick ShirokovandClaude Opus 4.6 9c1985b710 docs(cfe): expand section 5.4 with borrowed form structure (BaseForm, callType, IDs)
Previously section 5.4 only documented the metadata XML of borrowed forms.
Now covers: two-part Form.xml structure (result + BaseForm), callType attribute
(Before/After/Override) on events and commands, ID numbering convention (1000000+),
own forms vs borrowed forms distinction, and form module patterns.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 14:23:33 +03:00
Nick ShirokovandClaude Opus 4.6 aae69664c5 Add CFE extension source format specification
New spec covers: extension Configuration.xml properties, borrowed vs own
objects (ObjectBelonging/ExtendedConfigurationObject), type extension
mechanisms (xr:PropertyState, xr:ExtendedProperty), module interceptors
(&Before/&After/&Instead), diff markers, predefined items, and full
directory structure reference.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 14:36:27 +03:00