359 backward compatibility#361
Conversation
Сделал обратную совместимость для получения предопределенных значений, добавил возможность использовать кэш в функции получения множественных значений
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
WalkthroughPR вводит кэширующий вспомогательный модуль и публичные обёртки для получения предопределённых значений, добавляет флаг ChangesСистема кэширования предопределённых значений
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested labels
Suggested reviewers
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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 |
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (1)
src/cf/CommonModules/пбп_ПредопределенныеЗначенияПовтИсп/Ext/Module.bsl (1)
134-141: ⚡ Quick winРезультат из модуля ПовтИсп нельзя модифицировать: возвращается изменяемый
Массив/делегируется изменяемый результат без фиксации
пбп_ПредопределенныеЗначенияПовтИсп.ПредопределенныеЭлементысоздаётЗначениеПоУмолчанию = Новый Массиви возвращает его, передавая какРезультатвпбп_ПредопределенныеЗначения.ПолучитьПредопределенныеПоИдентификаторам(..., Результат, Истина, ...)(в базовой функции заполняется/возвращается именноРезультат).- По механике «Повторное использование возвращаемых значений» такие объекты нельзя менять: изменение повлияет на будущие вызовы, потому что будет переиспользовано кэшированное состояние.
- Аналогично
ЗначенияПредопределенныхЭлементоввозвращает результатМенеджер.ПолучитьЗначения(...)без превращения в фиксированный/копию.Лучше зафиксировать контракт «только чтение» (комментом/инвариантом) или возвращать фиксированную копию (например,
ФиксированныйМассив) из ПовтИсп-обёрток.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/cf/CommonModules/пбп_ПредопределенныеЗначенияПовтИсп/Ext/Module.bsl` around lines 134 - 141, Функция ПредопределенныеЭлементы возвращает изменяемый Массив, который далее переиспользуется из пбп_ПредопределенныеЗначения.ПолучитьПредопределенныеПоИдентификаторам и из-за кэширования может быть мутирован между вызовами; исправьте это в обёртках (ПредопределенныеЭлементы и Аналогично ЗначенияПредопределенныхЭлементов) — вместо возврата прямого результата возвращайте фиксированную/неконвертируемую копию (например с помощью ФиксированныйМассив или явного создания нового массива/копии значений) или документируйте и жёстко гарантируйте контракт «только для чтения» в комментарии/инварианте; используйте имена функций пбп_ПредопределенныеЗначения.ПолучитьПредопределенныеПоИдентификаторам и Менеджер.ПолучитьЗначения чтобы найти точки возврата и заменить их на возврат фиксации/копии.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl`:
- Around line 477-485: The wrapper ПолучитьПредопределенныеЗначения declares
that keys are identifiers but currently passes Элементы to
пбп_ПредопределенныеЗначения.ЗначенияПредопределенныхЭлементов, which yields
mappings by ссылки when ВРазрезеКлючей=Истина; fix by, when ВРазрезеКлючей =
Истина, converting Элементы into their идентификаторы (extract the id from each
element) and pass that id array to ЗначенияПредопределенныхЭлементов (use the
existing variables Источник, Элементы, Идентификаторы to perform the conversion)
so the public contract matches expected identifier-based keys.
In `@src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl`:
- Around line 449-454: При использовании кэша текущая ветка вызывает
пбп_ПредопределенныеЗначенияПовтИсп.ЗначенияПредопределенныхЭлементов только с
тремя аргументами, из‑за чего параметр ВРазрезеКлючей остаётся по умолчанию
(Ложь) и возвращается неправильный тип; исправьте вызов так, чтобы при
ИспользоватьКэш = Истина передавать в пбп_ПредопределенныеЗначенияПовтИсп все те
же аргументы, которые ожидает вызывающий код (включая ВРазрезеКлючей), чтобы
поведение пбп_ОбщегоНазначенияСервер.ПолучитьПредопределенныеЗначения не
изменялось и возвращался корректный Соответствие при ВРазрезеКлючей = Истина.
In `@src/cfe/YAXUnit/CommonModules/ОМ_ПредопределенныеЗначения/Ext/Module.bsl`:
- Line 61: Тест-раннер всё ещё регистрирует старое имя процедуры
("...ВозвращаетСоответствие"), тогда как фактическая экспортируемая процедура
теперь называется
ПредопределенныеЭлементы_ВРазрезеКлючей_БезКэша_ВозвращаетМассив; найдите место
регистрации в сценариях/раннере и замените старую строку регистрации на новое
имя процедуры (используйте точное имя
ПредопределенныеЭлементы_ВРазрезеКлючей_БезКэша_ВозвращаетМассив) чтобы тесты
корректно вызывали переименованную процедуру.
---
Nitpick comments:
In `@src/cf/CommonModules/пбп_ПредопределенныеЗначенияПовтИсп/Ext/Module.bsl`:
- Around line 134-141: Функция ПредопределенныеЭлементы возвращает изменяемый
Массив, который далее переиспользуется из
пбп_ПредопределенныеЗначения.ПолучитьПредопределенныеПоИдентификаторам и из-за
кэширования может быть мутирован между вызовами; исправьте это в обёртках
(ПредопределенныеЭлементы и Аналогично ЗначенияПредопределенныхЭлементов) —
вместо возврата прямого результата возвращайте фиксированную/неконвертируемую
копию (например с помощью ФиксированныйМассив или явного создания нового
массива/копии значений) или документируйте и жёстко гарантируйте контракт
«только для чтения» в комментарии/инварианте; используйте имена функций
пбп_ПредопределенныеЗначения.ПолучитьПредопределенныеПоИдентификаторам и
Менеджер.ПолучитьЗначения чтобы найти точки возврата и заменить их на возврат
фиксации/копии.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 0f270204-d15d-4ac6-ad46-7b39a9b089cc
📒 Files selected for processing (4)
src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bslsrc/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bslsrc/cf/CommonModules/пбп_ПредопределенныеЗначенияПовтИсп/Ext/Module.bslsrc/cfe/YAXUnit/CommonModules/ОМ_ПредопределенныеЗначения/Ext/Module.bsl
| Функция ПолучитьПредопределенныеЗначения(Идентификаторы, ВРазрезеКлючей = Ложь, ИспользоватьКэш = Ложь) Экспорт | ||
|
|
||
| Источник = ПланыВидовХарактеристик.пбп_ПредопределенныеЗначения; | ||
|
|
||
| Элементы = пбп_ПредопределенныеЗначения.ПредопределенныеЭлементы(Источник, Идентификаторы,, ИспользоватьКэш); | ||
|
|
||
| Значения = пбп_ПредопределенныеЗначения.ЗначенияПредопределенныхЭлементов(Источник, Элементы,,ВРазрезеКлючей, ИспользоватьКэш); | ||
|
|
||
| Возврат Значения; |
There was a problem hiding this comment.
Несоответствие контракта ВРазрезеКлючей: вероятно возвращаются ключи-ссылки, а не идентификаторы
На Line 470 заявлен контракт «Ключ - Идентификатор переменной», но на Line 483 вызывается ЗначенияПредопределенныхЭлементов только с массивом Элементы. По тестовому контракту из src/cfe/YAXUnit/CommonModules/ОМ_ПредопределенныеЗначения/Ext/Module.bsl (Line 137-168) такой вызов в режиме Истина формирует соответствие по ссылкам. Проверьте и приведите к одному поведению: либо преобразуйте ключи в идентификаторы в этой обертке, либо скорректируйте публичный контракт и тесты.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl` around lines
477 - 485, The wrapper ПолучитьПредопределенныеЗначения declares that keys are
identifiers but currently passes Элементы to
пбп_ПредопределенныеЗначения.ЗначенияПредопределенныхЭлементов, which yields
mappings by ссылки when ВРазрезеКлючей=Истина; fix by, when ВРазрезеКлючей =
Истина, converting Элементы into their идентификаторы (extract the id from each
element) and pass that id array to ЗначенияПредопределенныхЭлементов (use the
existing variables Источник, Элементы, Идентификаторы to perform the conversion)
so the public contract matches expected identifier-based keys.
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl (2)
417-438:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winДобавьте описание параметра
ИспользоватьКэш.Новый параметр
ИспользоватьКэш(строка 438) не отражён в блоке документации функции (строки 419-432).📝 Предлагаемая правка описания
// ВРазрезеКлючей - Булево - признак получения данных в виде соответствия, где ключ - Ссылка. +// ИспользоватьКэш - Булево - признак получения данных из кэша. // // Возвращаемое значение:🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl` around lines 417 - 438, The function documentation for ЗначенияПредопределенныхЭлементов lacks a description for the new parameter ИспользоватьКэш; update the docblock above the function (the commented parameter list) to add a line describing ИспользоватьКэш: type Булево, default Ложь, and that when true the function will attempt to read predefined element values from cache (if available) instead of reloading them, and when false forces fresh retrieval; mention that behavior applies to both return forms (Массив and Соответствие) and that an empty Ссылки still results in an empty corresponding return value.
326-345:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winОписание
ПредопределенныеЭлементырассинхронизировано с сигнатурой.В блоке документации всё ещё описан параметр
ВРазрезеКлючейи вариант возвратаСоответствие(строки 340, 344-345), хотя в коде он удалён, а новый параметрИспользоватьКэшне задокументирован. Приведите описание в соответствие с фактической сигнатурой.📝 Предлагаемая правка описания
// ВыбрасыватьИсключение - Булево - выбрасывать исключение, если есть ошибки. -// ВРазрезеКлючей - Булево - признак получения данных в виде соответствия, где ключ - Идентификатор. +// ИспользоватьКэш - Булево - признак получения данных из кэша. // // Возвращаемое значение: // Массив - Содержит ссылки на предопределенные элементы в порядке, в котором были переданы идентификаторы. -// Соответствие - содержит идентификаторы (ключи) и ссылки затребованных предопределенных элементов. -// Если в параметр Идентификаторы передана пустая строка, то возвращается пустое соответствие.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl` around lines 326 - 345, Обновите документацию процедуры ПредопределенныеЭлементы чтобы она соответствовала текущей сигнатуре: удалите упоминания параметра ВРазрезеКлючей и вариант возврата Соответствие; опишите новый параметр ИспользоватьКэш как Булево (если true — использовать/возвращать значения из кэша, если false — всегда обновлять из источника), укажите формат входного параметра Идентификаторы (Строка/Массив/ФиксированныйМассив) и то, что функция возвращает Массив ссылок на предопределённые элементы в порядке переданных идентификаторов; сохраните описание поведения при пустой строке (возвращается пустой массив).
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In `@src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl`:
- Around line 417-438: The function documentation for
ЗначенияПредопределенныхЭлементов lacks a description for the new parameter
ИспользоватьКэш; update the docblock above the function (the commented parameter
list) to add a line describing ИспользоватьКэш: type Булево, default Ложь, and
that when true the function will attempt to read predefined element values from
cache (if available) instead of reloading them, and when false forces fresh
retrieval; mention that behavior applies to both return forms (Массив and
Соответствие) and that an empty Ссылки still results in an empty corresponding
return value.
- Around line 326-345: Обновите документацию процедуры ПредопределенныеЭлементы
чтобы она соответствовала текущей сигнатуре: удалите упоминания параметра
ВРазрезеКлючей и вариант возврата Соответствие; опишите новый параметр
ИспользоватьКэш как Булево (если true — использовать/возвращать значения из
кэша, если false — всегда обновлять из источника), укажите формат входного
параметра Идентификаторы (Строка/Массив/ФиксированныйМассив) и то, что функция
возвращает Массив ссылок на предопределённые элементы в порядке переданных
идентификаторов; сохраните описание поведения при пустой строке (возвращается
пустой массив).
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: ffc2cba4-969e-4b6c-b6f4-3106895f575f
📒 Files selected for processing (2)
src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bslsrc/cfe/YAXUnit/CommonModules/ОМ_ПредопределенныеЗначения/Ext/Module.bsl
🚧 Files skipped from review as they are similar to previous changes (1)
- src/cfe/YAXUnit/CommonModules/ОМ_ПредопределенныеЗначения/Ext/Module.bsl
Доработаны функции получения предопределенных значений и доработаны юнит тесты для совместимости
Summary by CodeRabbit