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>
This commit is contained in:
Nick Shirokov
2026-09-27 15:53:52 +03:00
co-authored by Sergei Pleshanov Claude Opus 5.5
parent 8677770eea
commit 7381b0503c
70 changed files with 4963 additions and 151 deletions
File diff suppressed because one or more lines are too long