Skip to content

fix(types): описанные поля коллекции принадлежат её элементу - #4370

Merged
nixel2007 merged 3 commits into
feat/types-perem-undefinedfrom
fix/types-collection-element-fields
Aug 2, 2026
Merged

fix(types): описанные поля коллекции принадлежат её элементу#4370
nixel2007 merged 3 commits into
feat/types-perem-undefinedfrom
fix/types-collection-element-fields

Conversation

@nixel2007

Copy link
Copy Markdown
Member

Третий из трёх стека, выделенного из #4348. Поверх #4369.

Что было

Колонки, объявленные звёздочками в описании возвращаемого значения, навешивались на саму коллекцию:

// Возвращаемое значение:
//  ТаблицаЗначений:
//   * ПорядокБиблиотеки - Число
Функция ТаблицаПереименования() Экспорт

Обращения Таблица.ПорядокБиблиотеки в 1С нет — колонки видны у строки. Поэтому строка, полученная из Добавить() или обходом Для Каждого, о колонках не знала, и каждое обращение к колонке становилось находкой «нет метода или свойства».

Что стало

Описанные поля навешиваются на тип элемента коллекции — так же, как это уже делает разбор Колонки.Добавить рядом с кодом. Список типов, у которых собственных свойств не бывает, задан явно: таблица и дерево значений, табличная часть, коллекции формы, соответствие. Сплошным правило быть не может: у коллекции элементов формы и у выборки из результата запроса обращение по имени свойства к ним самим законное.

У соответствия звёздочки описывают Ключ и Значение — свойства пары, как и предписывает рекомендация (Соответствие из КлючИЗначение), а не имена ключей.

Дерево значений само не обходится, его строки лежат в отдельной коллекции Строки — уточнение строки переезжает внутрь неё.

Замер на «Стандартных подсистемах 3.1»

Против develop, по 3–4 прогона на сборку, сравнивались устойчивые наборы находок (пересечение прогонов):

  • ушло 1542 UnknownMember;
  • пришло 341;
  • итог — −1201 находка.

Оставшиеся новые: обращения к колонкам, которых нет в описании (состав меняется в коде — см. #4359), и случаи, где строку описали как саму коллекцию.

Проверка

ValueTableColumnsFieldsInferenceTest — колонки из описания у строки таблицы, у строки дерева и у элемента соответствия. Прогнаны types, hover, completion.

🤖 Generated with Claude Code

https://claude.ai/code/session_01MnWpDdNSEFohPZHG6voe6y

@coderabbitai

coderabbitai Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 2d5824b5-2258-4310-b60b-46ee11fe7fb3

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

nixel2007 and others added 3 commits August 2, 2026 09:08
Колонки, объявленные звёздочками в описании возвращаемого значения
(«ТаблицаЗначений: * Колонка - Тип»), навешивались на саму таблицу. Обращения
«Таблица.Колонка» в 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
@nixel2007
nixel2007 force-pushed the fix/types-collection-element-fields branch from e049ec4 to 2ed2bb8 Compare August 2, 2026 07:08
@github-actions

github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Test Results

 3 942 files   3 942 suites   1h 14m 54s ⏱️
 4 081 tests  4 015 ✅  66 💤 0 ❌
24 486 runs  24 086 ✅ 400 💤 0 ❌

Results for commit 2ed2bb8.

@nixel2007
nixel2007 merged commit eba4f03 into develop Aug 2, 2026
35 checks passed
@nixel2007
nixel2007 deleted the fix/types-collection-element-fields branch August 2, 2026 08:43
@sonarqubecloud

sonarqubecloud Bot commented Aug 2, 2026

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants