-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
refactoring the creation of hierarchical elements #129
Conversation
## Walkthrough
В данном запросе на извлечение внесены значительные изменения в функциональность модуля, включая добавление новых функций и модификацию существующих для улучшения обработки предопределенных значений в архитектуре 1C:Enterprise 8. Были добавлены новые процедуры для работы с иерархиями и контрольными суммами, а также изменены параметры существующих процедур для соответствия новым требованиям. Также удален избыточный код, что улучшает читаемость. Изменения касаются обновления версии библиотеки и конфигурации.
## Changes
| Файл | Изменения |
|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl` | Добавлены функции: `ДопПараметрыОбработкиПредопределенныхЭлементов`, `КлючиХешаПредопределенногоЭлемента`, `ЗаполняемыеИсключаемыеСвойства`. Изменены процедуры: `СоздатьЭлемент`, `ОбновитьЭлемент`, `ЗаполнитьЗначениеПоУмолчанию`. Удален избыточный код. |
| `src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl` | Обновлена функция `ОбщиеКолонки` с добавлением новых колонок: `Служеб_Иерархический`, `Служеб_ИерархияГруппИЭлементов`. Обновлены функции, такие как `КолонкиНастройкиИнтеграции`, для поддержки новых колонок. |
| `src/cf/CommonModules/пбп_ОбновлениеИнформационнойБазыПБП/Ext/Module.bsl` | Обновлена версия библиотеки в процедуре `ПриДобавленииПодсистемы` с `1.0.3.9` на `1.0.3.10`. |
| `src/cf/Configuration.xml` | Обновлена версия в `<Properties>` с `1.0.3.9` на `1.0.3.10`. |
## Possibly related PRs
- **#118**: Изменения в этом PR касаются модификации обработки предопределенных элементов, что может быть связано с улучшениями, внесенными в основном PR, касающимся управления предопределенными значениями и их отношениями.
- **#120**: Этот PR включает улучшения в подсистеме интеграции, которые могут быть связаны с общим управлением предопределенными значениями и их взаимодействиями в контексте интеграции.
## Suggested reviewers
- ivanmolodec Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
🧹 Outside diff range and nitpick comments (2)
src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl (2)
382-383
: Одобрено: Добавление новых служебных полей для иерархии.Новые поля Служеб_Иерархический и Служеб_ИерархияГруппИЭлементов корректно добавлены в структуру и соответствуют существующему стилю кода. Префикс "Служеб_" используется последовательно для служебных полей.
Рекомендация: Добавьте комментарии, объясняющие назначение этих новых полей, чтобы улучшить понимание кода.
Предлагаемые комментарии:
// Служеб_Иерархический - признак иерархического справочника Колонки.Вставить("Служеб_Иерархический", ОписаниеБулево); // Служеб_ИерархияГруппИЭлементов - признак раздельной иерархии групп и элементов Колонки.Вставить("Служеб_ИерархияГруппИЭлементов", ОписаниеБулево);🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[notice] 382-382: src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl#L382
Возможная опечатка в "Служеб"
[notice] 383-383: src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl#L383
Возможная опечатка в "Служеб"
Line range hint
1-383
: Общее заключение: Улучшение поддержки иерархических структур.Внесенные изменения, хотя и минимальные, значительно улучшают функциональность модуля, добавляя поддержку иерархических структур для предопределенных значений. Это позволит более эффективно организовывать и управлять данными в системе.
Изменения соответствуют существующему стилю кода и naming conventions. Рекомендуется добавить комментарии к новым полям для улучшения читаемости и понимания кода.
Убедитесь, что все модули, использующие предопределенные значения, правильно обрабатывают новые иерархические свойства. Возможно, потребуется обновление связанной документации и проведение дополнительного тестирования для проверки корректной работы иерархий в различных сценариях использования.
🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[notice] 382-382: src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl#L382
Возможная опечатка в "Служеб"
[notice] 383-383: src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl#L383
Возможная опечатка в "Служеб"
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
📒 Files selected for processing (2)
- src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl (10 hunks)
- src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl (1 hunks)
🧰 Additional context used
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl
[notice] 326-326: src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl#L326
Возможная опечатка в "Служеб"
[notice] 327-327: src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl#L327
Возможная опечатка в "Служеб"src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl
[notice] 382-382: src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl#L382
Возможная опечатка в "Служеб"
[notice] 383-383: src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl#L383
Возможная опечатка в "Служеб"
🔇 Additional comments (7)
src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl (7)
72-110
: Добавлена функция "ДопПараметрыОбработкиПредопределенныхЭлементов"Реализация новой функции выглядит корректной. Она подготавливает необходимые параметры для обработки предопределенных элементов и возвращает структуру с менеджером и полным именем объекта метаданных.
111-141
: Функция "КлючиХешаПредопределенногоЭлемента" реализована правильноФункция корректно формирует ключи хеша на основе переданных полей, учитывая, является ли элемент группой или нет, и исключая необходимые поля.
186-221
: Процедура "ЗаполнитьРодителейЭлементов" работает корректноПроцедура правильно заполняет ссылки на родительские элементы, используя выборку из базы данных и сопоставление по идентификаторам.
223-242
: Процедура "ЗаполнитьКонтрольныеСуммыТаблицы" корректнаПроцедура эффективно заполняет контрольные суммы (хеш-суммы) для предопределенных элементов, используя соответствующие ключи хеша для групп и элементов.
594-606
: Функция "ЗаполняемыеИсключаемыеСвойства" реализована корректноФункция возвращает структуру с перечнем свойств для заполнения или исключения, в зависимости от того, является элемент группой или нет. Логика соответствует требованиям.
374-382
: Проверьте использование обновленной процедуры "СоздатьЭлемент" по всей кодовой базеСигнатура процедуры
СоздатьЭлемент
была изменена: параметрЗаполнитьРодителя
удален. Убедитесь, что все вызовы этой процедуры обновлены и соответствуют новой сигнатуре.Рекомендуется запустить следующий скрипт для поиска устаревших вызовов процедуры:
#!/bin/bash # Описание: Поиск вызовов процедуры "СоздатьЭлемент" с пятью аргументами # Ожидаемый результат: Отсутствие вызовов с пятью аргументами ast-grep --pattern $'СоздатьЭлемент($_, $_, $_, $_, $_)'
Line range hint
432-471
: Проверьте использование обновленной процедуры "ОбновитьЭлемент" по всей кодовой базеСигнатура процедуры
ОбновитьЭлемент
была изменена: параметрЗаполнитьРодителя
удален. Необходимо убедиться, что все вызовы этой процедуры в кодовой базе обновлены и соответствуют новой сигнатуре.Вы можете выполнить следующий скрипт для проверки всех вызовов процедуры с устаревшей сигнатурой:
|
||
НовыйЭлемент = МенеджерОбъекта.СоздатьЭлемент(); | ||
|
||
ЗаполнитьЗначенияСвойств(НовыйЭлемент, СтрокаТаблицы); | ||
ЗаполнитьЗначениеПоУмолчанию(МенеджерОбъекта, НовыйЭлемент); | ||
ЗаполнитьЗначенияСвойств(НовыйЭлемент, СтрокаТаблицы, , "Родитель"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Проверьте корректность вызова функции "ЗаполнитьЗначенияСвойств"
В вызове функции ЗаполнитьЗначенияСвойств
передается пустой третий параметр для списка свойств. Убедитесь, что это намеренно и функция корректно обрабатывает пустое значение. Рекомендуется использовать именованные параметры для повышения читаемости и избежания ошибок.
Предлагаю изменить вызов функции следующим образом:
-ЗаполнитьЗначенияСвойств(НовыйЭлемент, СтрокаТаблицы, , "Родитель");
+ЗаполнитьЗначенияСвойств(НовыйЭлемент, СтрокаТаблицы, СписокСвойств = Неопределено, ИсключаяСвойства = "Родитель");
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
ЗаполнитьЗначенияСвойств(НовыйЭлемент, СтрокаТаблицы, , "Родитель"); | |
ЗаполнитьЗначенияСвойств(НовыйЭлемент, СтрокаТаблицы, СписокСвойств = Неопределено, ИсключаяСвойства = "Родитель"); |
СтрокаТаблицы.Служеб_Иерархический = ДополнительныеПараметры.Иерархический; | ||
СтрокаТаблицы.Служеб_ИерархияГруппИЭлементов = ДополнительныеПараметры.ИерархияГруппИЭлементов; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Возможная опечатка в префиксе "Служеб"
В названиях свойств Служеб_Иерархический
и Служеб_ИерархияГруппИЭлементов
возможно опечатка в префиксе "Служеб". Вероятно, следует использовать префикс "Служебный" для согласованности с другими свойствами.
Предлагаю исправить названия свойств следующим образом:
-СтрокаТаблицы.Служеб_Иерархический = ДополнительныеПараметры.Иерархический;
+СтрокаТаблицы.Служебный_Иерархический = ДополнительныеПараметры.Иерархический;
-СтрокаТаблицы.Служеб_ИерархияГруппИЭлементов = ДополнительныеПараметры.ИерархияГруппИЭлементов;
+СтрокаТаблицы.Служебный_ИерархияГруппИЭлементов = ДополнительныеПараметры.ИерархияГруппИЭлементов;
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
СтрокаТаблицы.Служеб_Иерархический = ДополнительныеПараметры.Иерархический; | |
СтрокаТаблицы.Служеб_ИерархияГруппИЭлементов = ДополнительныеПараметры.ИерархияГруппИЭлементов; | |
СтрокаТаблицы.Служебный_Иерархический = ДополнительныеПараметры.Иерархический; | |
СтрокаТаблицы.Служебный_ИерархияГруппИЭлементов = ДополнительныеПараметры.ИерархияГруппИЭлементов; |
🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[notice] 326-326: src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl#L326
Возможная опечатка в "Служеб"
[notice] 327-327: src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl#L327
Возможная опечатка в "Служеб"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Outside diff range and nitpick comments (1)
src/cf/CommonModules/пбп_ОбновлениеИнформационнойБазыПБП/Ext/Module.bsl (1)
77-77
: Обновление версии библиотеки.Версия библиотеки успешно обновлена с "1.0.3.9" до "1.0.3.10". Это изменение соответствует обновлению в файле Configuration.xml.
Убедитесь, что вы также обновили файл CHANGELOG.md, если это еще не сделано, чтобы отразить изменения в новой версии.
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
📒 Files selected for processing (2)
- src/cf/CommonModules/пбп_ОбновлениеИнформационнойБазыПБП/Ext/Module.bsl (1 hunks)
- src/cf/Configuration.xml (1 hunks)
✅ Files skipped from review due to trivial changes (1)
- src/cf/Configuration.xml
🧰 Additional context used
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
📒 Files selected for processing (1)
- src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl (10 hunks)
🧰 Additional context used
🔇 Additional comments (3)
src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl (3)
121-140
: Функция реализована корректноФункция
КлючиХешаПредопределенногоЭлемента
правильно формирует ключи хеша на основе массива полей и признака группы, исключая ненужные поля.
214-219
: Логика заполнения родителей элементов корректнаПроцедура
ЗаполнитьРодителейЭлементов
успешно связывает предопределенные элементы с их родителями, основываясь на идентификаторах.
594-606
: Функция реализована корректноФункция
ЗаполняемыеИсключаемыеСвойства
корректно возвращает структуру со списком свойств для заполнения или исключения, в зависимости от параметров.
ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипЗнч(МенеджерОбъекта)); | ||
|
||
Параметры = Новый Структура; | ||
Параметры.Вставить("Менеджер", МенеджерОбъекта); | ||
Параметры.Вставить("ПолноеИмя", ОбъектМетаданных.ПолноеИмя()); | ||
Параметры.Вставить("Иерархический", ОбъектМетаданных.Иерархический); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Проверьте, что ОбъектМетаданных
определён перед использованием
В функции ДопПараметрыОбработкиПредопределенныхЭлементов
переменная ОбъектМетаданных
может быть неопределена, если Метаданные.НайтиПоТипу
не найдёт соответствующий тип. Рекомендуется добавить проверку на Неопределено
перед использованием ОбъектМетаданных
, чтобы избежать ошибок при доступе к его свойствам.
Предлагаю добавить проверку следующим образом:
ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипЗнч(МенеджерОбъекта));
Если ОбъектМетаданных = Неопределено Тогда
Возврат;
КонецЕсли;
Элемент.Родитель = НовыйРодитель; | ||
|
||
РодительОтличается = Элемент.Родитель <> НовыйРодитель; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Логическая ошибка при проверке изменения родителя
После присвоения Элемент.Родитель = НовыйРодитель
проверка РодительОтличается = Элемент.Родитель <> НовыйРодитель
всегда будет возвращать Ложь
. Рекомендуется сохранить старое значение родителя перед присвоением и сравнить с новым.
Предлагаю исправить код:
СтарыйРодитель = Элемент.Родитель;
Элемент.Родитель = НовыйРодитель;
РодительОтличается = СтарыйРодитель <> НовыйРодитель;
Summary by CodeRabbit
Новые функции
Улучшения существующих функций
Обновления структуры данных
Обновление версии
Эти изменения улучшают функциональность модуля и обеспечивают более эффективное управление предопределенными значениями.