fix(types): описанные поля коллекции принадлежат её элементу - #4370
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
5854c9d to
e049ec4
Compare
Колонки, объявленные звёздочками в описании возвращаемого значения («ТаблицаЗначений: * Колонка - Тип»), навешивались на саму таблицу. Обращения «Таблица.Колонка» в 1С нет — колонки видны у строки, поэтому строка, полученная из «Добавить()» или обходом «Для Каждого», о них не знала и каждое обращение к колонке становилось находкой «нет метода или свойства». Описанные колонки навешиваются на тип элемента таблицы — так же, как это уже делает разбор «Колонки.Добавить» рядом с кодом. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MnWpDdNSEFohPZHG6voe6y
Правило распространено с таблицы значений на все коллекции: собственные свойства бывают только у структуроподобных типов, у остальных звёздочки в описании описывают элемент. Так работают дерево значений, табличная часть, коллекции формы и соответствие, у которого «Ключ» и «Значение» — свойства пары, а не самого соответствия; обращения к нему через точку в 1С нет. Дерево значений само не обходится, его строки лежат в отдельной коллекции «Строки» — уточнение строки переезжает внутрь неё. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MnWpDdNSEFohPZHG6voe6y
Правило «поля описания принадлежат элементу» сплошным быть не может: у коллекции элементов формы и у выборки из результата запроса обращение по имени свойства к ним самим законное, и перенос ломал его. Список типов, у которых собственных свойств нет, задан явно: таблица и дерево значений, табличная часть, коллекции формы, соответствие. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MnWpDdNSEFohPZHG6voe6y
e049ec4 to
2ed2bb8
Compare
Test Results 3 942 files 3 942 suites 1h 14m 54s ⏱️ Results for commit 2ed2bb8. |
|



Третий из трёх стека, выделенного из #4348. Поверх #4369.
Что было
Колонки, объявленные звёздочками в описании возвращаемого значения, навешивались на саму коллекцию:
Обращения
Таблица.ПорядокБиблиотекив 1С нет — колонки видны у строки. Поэтому строка, полученная изДобавить()или обходомДля Каждого, о колонках не знала, и каждое обращение к колонке становилось находкой «нет метода или свойства».Что стало
Описанные поля навешиваются на тип элемента коллекции — так же, как это уже делает разбор
Колонки.Добавитьрядом с кодом. Список типов, у которых собственных свойств не бывает, задан явно: таблица и дерево значений, табличная часть, коллекции формы, соответствие. Сплошным правило быть не может: у коллекции элементов формы и у выборки из результата запроса обращение по имени свойства к ним самим законное.У соответствия звёздочки описывают
КлючиЗначение— свойства пары, как и предписывает рекомендация (Соответствие из КлючИЗначение), а не имена ключей.Дерево значений само не обходится, его строки лежат в отдельной коллекции
Строки— уточнение строки переезжает внутрь неё.Замер на «Стандартных подсистемах 3.1»
Против develop, по 3–4 прогона на сборку, сравнивались устойчивые наборы находок (пересечение прогонов):
UnknownMember;Оставшиеся новые: обращения к колонкам, которых нет в описании (состав меняется в коде — см. #4359), и случаи, где строку описали как саму коллекцию.
Проверка
ValueTableColumnsFieldsInferenceTest— колонки из описания у строки таблицы, у строки дерева и у элемента соответствия. Прогнаныtypes,hover,completion.🤖 Generated with Claude Code
https://claude.ai/code/session_01MnWpDdNSEFohPZHG6voe6y