Skip to content

fixed bug#345

Merged
ivanmolodec merged 1 commit into
developfrom
updating-the-value-type-of-a-predefined-element-344
Nov 6, 2025
Merged

fixed bug#345
ivanmolodec merged 1 commit into
developfrom
updating-the-value-type-of-a-predefined-element-344

Conversation

@denisushakov

@denisushakov denisushakov commented Nov 6, 2025

Copy link
Copy Markdown
Contributor

Summary by CodeRabbit

Примечания к выпуску

  • Исправления ошибок
    • Улучшена логика проверки типов для предопределённых значений с использованием метаданных объектов.
    • Расширены сообщения об ошибках при несоответствии типов, добавлена дополнительная информация об идентификаторе элемента и типе значения.

@denisushakov denisushakov self-assigned this Nov 6, 2025
@denisushakov denisushakov added the Предопределенные значений Подсистема предопределенных значений label Nov 6, 2025
@coderabbitai

coderabbitai Bot commented Nov 6, 2025

Copy link
Copy Markdown

Walkthrough

Модуль служебного функционала предопределенных значений изменен: проверка типа заменена с прямой проверки свойства на проверку через метаданные; сообщение об ошибке расширено с передачей трех параметров вместо одного.

Changes

Cohort / File(s) Сводка изменений
Логика проверки типов и обработки ошибок
src/cf/CommonModules/пбп_ПредопределенныеЗначенияСлужебный/Ext/Module.bsl
Заменена прямая проверка Элемент.ТипЗначения.СодержитТип() на проверку через метаданные: Элемент.Ссылка.Метаданные().Тип.СодержитТип(); расширено формирование сообщения об ошибке с передачей трех плейсхолдеров (тип, идентификатор элемента, тип предопределенного элемента)

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~15 minutes

  • Область внимания: Убедиться, что замена способа проверки типа (с прямого свойства на метаданные) не повлияет на производительность и корректность определения типов в различных сценариях использования
  • Область внимания: Проверить соответствие трех новых параметров в шаблоне сообщения об ошибке ("%1", "%2", "%3") с фактически передаваемыми значениями

Possibly related issues

Suggested reviewers

  • ivanmolodec

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
Title check ❓ Inconclusive Заголовок 'fixed bug' является слишком общим и не описывает конкретные изменения в коде, которые касаются проверки типов предопределённых значений. Рекомендуется изменить заголовок на более описательный, например: 'Use metadata-based type check for predefined element values' или на русском 'Использовать проверку типов на основе метаданных для предопределённых значений'.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch updating-the-value-type-of-a-predefined-element-344

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e953e2e and 3989434.

📒 Files selected for processing (1)
  • src/cf/CommonModules/пбп_ПредопределенныеЗначенияСлужебный/Ext/Module.bsl (1 hunks)
🧰 Additional context used
🧠 Learnings (11)
📓 Common learnings
Learnt from: ivanmolodec
Repo: firstBitSportivnaya/PSSL PR: 0
File: :0-0
Timestamp: 2024-07-29T10:13:46.428Z
Learning: User: ivanmolodec
URL: https://github.com/firstBitSportivnaya/PSSL/pull/52
Timestamp: 2024-04-19T09:46:50.450Z
Learning: Use the Russian language for all interactions related to the repository `firstBitSportivnaya/PSSL`.
Learnt from: thvvmas
Repo: firstBitSportivnaya/PSSL PR: 327
File: src/cf/CommonModules/пбп_ОбработкаСобытий/Ext/Module.bsl:137-140
Timestamp: 2025-08-08T12:46:43.559Z
Learning: В репозитории firstBitSportivnaya/PSSL (PR #327) принято правило: для событий ПередЗаписью/ПриЗаписи/ПередУдалением источники подписок не являются типами менеджеров (CatalogManager, DocumentManager и т.п.). Подписки создаются для объектов, наборов записей и КонстантаМенеджерЗначения, где доступно свойство ОбменДанными. Следовательно, в файле src/cf/CommonModules/пбп_ОбработкаСобытий/Ext/Module.bsl допустима прямая проверка Источник.ОбменДанными.Загрузка без дополнительной проверки наличия свойства.
Learnt from: thvvmas
Repo: firstBitSportivnaya/PSSL PR: 190
File: src/cf/CommonModules/пбп_ВалидаторПакетов/Ext/Module.bsl:79-122
Timestamp: 2025-01-27T22:01:40.089Z
Learning: В функции ВалидироватьПримитивныеТипы модуля пбп_ВалидаторПакетов идентификация ошибок происходит по именам полей структуры JSON внутри функции пбп_ВалидаторПакетовСлужебный.Валидировать, что делает хранение отдельных идентификаторов избыточным.
Learnt from: denisushakov
Repo: firstBitSportivnaya/PSSL PR: 311
File: src/cf/Catalogs/пбп_ТипыИнтеграций/Forms/ФормаЭлемента/Ext/Form/Module.bsl:93-93
Timestamp: 2025-07-17T08:58:06.478Z
Learning: В форме элемента справочника `пбп_ТипыИнтеграций` в файле `src/cf/Catalogs/пбп_ТипыИнтеграций/Forms/ФормаЭлемента/Ext/Form/Module.bsl` в процедуре `ПрочитатьТипыПараметров` реквизит `Тип` хранит именно имя типа как строку, а поле `ТипВФорме` используется для отображения представления типа на форме, поэтому преобразование `Строка(Тип(ТекПараметр.Тип))` является корректным.
Learnt from: DenisUshakov
Repo: firstBitSportivnaya/PSSL PR: 0
File: :0-0
Timestamp: 2024-07-29T10:13:46.428Z
Learning: DenisUshakov prefers not to surround fenced code blocks with blank lines in markdown files for the project `firstBitSportivnaya/PSSL`.
Learnt from: DenisUshakov
Repo: firstBitSportivnaya/PSSL PR: 0
File: :0-0
Timestamp: 2024-10-20T19:13:35.868Z
Learning: DenisUshakov prefers not to surround fenced code blocks with blank lines in markdown files for the project `firstBitSportivnaya/PSSL`.
📚 Learning: 2025-07-17T08:58:06.478Z
Learnt from: denisushakov
Repo: firstBitSportivnaya/PSSL PR: 311
File: src/cf/Catalogs/пбп_ТипыИнтеграций/Forms/ФормаЭлемента/Ext/Form/Module.bsl:93-93
Timestamp: 2025-07-17T08:58:06.478Z
Learning: В форме элемента справочника `пбп_ТипыИнтеграций` в файле `src/cf/Catalogs/пбп_ТипыИнтеграций/Forms/ФормаЭлемента/Ext/Form/Module.bsl` в процедуре `ПрочитатьТипыПараметров` реквизит `Тип` хранит именно имя типа как строку, а поле `ТипВФорме` используется для отображения представления типа на форме, поэтому преобразование `Строка(Тип(ТекПараметр.Тип))` является корректным.

Applied to files:

  • src/cf/CommonModules/пбп_ПредопределенныеЗначенияСлужебный/Ext/Module.bsl
📚 Learning: 2025-08-08T12:05:09.475Z
Learnt from: thvvmas
Repo: firstBitSportivnaya/PSSL PR: 327
File: src/cf/CommonModules/пбп_КонстантыОбработкаСобытий/Ext/Module.bsl:24-30
Timestamp: 2025-08-08T12:05:09.475Z
Learning: В репозитории firstBitSportivnaya/PSSL модуль src/cf/CommonModules/пбп_КонстантыОбработкаСобытий/Ext/Module.bsl является каркасом для будущих модификаций; его не нужно изменять или удалять до появления реальных подписок/реализаций (источник: thvvmas, PR #327).

Applied to files:

  • src/cf/CommonModules/пбп_ПредопределенныеЗначенияСлужебный/Ext/Module.bsl
📚 Learning: 2025-08-08T12:46:43.559Z
Learnt from: thvvmas
Repo: firstBitSportivnaya/PSSL PR: 327
File: src/cf/CommonModules/пбп_ОбработкаСобытий/Ext/Module.bsl:137-140
Timestamp: 2025-08-08T12:46:43.559Z
Learning: В репозитории firstBitSportivnaya/PSSL (PR #327) принято правило: для событий ПередЗаписью/ПриЗаписи/ПередУдалением источники подписок не являются типами менеджеров (CatalogManager, DocumentManager и т.п.). Подписки создаются для объектов, наборов записей и КонстантаМенеджерЗначения, где доступно свойство ОбменДанными. Следовательно, в файле src/cf/CommonModules/пбп_ОбработкаСобытий/Ext/Module.bsl допустима прямая проверка Источник.ОбменДанными.Загрузка без дополнительной проверки наличия свойства.

Applied to files:

  • src/cf/CommonModules/пбп_ПредопределенныеЗначенияСлужебный/Ext/Module.bsl
📚 Learning: 2025-08-08T12:05:06.019Z
Learnt from: thvvmas
Repo: firstBitSportivnaya/PSSL PR: 327
File: src/cf/CommonModules/пбп_ЗадачиОбработкаСобытий/Ext/Module.bsl:24-30
Timestamp: 2025-08-08T12:05:06.019Z
Learning: Модуль BSL src/cf/CommonModules/пбп_ЗадачиОбработкаСобытий/Ext/Module.bsl в репозитории firstBitSportivnaya/PSSL является каркасом для будущих модификаций; на текущем этапе он намеренно пуст и не подлежит изменению/удалению. Подтверждено пользователем thvvmas в PR #327.

Applied to files:

  • src/cf/CommonModules/пбп_ПредопределенныеЗначенияСлужебный/Ext/Module.bsl
📚 Learning: 2024-12-12T15:04:03.415Z
Learnt from: denisushakov
Repo: firstBitSportivnaya/PSSL PR: 163
File: src/cf/CommonModules/пбп_ПредопределенныеЗначенияСлужебный/Ext/Module.bsl:375-411
Timestamp: 2024-12-12T15:04:03.415Z
Learning: В процедуре `ОбработатьДублиИдентификаторов` в файле `src/cf/CommonModules/пбп_ПредопределенныеЗначенияСлужебный/Ext/Module.bsl` допустимо удалять строки из `ТаблицаПредопределенных` внутри цикла, если перебор осуществляется по массиву строк для удаления, а не по самой таблице.

Applied to files:

  • src/cf/CommonModules/пбп_ПредопределенныеЗначенияСлужебный/Ext/Module.bsl
📚 Learning: 2025-08-08T12:04:01.653Z
Learnt from: thvvmas
Repo: firstBitSportivnaya/PSSL PR: 327
File: src/cf/CommonModules/пбп_БизнесПроцессыОбработкаСобытий/Ext/Module.bsl:21-23
Timestamp: 2025-08-08T12:04:01.653Z
Learning: В PR firstBitSportivnaya/PSSL#327 модуль CommonModule.пбп_БизнесПроцессыОбработкаСобытий (файл: src/cf/CommonModules/пбп_БизнесПроцессыОбработкаСобытий/Ext/Module.bsl, BSL) является каркасом для будущих доработок; в текущем PR его не изменять и не добавлять связанные EventSubscription. Подписки по бизнес-процессам будут добавлены позже в отдельной задаче/PR.

Applied to files:

  • src/cf/CommonModules/пбп_ПредопределенныеЗначенияСлужебный/Ext/Module.bsl
📚 Learning: 2024-11-19T12:53:46.472Z
Learnt from: denisushakov
Repo: firstBitSportivnaya/PSSL PR: 144
File: src/cf/CommonForms/пбп_ФормаРазрешенияКонфликтовПредопределенныхЭлементов/Ext/Form/Module.bsl:221-224
Timestamp: 2024-11-19T12:53:46.472Z
Learning: В клиентском коде на языке платформы 1С:Предприятие, в файле `src/cf/CommonForms/пбп_ФормаРазрешенияКонфликтовПредопределенныхЭлементов/Ext/Form/Module.bsl`, при сравнении значений перечислений необходимо использовать функцию `ПредопределенноеЗначение`, так как на клиенте нельзя напрямую обращаться к значениям перечислений.

Applied to files:

  • src/cf/CommonModules/пбп_ПредопределенныеЗначенияСлужебный/Ext/Module.bsl
📚 Learning: 2025-08-08T12:38:08.400Z
Learnt from: thvvmas
Repo: firstBitSportivnaya/PSSL PR: 327
File: src/cf/EventSubscriptions/пбп_РегистрыСведенийПриЗаписи.xml:17-17
Timestamp: 2025-08-08T12:38:08.400Z
Learning: В PR firstBitSportivnaya/PSSL#327 общий модуль src/cf/CommonModules/пбп_ОбработкаСобытий/Ext/Module.bsl присутствует и содержит экспортную процедуру ПриЗаписи(Источник, Отказ, Параметр3 = Неопределено, Параметр4 = Неопределено, Параметр5 = Неопределено, Параметр6 = Неопределено); использование её в подписке src/cf/EventSubscriptions/пбп_РегистрыСведенийПриЗаписи.xml корректно.

Applied to files:

  • src/cf/CommonModules/пбп_ПредопределенныеЗначенияСлужебный/Ext/Module.bsl
📚 Learning: 2025-01-14T19:55:48.869Z
Learnt from: thvvmas
Repo: firstBitSportivnaya/PSSL PR: 190
File: src/cf/DataProcessors/пбп_ВалидаторПакетов/Ext/ObjectModule.bsl:33-35
Timestamp: 2025-01-14T19:55:48.869Z
Learning: In 1C:Enterprise (BSL), attributes of data processors defined in their metadata are directly accessible within the object module without requiring explicit declaration using `Перем`. For example, attributes `Ошибки` and `Предупреждения` in `пбп_ВалидаторПакетов` data processor can be used directly in its object module.

Applied to files:

  • src/cf/CommonModules/пбп_ПредопределенныеЗначенияСлужебный/Ext/Module.bsl
📚 Learning: 2025-08-29T14:13:48.037Z
Learnt from: thvvmas
Repo: firstBitSportivnaya/PSSL PR: 332
File: src/cf/DefinedTypes/пбп_Организации.xml:20-25
Timestamp: 2025-08-29T14:13:48.037Z
Learning: В DefinedType пбп_Организации используется временный тип строка(10), который при внедрении библиотеки будет заменён на СправочникСсылка.Организации. Каталог Организации отсутствует в текущей конфигурации.

Applied to files:

  • src/cf/CommonModules/пбп_ПредопределенныеЗначенияСлужебный/Ext/Module.bsl
🔇 Additional comments (1)
src/cf/CommonModules/пбп_ПредопределенныеЗначенияСлужебный/Ext/Module.bsl (1)

773-774: Исправление корректно: проверка типа через метаданные вместо свойства элемента.

Изменение правильно устраняет ошибку в логике валидации. Вместо проверки текущего значения свойства Элемент.ТипЗначения (которое мы как раз пытаемся установить), код теперь корректно проверяет определение допустимых типов через метаданные плана видов характеристик Мета.Тип. Это обеспечивает валидацию типа значения в соответствии с настройками метаданных.


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 and usage tips.

@sonar-openbsl-ru-qa-bot

Copy link
Copy Markdown

@ivanmolodec ivanmolodec merged commit 8793bd6 into develop Nov 6, 2025
4 checks passed
@ivanmolodec ivanmolodec deleted the updating-the-value-type-of-a-predefined-element-344 branch November 6, 2025 11:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Предопределенные значений Подсистема предопределенных значений

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Ошибка при обновлении типа значения предопределенного элемента

2 participants