Skip to content
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

Added functions for setting a mark for deletion and code refactoring #91

Merged
merged 10 commits into from
Sep 3, 2024

Conversation

denisushakov
Copy link
Contributor

@denisushakov denisushakov commented Aug 23, 2024

Summary by CodeRabbit

  • New Features

    • Enhanced documentation clarifying the use and lifecycle of predefined values.
    • Introduced new procedures for processing predefined values, improving flexibility and management.
    • Added checks for unused elements, streamlining the deletion process of predefined entries.
    • New functions for retrieving object managers based on full names, enhancing metadata handling.
    • Added new functions for initializing predefined values related to integration systems.
  • Bug Fixes

    • Updated logic for handling predefined values to eliminate unnecessary steps, improving overall performance.
    • Incremented version numbers in relevant modules to reflect updates.
  • Documentation

    • Improved clarity and context in the documentation regarding predefined values and their integration.
    • Updated version numbers in configuration to denote a minor update.

@denisushakov denisushakov added the enhancement Улучшение существующей функциональности label Aug 23, 2024
@denisushakov denisushakov self-assigned this Aug 23, 2024
Copy link

coderabbitai bot commented Aug 23, 2024

Walkthrough

The changes introduce significant updates to the management of predefined values across multiple modules. The previous methods for creating these values have been replaced with direct processing calls, enhancing efficiency. New parameters have been added for improved functionality, and several public entity declarations have been modified to support these enhancements, ensuring better integration throughout the system.

Changes

Files Change Summary
docs/ПредопределенныеЗначения.md Restructured for clarity on predefined values, added details on searching reference objects, and refined methods for adding and retrieving values.
src/cf/Catalogs/пбп_ИнтегрируемыеСистемы/Ext/ManagerModule.bsl Updated logic to process predefined values directly, eliminating the previous creation method.
src/cf/Catalogs/пбп_МетодыИнтеграции/Ext/ManagerModule.bsl Removed the procedure for filling predefined correspondences, indicating a redesign in handling these values.
src/cf/Catalogs/пбп_НастройкиИнтеграции/Ext/ManagerModule.bsl Eliminated the procedure for filling predefined correspondences, indicating a shift in integration settings management.
src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl Introduced new procedures for processing predefined values, updated existing ones to accept new parameters, and renamed internal references for clarity.
src/cf/CommonModules/пбп_ОбщегоНазначенияПовтИсп/Ext/Module.bsl Changed parameter names from "Имя" to "Идентификатор" in functions for improved clarity regarding the identification of predefined values.
src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl Renamed parameters in functions to reflect a focus on identifiers, added new functions for managing metadata objects.
src/cf/CommonModules/пбп_ОбщегоНазначенияСлужебный/Ext/Module.bsl Introduced a new function to retrieve object managers based on full names, enhancing object management capabilities.
src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl Added new functions for initializing predefined values related to integration systems, expanding module functionality.
src/cf/Configuration.xml Incremented version number from 1.0.1.2 to 1.0.1.3 and removed several <CommonModule> entries.
src/cf/Subsystems/пбп_СоответствиеОбъектовИБ.xml Removed a module reference, altering the reference structure.
src/cf/Subsystems/пбп_УправлениеИнтеграциями.xml Changed a module reference, indicating a transition to unique identification.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant ManagerModule
    participant PredefinedValues

    User->>ManagerModule: Request Predefined Value Processing
    ManagerModule->>PredefinedValues: ОбработатьПредопределенныеЗначения()
    PredefinedValues->>ManagerModule: Return Processed Values
    ManagerModule->>User: Provide Processed Values
Loading

🐰 In the code, a hop and a skip,
Predefined values take a trip.
With new methods shining bright,
Clarity blooms like morning light!
In our burrow of code, we cheer,
For changes that bring values near! 🌟


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?

Share
Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai generate interesting stats about this repository and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

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)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

Passed

Analysis Details

5 Issues

  • Bug 0 Bugs
  • Vulnerability 0 Vulnerabilities
  • Code Smell 5 Code Smells

Coverage and Duplications

  • Coverage No coverage information (0.00% Estimated after merge)
  • Duplications 0.00% Duplicated Code (0.50% Estimated after merge)

Project ID: PSSL

View in SonarQube

1 similar comment
Copy link

Passed

Analysis Details

5 Issues

  • Bug 0 Bugs
  • Vulnerability 0 Vulnerabilities
  • Code Smell 5 Code Smells

Coverage and Duplications

  • Coverage No coverage information (0.00% Estimated after merge)
  • Duplications 0.00% Duplicated Code (0.50% Estimated after merge)

Project ID: PSSL

View in SonarQube

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Outside diff range, codebase verification and nitpick comments (2)
docs/ПредопределенныеЗначения.md (2)

3-3: Adjust heading level to h2.

The heading level should increment by one level at a time. Change the heading level from h4 to h2.

Apply this diff to fix the heading level:

-#### Для обращения к ссылкам из кода используем предопределенные значения, добавляем их в план видов характеристик (ПВХ) "пбп_ПредопределенныеЗначения"
+## Для обращения к ссылкам из кода используем предопределенные значения, добавляем их в план видов характеристик (ПВХ) "пбп_ПредопределенныеЗначения"
Tools
Markdownlint

3-3: Expected: h2; Actual: h4
Heading levels should only increment by one level at a time

(MD001, heading-increment)


5-5: Remove trailing punctuation from heading.

Avoid trailing punctuation in headings. Remove the period from the heading.

Apply this diff to remove the trailing punctuation:

-#### При коментировании или удалении из кода предопределенных элементов и последующем перезаполнении, элемент будет помечен на удаление, включая все его подчиненные элементы. 
+#### При коментировании или удалении из кода предопределенных элементов и последующем перезаполнении, элемент будет помечен на удаление, включая все его подчиненные элементы
Tools
Markdownlint

5-5: Punctuation: '.'
Trailing punctuation in heading

(MD026, no-trailing-punctuation)

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 7805fb0 and 1aba48e.

Files selected for processing (7)
  • docs/ПредопределенныеЗначения.md (1 hunks)
  • src/cf/Catalogs/пбп_ИнтегрируемыеСистемы/Ext/ManagerModule.bsl (1 hunks)
  • src/cf/Catalogs/пбп_МетодыИнтеграции/Ext/ManagerModule.bsl (1 hunks)
  • src/cf/Catalogs/пбп_НастройкиИнтеграции/Ext/ManagerModule.bsl (1 hunks)
  • src/cf/Catalogs/пбп_ТипСоответствияОбъектовИБ/Ext/ManagerModule.bsl (1 hunks)
  • src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl (7 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] 43-43: src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl#L43
Возможная опечатка в "локал"

src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl

[warning] 153-153: src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl#L153
Необходимо удалить описания параметров "ТаблицаПредопределенныхЗначений", отсутствующих в сигнатуре метода


[warning] 149-149: src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl#L149
Длина строки 128 превышает максимально допустимую 120


[warning] 153-153: src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl#L153
Необходимо добавить описание параметра "ТаблицаПредопределенных"


[notice] 284-284: src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl#L284
Возможная опечатка в "пбп"

Markdownlint
docs/ПредопределенныеЗначения.md

3-3: Expected: h2; Actual: h4
Heading levels should only increment by one level at a time

(MD001, heading-increment)


5-5: Punctuation: '.'
Trailing punctuation in heading

(MD026, no-trailing-punctuation)

Additional comments not posted (13)
src/cf/Catalogs/пбп_НастройкиИнтеграции/Ext/ManagerModule.bsl (1)

29-31: Verify the behavior of ОбработатьПредопределенныеЗначения.

The method ОбработатьПредопределенныеЗначения replaces the previous call to ПредопределенныеЗначенияКСозданию. Ensure that this new method encapsulates the necessary logic to handle predefined values correctly.

Consider verifying the implementation of ОбработатьПредопределенныеЗначения to ensure it meets the intended functionality.

src/cf/Catalogs/пбп_ИнтегрируемыеСистемы/Ext/ManagerModule.bsl (1)

29-31: Ensure consistent behavior with ОбработатьПредопределенныеЗначения.

The method ОбработатьПредопределенныеЗначения is now used to handle predefined values. Verify that this change maintains the intended behavior across different modules.

Consider reviewing the documentation or implementation of ОбработатьПредопределенныеЗначения to ensure it aligns with the desired functionality.

src/cf/Catalogs/пбп_ТипСоответствияОбъектовИБ/Ext/ManagerModule.bsl (1)

56-58: Review the impact of using ОбработатьПредопределенныеЗначения.

The method ОбработатьПредопределенныеЗначения is now used for processing predefined values. Ensure that this change aligns with the overall system requirements and functionality.

It might be beneficial to conduct a review of the method's implementation or documentation to confirm its appropriateness for the task.

src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl (1)

43-43: Verify the change in the Родитель property.

The change from "Интеграции" to "Интеграции_локал" might be a typo as suggested by static analysis tools. Please confirm if this change is intentional.

Tools
GitHub Check: 1C: Project SubSystems Library Sonarqube Results

[notice] 43-43: src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl#L43
Возможная опечатка в "локал"

src/cf/Catalogs/пбп_МетодыИнтеграции/Ext/ManagerModule.bsl (1)

29-31: Verify the impact of changing the method call.

The change from ПредопределенныеЗначенияКСозданию to ОбработатьПредопределенныеЗначения suggests a shift in functionality. Ensure that this change aligns with the intended behavior and does not introduce any unintended side effects.

src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl (8)

27-27: LGTM!

The procedure ИнициализироватьПредопределенныеЗначения correctly calls ОбработатьПредопределенныеЗначения.


Line range hint 39-84: LGTM!

The procedure СоздатьПредопределенныеЗначения has been updated to include a new parameter ПолноеИмяОбъекта, enhancing its flexibility.


94-123: LGTM!

The procedure ОбработатьНеиспользуемыеЭлементы effectively handles unused elements by marking them for deletion.


135-143: LGTM!

The function ПараметрыМенеджераОбъекта correctly initializes and returns the parameters.


Line range hint 173-210: LGTM!

The function ПредопределенныеЗначенияКСозданию has been updated to include a new parameter ПолноеИмяОбъекта, enhancing its flexibility.


257-281: LGTM!

The procedure ПометитьНаУдалениеВсеВложения correctly marks all attachments for deletion if they are not in the provided table.


287-300: LGTM!

The procedure СообщитьОПомеченномНаУдалениеЭлементе correctly constructs and sends a notification message.


283-285: Verify potential typo in ПолноеИмяОбъекта.

The function returns a predefined string. Verify if "пбп" is correct or if it is a typo.

Run the following script to verify the usage of "пбп" in the codebase:

Verification successful

Let's update the script to search for "пбп" across all files in the repository without specifying a file type.


"пбп" is consistently used across the codebase and is not a typo.

The prefix "пбп" appears frequently and consistently in various files and contexts, indicating it is an intentional part of the naming convention. No further action is needed.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the usage of "пбп" in the codebase.

# Test: Search for "пбп" usage. Expect: Consistent usage across the codebase.
rg --type bsl 'пбп'

Length of output: 71


Script:

#!/bin/bash
# Description: Verify the usage of "пбп" in the codebase.

# Test: Search for "пбп" usage across all files.
rg 'пбп'

Length of output: 162158

Tools
GitHub Check: 1C: Project SubSystems Library Sonarqube Results

[notice] 284-284: src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl#L284
Возможная опечатка в "пбп"

Comment on lines 153 to 167
Процедура ОбработатьПредопределенныеЗначения(ТаблицаПредопределенных, МенеджерОбъекта) Экспорт

Параметры = ПараметрыМенеджераОбъекта(МенеджерОбъекта);
ОбработатьНеиспользуемыеЭлементы(ТаблицаПредопределенных, Параметры.ПолноеИмя);

ТаблицаПредопределенных = ПредопределенныеЗначенияКСозданию(
ТаблицаПредопределенных,
Параметры.ПолноеИмя);

СоздатьПредопределенныеЗначения(
ТаблицаПредопределенных,
Параметры.Менеджер,
Параметры.ПолноеИмя);

КонецПроцедуры
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Update parameter descriptions.

The procedure ОбработатьПредопределенныеЗначения has outdated parameter descriptions. Update them to match the current signature.

Apply this diff to fix the parameter descriptions:

 // Параметры:
-//  ТаблицаПредопределенныхЗначений - ТаблицаЗначений - см. пбп_ПредопределенныеЗначенияПереопределяемыйТаблицаПредопределенных,
+//  ТаблицаПредопределенных - ТаблицаЗначений - см. пбп_ПредопределенныеЗначенияПереопределяемыйТаблицаПредопределенных,
 //										 пбп_ТипСоответствияОбъектовИБПереопределяемый.ТаблицаПредопределенных.
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.

Suggested change
Процедура ОбработатьПредопределенныеЗначения(ТаблицаПредопределенных, МенеджерОбъекта) Экспорт
Параметры = ПараметрыМенеджераОбъекта(МенеджерОбъекта);
ОбработатьНеиспользуемыеЭлементы(ТаблицаПредопределенных, Параметры.ПолноеИмя);
ТаблицаПредопределенных = ПредопределенныеЗначенияКСозданию(
ТаблицаПредопределенных,
Параметры.ПолноеИмя);
СоздатьПредопределенныеЗначения(
ТаблицаПредопределенных,
Параметры.Менеджер,
Параметры.ПолноеИмя);
КонецПроцедуры
// Параметры:
// ТаблицаПредопределенных - ТаблицаЗначений - см. пбп_ПредопределенныеЗначенияПереопределяемыйТаблицаПредопределенных,
// пбп_ТипСоответствияОбъектовИБПереопределяемый.ТаблицаПредопределенных.
Процедура ОбработатьПредопределенныеЗначения(ТаблицаПредопределенных, МенеджерОбъекта) Экспорт
Параметры = ПараметрыМенеджераОбъекта(МенеджерОбъекта);
ОбработатьНеиспользуемыеЭлементы(ТаблицаПредопределенных, Параметры.ПолноеИмя);
ТаблицаПредопределенных = ПредопределенныеЗначенияКСозданию(
ТаблицаПредопределенных,
Параметры.ПолноеИмя);
СоздатьПредопределенныеЗначения(
ТаблицаПредопределенных,
Параметры.Менеджер,
Параметры.ПолноеИмя);
КонецПроцедуры
Tools
GitHub Check: 1C: Project SubSystems Library Sonarqube Results

[warning] 153-153: src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl#L153
Необходимо удалить описания параметров "ТаблицаПредопределенныхЗначений", отсутствующих в сигнатуре метода


[warning] 153-153: src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl#L153
Необходимо добавить описание параметра "ТаблицаПредопределенных"

Copy link

Passed

Analysis Details

2 Issues

  • Bug 0 Bugs
  • Vulnerability 0 Vulnerabilities
  • Code Smell 2 Code Smells

Coverage and Duplications

  • Coverage No coverage information (0.00% Estimated after merge)
  • Duplications 0.00% Duplicated Code (0.50% Estimated after merge)

Project ID: PSSL

View in SonarQube

Copy link

Passed

Analysis Details

2 Issues

  • Bug 0 Bugs
  • Vulnerability 0 Vulnerabilities
  • Code Smell 2 Code Smells

Coverage and Duplications

  • Coverage No coverage information (0.00% Estimated after merge)
  • Duplications 0.00% Duplicated Code (0.50% Estimated after merge)

Project ID: PSSL

View in SonarQube

Copy link

@coderabbitai coderabbitai bot left a 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

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 1aba48e and dd69e0f.

Files selected for processing (3)
  • src/cf/CommonModules/пбп_ОбновлениеИнформационнойБазыПБП/Ext/Module.bsl (1 hunks)
  • src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl (7 hunks)
  • src/cf/Configuration.xml (1 hunks)
Files skipped from review due to trivial changes (2)
  • src/cf/CommonModules/пбп_ОбновлениеИнформационнойБазыПБП/Ext/Module.bsl
  • src/cf/Configuration.xml
Additional comments not posted (10)
src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl (10)

27-27: Integration of ОбработатьПредопределенныеЗначения is appropriate.

The integration of the new procedure into the initialization process appears correct and aligns with the intended functionality.


34-37: Parameter descriptions updated correctly.

The updated parameter descriptions accurately reflect the new function signature and enhance clarity.


Line range hint 39-76: Changes to СоздатьПредопределенныеЗначения are well-implemented.

The logic for handling the new parameter and processing table rows is correctly implemented.


86-123: New procedure ОбработатьНеиспользуемыеЭлементы is effectively implemented.

The procedure correctly identifies and marks unused elements for deletion using hierarchical selection.


125-143: New function ПараметрыМенеджераОбъекта is well-implemented.

The function correctly prepares and returns parameters necessary for processing predefined elements.


145-167: Procedure ОбработатьПредопределенныеЗначения is well-structured.

The procedure effectively consolidates operations related to processing predefined values using helper functions.


Line range hint 173-210: Function ПредопределенныеЗначенияКСозданию changes are appropriate.

The function correctly handles the new parameter and processes the table using query logic.


257-281: New procedure ПометитьНаУдалениеВсеВложения is effectively implemented.

The recursive approach to marking elements for deletion using hierarchical selection is correct.


283-285: New function ПолноеИмяОбъекта is correctly implemented.

The function provides a straightforward way to retrieve the full name of the metadata object.


287-300: New procedure СообщитьОПомеченномНаУдалениеЭлементе is well-implemented.

The procedure correctly constructs and sends a notification message about elements marked for deletion.

Copy link

Passed

Analysis Details

1 Issue

  • Bug 0 Bugs
  • Vulnerability 0 Vulnerabilities
  • Code Smell 1 Code Smell

Coverage and Duplications

  • Coverage No coverage information (0.00% Estimated after merge)
  • Duplications 0.00% Duplicated Code (0.50% Estimated after merge)

Project ID: PSSL

View in SonarQube

Copy link

@coderabbitai coderabbitai bot left a 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

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between dd69e0f and 61ab305.

Files selected for processing (1)
  • .bsl-language-server.json (1 hunks)
Additional comments not posted (1)
.bsl-language-server.json (1)

8-11: Approved addition of the Typo parameter.

The addition of the Typo parameter with userWordsToIgnore enhances typo handling capabilities, which aligns with the PR's objectives of improving functionality.

However, ensure that the value "пбп" is appropriate for the intended use case.

Run the following script to verify the appropriateness of the value "пбп":

@@ -1,6 +1,8 @@
# Подсистема "предопределенные значения"

Для обращения к ссылкам из кода используем предопределенные значения, добавляем их в план видов характеристик (ПВХ) "пбп_ПредопределенныеЗначения"
#### Для обращения к ссылкам из кода используем предопределенные значения, добавляем их в план видов характеристик (ПВХ) "пбп_ПредопределенныеЗначения"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тут нужно переписать как по мне, сейчас может ввести в заблуждение этот пункт. Нужно написать следующее:
По стандартам разработки поиск ссылочных объектов в программном коде по наименованию, коду, гуиду и т.д. не рекомендуется. Для возможности получения ссылок из программного кода предлагается использовать элементы плана видов характеристик. Чтобы избежать необходимости реструктуризации при добавлении новых элементов в ПВХ, формирование иерархии и элементов делается программно и обновляется в пользовательском режиме. Получение элементов стандартизируется через общий модуль с возможностью кэширования.

Для обращения к ссылкам из кода используем предопределенные значения, добавляем их в план видов характеристик (ПВХ) "пбп_ПредопределенныеЗначения"
#### Для обращения к ссылкам из кода используем предопределенные значения, добавляем их в план видов характеристик (ПВХ) "пбп_ПредопределенныеЗначения"

#### При коментировании или удалении из кода предопределенных элементов и последующем перезаполнении, элемент будет помечен на удаление, включая все его подчиненные элементы.
Copy link
Member

@ivanmolodec ivanmolodec Aug 27, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не очень понял зачем тут и выше ты добавил форматирование заголовка. Если нужно выделить жирным используются символы **. В целом стоит разделить на заголовки 2 уровня (2 решётки) этот файл:

  1. Описание подсистемы
  2. Добавление новых элементов
  3. Получение значения элементов

Ну и распределить текст по этим заголовкам

@@ -26,12 +26,8 @@

ТЗПредопределенныхЗначений = пбп_ИнтеграцииПереопределяемый.ПредопределенныеЗначенияМетодыИнтеграции();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Может быть для минимизации дублирования кода сделать только вызов одной процедуры? Типа пбп_ПредопределенныеЗначения.ОбработатьПредопределенныеЗначения(МодульМенеджера) и там в зависимости уже от имени метаданного получать таблицу предопределенных значений

@@ -40,7 +40,7 @@
НоваяНастройка.Пароль = Ложь;
НоваяНастройка.СписокЗначений = Ложь;
НоваяНастройка.ТипЗначения = ОписаниеЧисло;
НоваяНастройка.Родитель = "Интеграции";
НоваяНастройка.Родитель = "Интеграции_локал";
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А зачем ты в локал перенёс? Это ж прям глобальная настройка которая используется для очистки справочника история интеграции. Если нужен какой-то пример то добавь просто отдельный элемент

Copy link

Failed

  • 10.17% Duplicated Lines (%) on New Code (is greater than 3.00%)

Analysis Details

15 Issues

  • Bug 0 Bugs
  • Vulnerability 0 Vulnerabilities
  • Code Smell 15 Code Smells

Coverage and Duplications

  • Coverage No coverage information (0.00% Estimated after merge)
  • Duplications 10.17% Duplicated Code (0.90% Estimated after merge)

Project ID: PSSL

View in SonarQube

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 9

Outside diff range, codebase verification and nitpick comments (3)
src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl (3)

2508-2516: Add descriptions for all parameters.

The procedure is correctly implemented, but the parameter descriptions are missing.

Add descriptions for the ПолноеИмя parameter to improve code documentation.

// Аналог метода БСП.
//
// Параметры:
//  ПолноеИмя - Строка - полное имя объекта метаданных.
Процедура ПроверитьОбъектМетаданныхСуществует(ПолноеИмя)
Tools
GitHub Check: 1C: Project SubSystems Library Sonarqube Results

[warning] 2508-2508: src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl#L2508
Необходимо добавить описание всех параметров метода


57-74: Update Documentation and Code References to Use the New Parameter Name

The parameter name change from Имя to Идентификатор in the function ПолучитьПредопределенноеЗначение has not been fully updated in the documentation and some code references. Please update these to ensure consistency:

  • Documentation: Update references in docs/ПредопределенныеЗначения.md to use Идентификатор instead of Имя.
  • Code References: Verify and update any remaining code that still uses the old parameter name.
Analysis chain

LGTM! But verify the function usage in the codebase.

The function is correctly implemented. However, ensure that all function calls to ПолучитьПредопределенноеЗначение match the new signature.

The code changes are approved.

Run the following script to verify the function usage:

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all function calls to `ПолучитьПредопределенноеЗначение` match the new signature.

# Test: Search for the function usage. Expect: Only occurrences of the new signature.
rg --type bsl -A 5 $'ПолучитьПредопределенноеЗначение'

Length of output: 308


Script:

#!/bin/bash
# Description: Verify all function calls to `ПолучитьПредопределенноеЗначение` without specifying the file type.

# Test: Search for the function usage. Expect: Only occurrences of the new signature.
rg -A 5 $'ПолучитьПредопределенноеЗначение'

Length of output: 3585


Inconsistent Parameter Naming Across Modules and Documentation

The parameter name change from Имена to Идентификаторы in the function ПолучитьПредопределенныеЗначения is not consistently applied across the codebase. The пбп_ОбщегоНазначенияПовтИсп module and documentation still use the old parameter name Имена. Please update these to ensure consistency and avoid potential confusion or errors.

  • Module: src/cf/CommonModules/пбп_ОбщегоНазначенияПовтИсп/Ext/Module.bsl still uses Имена.
  • Documentation: docs/ПредопределенныеЗначения.md references Имена.
Analysis chain

Line range hint 80-97: LGTM! But verify the function usage in the codebase.

The function is correctly implemented. However, ensure that all function calls to ПолучитьПредопределенныеЗначения match the new signature.

The code changes are approved.

Run the following script to verify the function usage:

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all function calls to `ПолучитьПредопределенныеЗначения` match the new signature.

# Test: Search for the function usage. Expect: Only occurrences of the new signature.
rg --type bsl -A 5 $'ПолучитьПредопределенныеЗначения'

Length of output: 308


Script:

#!/bin/bash
# Description: Verify all function calls to `ПолучитьПредопределенныеЗначения` match the new signature.

# Test: Search for the function usage across all files.
rg -A 5 $'ПолучитьПредопределенныеЗначения'

Length of output: 3059

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 61ab305 and 2bb5c52.

Files selected for processing (13)
  • docs/ПредопределенныеЗначения.md (2 hunks)
  • src/cf/Catalogs/пбп_ИнтегрируемыеСистемы/Ext/ManagerModule.bsl (1 hunks)
  • src/cf/Catalogs/пбп_ИнтегрируемыеСистемы/Forms/ФормаСписка/Ext/Form/Module.bsl (1 hunks)
  • src/cf/Catalogs/пбп_МетодыИнтеграции/Ext/ManagerModule.bsl (1 hunks)
  • src/cf/Catalogs/пбп_МетодыИнтеграции/Forms/ФормаСписка/Ext/Form/Module.bsl (1 hunks)
  • src/cf/Catalogs/пбп_НастройкиИнтеграции/Ext/ManagerModule.bsl (1 hunks)
  • src/cf/Catalogs/пбп_НастройкиИнтеграции/Forms/ФормаСписка/Ext/Form/Module.bsl (1 hunks)
  • src/cf/ChartsOfCharacteristicTypes/пбп_ПредопределенныеЗначения/Forms/ФормаСписка/Ext/Form/Module.bsl (1 hunks)
  • src/cf/CommonModules/пбп_ОбщегоНазначенияПовтИсп/Ext/Module.bsl (1 hunks)
  • src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl (3 hunks)
  • src/cf/CommonModules/пбп_ОбщегоНазначенияСлужебный/Ext/Module.bsl (1 hunks)
  • src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl (7 hunks)
  • src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl (2 hunks)
Additional context used
GitHub Check: 1C: Project SubSystems Library Sonarqube Results
src/cf/ChartsOfCharacteristicTypes/пбп_ПредопределенныеЗначения/Forms/ФормаСписка/Ext/Form/Module.bsl

[warning] 17-17: src/cf/ChartsOfCharacteristicTypes/пбп_ПредопределенныеЗначения/Forms/ФормаСписка/Ext/Form/Module.bsl#L17
Длина строки 125 превышает максимально допустимую 120

src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl

[notice] 65-65: src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl#L65
Добавьте описание метода программного интерфейса


[notice] 79-79: src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl#L79
Добавьте описание метода программного интерфейса


[notice] 93-93: src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl#L93
Добавьте описание метода программного интерфейса

src/cf/CommonModules/пбп_ОбщегоНазначенияСлужебный/Ext/Module.bsl

[warning] 152-152: src/cf/CommonModules/пбп_ОбщегоНазначенияСлужебный/Ext/Module.bsl#L152
Добавьте описание возвращаемого значения функции


[warning] 152-152: src/cf/CommonModules/пбп_ОбщегоНазначенияСлужебный/Ext/Module.bsl#L152
Необходимо добавить описание всех параметров метода

src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl

[notice] 23-23: src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl#L23
Добавьте описание метода программного интерфейса


[warning] 29-29: src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl#L29
Длина строки 123 превышает максимально допустимую 120


[warning] 33-33: src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl#L33
Длина строки 122 превышает максимально допустимую 120

src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl

[failure] 1831-1831: src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl#L1831
Уменьшите когнитивную сложность "МенеджерОбъектаПоПолномуИмени" с 31 до 15


[warning] 1837-1837: src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl#L1837
Создайте константу с понятным названием, присвойте ей значение "2" и используйте эту константу вместо магического числа.


[warning] 1885-1885: src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl#L1885
Создайте константу с понятным названием, присвойте ей значение "2" и используйте эту константу вместо магического числа.


[warning] 1888-1888: src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl#L1888
Создайте константу с понятным названием, присвойте ей значение "4" и используйте эту константу вместо магического числа.


[failure] 1831-1831: src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl#L1831
Уменьшите цикломатическую сложность "МенеджерОбъектаПоПолномуИмени" с 29 до 20


[warning] 2508-2508: src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl#L2508
Необходимо добавить описание всех параметров метода

Markdownlint
docs/ПредопределенныеЗначения.md

67-67: Expected: 0; Actual: 1
Unordered list indentation

(MD007, ul-indent)


68-68: Expected: 2; Actual: 3
Unordered list indentation

(MD007, ul-indent)


69-69: Expected: 4; Actual: 5
Unordered list indentation

(MD007, ul-indent)


70-70: Expected: 4; Actual: 5
Unordered list indentation

(MD007, ul-indent)


71-71: Expected: 2; Actual: 3
Unordered list indentation

(MD007, ul-indent)


72-72: Expected: 4; Actual: 5
Unordered list indentation

(MD007, ul-indent)


73-73: Expected: 4; Actual: 5
Unordered list indentation

(MD007, ul-indent)


74-74: Expected: 0; Actual: 1
Unordered list indentation

(MD007, ul-indent)


75-75: Expected: 2; Actual: 3
Unordered list indentation

(MD007, ul-indent)


76-76: Expected: 4; Actual: 5
Unordered list indentation

(MD007, ul-indent)


77-77: Expected: 4; Actual: 5
Unordered list indentation

(MD007, ul-indent)


78-78: Expected: 4; Actual: 5
Unordered list indentation

(MD007, ul-indent)


79-79: Expected: 2; Actual: 3
Unordered list indentation

(MD007, ul-indent)


80-80: Expected: 4; Actual: 5
Unordered list indentation

(MD007, ul-indent)


81-81: Expected: 6; Actual: 7
Unordered list indentation

(MD007, ul-indent)


82-82: Expected: 6; Actual: 7
Unordered list indentation

(MD007, ul-indent)


83-83: Expected: 4; Actual: 5
Unordered list indentation

(MD007, ul-indent)

Additional comments not posted (20)
src/cf/Catalogs/пбп_ИнтегрируемыеСистемы/Ext/ManagerModule.bsl (1)

1-1: Empty file.

The file does not contain any meaningful code changes.

src/cf/Catalogs/пбп_НастройкиИнтеграции/Ext/ManagerModule.bsl (1)

1-1: Empty file.

The file does not contain any meaningful code changes.

src/cf/ChartsOfCharacteristicTypes/пбп_ПредопределенныеЗначения/Forms/ФормаСписка/Ext/Form/Module.bsl (2)

Line range hint 4-6: LGTM!

The code changes are approved.

Tools
GitHub Check: 1C: Project SubSystems Library Sonarqube Results

[warning] 17-17: src/cf/ChartsOfCharacteristicTypes/пбп_ПредопределенныеЗначения/Forms/ФормаСписка/Ext/Form/Module.bsl#L17
Длина строки 125 превышает максимально допустимую 120


Line range hint 21-27: LGTM!

The code changes are approved.

Tools
GitHub Check: 1C: Project SubSystems Library Sonarqube Results

[warning] 17-17: src/cf/ChartsOfCharacteristicTypes/пбп_ПредопределенныеЗначения/Forms/ФормаСписка/Ext/Form/Module.bsl#L17
Длина строки 125 превышает максимально допустимую 120

src/cf/Catalogs/пбп_МетодыИнтеграции/Forms/ФормаСписка/Ext/Form/Module.bsl (1)

29-29: LGTM! But verify the procedure usage in the codebase.

The procedure is correctly implemented. However, ensure that all calls to ЗаполнитьПредопределенныеНаСервере are correctly updated to reflect the new logic.

The code changes are approved.

Run the following script to verify the procedure usage:

Verification successful

Verification Successful: Procedure Usage Updated Consistently

The procedure ЗаполнитьПредопределенныеНаСервере has been updated across multiple modules to use the new logic for initializing predefined values. The changes appear consistent throughout the codebase. However, it is recommended to manually verify all instances to ensure completeness.

  • Locations where the procedure is used:
    • src/cf/Catalogs/пбп_ТипСоответствияОбъектовИБ/Forms/ФормаСписка/Ext/Form/Module.bsl
    • src/cf/Catalogs/пбп_НастройкиИнтеграции/Forms/ФормаСписка/Ext/Form/Module.bsl
    • src/cf/Catalogs/пбп_МетодыИнтеграции/Forms/ФормаСписка/Ext/Form/Module.bsl
    • src/cf/Catalogs/пбп_ИнтегрируемыеСистемы/Forms/ФормаСписка/Ext/Form/Module.bsl
    • src/cf/ChartsOfCharacteristicTypes/пбп_ПредопределенныеЗначения/Forms/ФормаСписка/Ext/Form/Module.bsl
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all calls to `ЗаполнитьПредопределенныеНаСервере` reflect the new logic.

# Test: Search for the procedure usage. Expect: Only occurrences of the new logic.
rg --type bsl -A 5 $'ЗаполнитьПредопределенныеНаСервере'

Length of output: 324


Script:

#!/bin/bash
# Description: Verify all calls to `ЗаполнитьПредопределенныеНаСервере` reflect the new logic.

# Test: Search for the procedure usage in all files. Expect: Only occurrences of the new logic.
rg -A 5 'ЗаполнитьПредопределенныеНаСервере'

Length of output: 6855

src/cf/Catalogs/пбп_НастройкиИнтеграции/Forms/ФормаСписка/Ext/Form/Module.bsl (1)

29-29: LGTM! But verify the procedure usage in the codebase.

The procedure is correctly implemented. However, ensure that all calls to ЗаполнитьПредопределенныеНаСервере are correctly updated to reflect the new logic.

The code changes are approved.

Run the following script to verify the procedure usage:

Verification successful

Procedure usage verified and consistent across the codebase.

The procedure ЗаполнитьПредопределенныеНаСервере is correctly implemented and used consistently with the new logic in multiple modules. No further action is required.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all calls to `ЗаполнитьПредопределенныеНаСервере` reflect the new logic.

# Test: Search for the procedure usage. Expect: Only occurrences of the new logic.
rg --type bsl -A 5 $'ЗаполнитьПредопределенныеНаСервере'

Length of output: 324


Script:

#!/bin/bash
# Description: Search for all occurrences of the procedure `ЗаполнитьПредопределенныеНаСервере` in the codebase.

# Test: Search for the procedure usage without specifying file type. Expect: Occurrences of the new logic.
rg -A 5 'ЗаполнитьПредопределенныеНаСервере'

Length of output: 6855

src/cf/Catalogs/пбп_ИнтегрируемыеСистемы/Forms/ФормаСписка/Ext/Form/Module.bsl (1)

29-29: LGTM! But verify the procedure usage in the codebase.

The procedure is correctly implemented. However, ensure that all calls to ЗаполнитьПредопределенныеНаСервере are correctly updated to reflect the new logic.

The code changes are approved.

Run the following script to verify the procedure usage:

Verification successful

Procedure usage is consistent and correct across the codebase.

The procedure ЗаполнитьПредопределенныеНаСервере is used consistently in multiple files, and the changes reflect the new logic as intended. No further action is required.

  • Files checked include various modules under src/cf/Catalogs and src/cf/ChartsOfCharacteristicTypes.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all calls to `ЗаполнитьПредопределенныеНаСервере` reflect the new logic.

# Test: Search for the procedure usage. Expect: Only occurrences of the new logic.
rg --type bsl -A 5 $'ЗаполнитьПредопределенныеНаСервере'

Length of output: 324


Script:

#!/bin/bash
# Description: Search for the procedure `ЗаполнитьПредопределенныеНаСервере` in the codebase without specifying a file type.

# Test: Search for the procedure usage. Expect: Occurrences of the procedure name.
rg -A 5 'ЗаполнитьПредопределенныеНаСервере'

Length of output: 6855

src/cf/Catalogs/пбп_МетодыИнтеграции/Ext/ManagerModule.bsl (2)

Line range hint 14-41: LGTM!

The code changes are approved.


Line range hint 44-63: LGTM!

The code changes are approved.

src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl (3)

139-147: LGTM!

The code changes are approved.


149-157: LGTM!

The code changes are approved.


159-167: LGTM!

The code changes are approved.

docs/ПредопределенныеЗначения.md (2)

3-7: LGTM!

The changes are approved.


Line range hint 8-63: LGTM!

The changes are approved.

src/cf/CommonModules/пбп_ОбщегоНазначенияПовтИсп/Ext/Module.bsl (2)

30-38: LGTM!

The code changes are approved.


42-54: LGTM!

The code changes are approved.

src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl (4)

Line range hint 45-93: LGTM!

The code changes are approved.

Tools
GitHub Check: 1C: Project SubSystems Library Sonarqube Results

[notice] 23-23: src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl#L23
Добавьте описание метода программного интерфейса


[warning] 29-29: src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl#L29
Длина строки 123 превышает максимально допустимую 120


[warning] 33-33: src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl#L33
Длина строки 122 превышает максимально допустимую 120


136-154: LGTM!

The code changes are approved.


Line range hint 178-219: LGTM!

The code changes are approved.


156-172: Add descriptions for parameters.

The function ОбработатьПредопределенныеЗначения lacks descriptions for its parameters. Adding these descriptions will improve the readability and maintainability of the code.

Apply this diff to add the descriptions:

+// Параметры:
+//  ТаблицаПредопределенных - Таблица значений предопределенных элементов.
+//  МенеджерОбъекта - Менеджер объекта, для которого обрабатываются предопределенные значения.
Процедура ОбработатьПредопределенныеЗначения(ТаблицаПредопределенных, МенеджерОбъекта) Экспорт

Likely invalid or redundant comment.

@@ -14,7 +14,7 @@

&НаСервереБезКонтекста
Процедура ЗаполнитьПредопределенныеНаСервере()
пбп_ПредопределенныеЗначения.ИнициализироватьПредопределенныеЗначения();
пбп_ПредопределенныеЗначения.ИнициализироватьПредопределенныеЗначения(ПланыВидовХарактеристик.пбп_ПредопределенныеЗначения);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Split the line to adhere to the maximum line length limit.

The line length exceeds the maximum limit of 120 characters.

Apply this diff to split the line:

-пбп_ПредопределенныеЗначения.ИнициализироватьПредопределенныеЗначения(ПланыВидовХарактеристик.пбп_ПредопределенныеЗначения);
+пбп_ПредопределенныеЗначения.ИнициализироватьПредопределенныеЗначения(
+  ПланыВидовХарактеристик.пбп_ПредопределенныеЗначения
+);
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.

Suggested change
пбп_ПредопределенныеЗначения.ИнициализироватьПредопределенныеЗначения(ПланыВидовХарактеристик.пбп_ПредопределенныеЗначения);
пбп_ПредопределенныеЗначения.ИнициализироватьПредопределенныеЗначения(
ПланыВидовХарактеристик.пбп_ПредопределенныеЗначения
);
Tools
GitHub Check: 1C: Project SubSystems Library Sonarqube Results

[warning] 17-17: src/cf/ChartsOfCharacteristicTypes/пбп_ПредопределенныеЗначения/Forms/ФормаСписка/Ext/Form/Module.bsl#L17
Длина строки 125 превышает максимально допустимую 120

Comment on lines +64 to +84
## Получение значения элементов

Для удобной работы с ПВХ у нас есть следующие функции:
- **пбп_ОбщегоНазначенияСервер.ПолучитьПредопределенноеЗначение(Имя, ИспользоватьКэш)** - если это единичное значение, возвращается сразу оно, если установлен флаг "Список значений" то возвращает массив значений. Для получения часто используемых предопределенных значений, установите ИспользоватьКэш = Истина.
- Параметры:
- Имя - Строка
- ИспользоватьКэш - Булево
- Возвращаемое значение:
- ПроизвольныйТип - Значение переменной ПВХ.
- Массив - Массив значений переменной ПВХ.
- **пбп_ОбщегоНазначенияСервер.ПолучитьПредопределенныеЗначения(Имена, ВРазрезеКлючей, ИспользоватьКэш)** - если "ВРазрезеКлючей" то возвращает соответствие нескольких элементов ПВХ, если ВРазрезеКлючей = ложь, то возвращает массив значений. Для получения часто используемых предопределенных значений, установите ИспользоватьКэш = Истина.
- Параметры:
- Имена - Строка - Имена переменных ПВХ, перечисленные через запятую.
- ВРазрезеКлючей - Булево
- ИспользоватьКэш - Булево
- Возвращаемое значение:
- Соответствие - Соответствие имен и значений переменных ПВХ.
- Ключ - Строка - имя значения
- Значение - ПроизвольныйТип
- Массив - ПроизвольныйТип

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fix unordered list indentation.

The section has unordered list indentation issues. Fix the indentation to improve readability.

Apply this diff to fix the unordered list indentation:

- - **пбп_ОбщегоНазначенияСервер.ПолучитьПредопределенноеЗначение(Имя, ИспользоватьКэш)** - если это единичное значение, возвращается сразу оно, если установлен флаг "Список значений" то возвращает массив значений. Для получения часто используемых предопределенных значений, установите ИспользоватьКэш = Истина.
-   - Параметры:
-     - Имя - Строка
-     - ИспользоватьКэш - Булево
-   - Возвращаемое значение:
-     - ПроизвольныйТип - Значение переменной ПВХ.
-     - Массив - Массив значений переменной ПВХ.
- - **пбп_ОбщегоНазначенияСервер.ПолучитьПредопределенныеЗначения(Имена, ВРазрезеКлючей, ИспользоватьКэш)** - если "ВРазрезеКлючей" то возвращает соответствие нескольких элементов ПВХ, если ВРазрезеКлючей = ложь, то возвращает массив значений. Для получения часто используемых предопределенных значений, установите ИспользоватьКэш = Истина.
-   - Параметры:
-     - Имена - Строка - Имена переменных ПВХ, перечисленные через запятую.
-     - ВРазрезеКлючей - Булево
-     - ИспользоватьКэш - Булево
-   - Возвращаемое значение:
-     - Соответствие - Соответствие имен и значений переменных ПВХ.
-       - Ключ - Строка - имя значения
-       - Значение - ПроизвольныйТип
-     - Массив - ПроизвольныйТип
+ - **пбп_ОбщегоНазначенияСервер.ПолучитьПредопределенноеЗначение(Имя, ИспользоватьКэш)** - если это единичное значение, возвращается сразу оно, если установлен флаг "Список значений" то возвращает массив значений. Для получения часто используемых предопределенных значений, установите ИспользоватьКэш = Истина.
+   - Параметры:
+     - Имя - Строка
+     - ИспользоватьКэш - Булево
+   - Возвращаемое значение:
+     - ПроизвольныйТип - Значение переменной ПВХ.
+     - Массив - Массив значений переменной ПВХ.
+ - **пбп_ОбщегоНазначенияСервер.ПолучитьПредопределенныеЗначения(Имена, ВРазрезеКлючей, ИспользоватьКэш)** - если "ВРазрезеКлючей" то возвращает соответствие нескольких элементов ПВХ, если ВРазрезеКлючей = ложь, то возвращает массив значений. Для получения часто используемых предопределенных значений, установите ИспользоватьКэш = Истина.
+   - Параметры:
+     - Имена - Строка - Имена переменных ПВХ, перечисленные через запятую.
+     - ВРазрезеКлючей - Булево
+     - ИспользоватьКэш - Булево
+   - Возвращаемое значение:
+     - Соответствие - Соответствие имен и значений переменных ПВХ.
+       - Ключ - Строка - имя значения
+       - Значение - ПроизвольныйТип
+     - Массив - ПроизвольныйТип

Committable suggestion was skipped due to low confidence.

Tools
Markdownlint

67-67: Expected: 0; Actual: 1
Unordered list indentation

(MD007, ul-indent)


68-68: Expected: 2; Actual: 3
Unordered list indentation

(MD007, ul-indent)


69-69: Expected: 4; Actual: 5
Unordered list indentation

(MD007, ul-indent)


70-70: Expected: 4; Actual: 5
Unordered list indentation

(MD007, ul-indent)


71-71: Expected: 2; Actual: 3
Unordered list indentation

(MD007, ul-indent)


72-72: Expected: 4; Actual: 5
Unordered list indentation

(MD007, ul-indent)


73-73: Expected: 4; Actual: 5
Unordered list indentation

(MD007, ul-indent)


74-74: Expected: 0; Actual: 1
Unordered list indentation

(MD007, ul-indent)


75-75: Expected: 2; Actual: 3
Unordered list indentation

(MD007, ul-indent)


76-76: Expected: 4; Actual: 5
Unordered list indentation

(MD007, ul-indent)


77-77: Expected: 4; Actual: 5
Unordered list indentation

(MD007, ul-indent)


78-78: Expected: 4; Actual: 5
Unordered list indentation

(MD007, ul-indent)


79-79: Expected: 2; Actual: 3
Unordered list indentation

(MD007, ul-indent)


80-80: Expected: 4; Actual: 5
Unordered list indentation

(MD007, ul-indent)


81-81: Expected: 6; Actual: 7
Unordered list indentation

(MD007, ul-indent)


82-82: Expected: 6; Actual: 7
Unordered list indentation

(MD007, ul-indent)


83-83: Expected: 4; Actual: 5
Unordered list indentation

(MD007, ul-indent)

Comment on lines +152 to +157
Функция МенеджерОбъектаПоПолномуИмени(ПолноеИмя) Экспорт

Модуль = ПолучитьМодуль();
Возврат Модуль.МенеджерОбъектаПоПолномуИмени(ПолноеИмя);

КонецФункции
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add descriptions for parameter and return value.

The function МенеджерОбъектаПоПолномуИмени lacks descriptions for its parameter and return value. Adding these descriptions will improve the readability and maintainability of the code.

Apply this diff to add the descriptions:

+// Параметры:
+//  ПолноеИмя - Строка - Полное имя объекта.
+//
+// Возвращаемое значение:
+//  - ПроизвольныйТип - Менеджер объекта по полному имени.
Функция МенеджерОбъектаПоПолномуИмени(ПолноеИмя) Экспорт
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.

Suggested change
Функция МенеджерОбъектаПоПолномуИмени(ПолноеИмя) Экспорт
Модуль = ПолучитьМодуль();
Возврат Модуль.МенеджерОбъектаПоПолномуИмени(ПолноеИмя);
КонецФункции
// Параметры:
// ПолноеИмя - Строка - Полное имя объекта.
//
// Возвращаемое значение:
// - ПроизвольныйТип - Менеджер объекта по полному имени.
Функция МенеджерОбъектаПоПолномуИмени(ПолноеИмя) Экспорт
Модуль = ПолучитьМодуль();
Возврат Модуль.МенеджерОбъектаПоПолномуИмени(ПолноеИмя);
КонецФункции
Tools
GitHub Check: 1C: Project SubSystems Library Sonarqube Results

[warning] 152-152: src/cf/CommonModules/пбп_ОбщегоНазначенияСлужебный/Ext/Module.bsl#L152
Добавьте описание возвращаемого значения функции


[warning] 152-152: src/cf/CommonModules/пбп_ОбщегоНазначенияСлужебный/Ext/Module.bsl#L152
Необходимо добавить описание всех параметров метода

Comment on lines 23 to 38
Процедура ИнициализироватьПредопределенныеЗначения(МенеджерОбъекта) Экспорт

ТЗПредопределенныхЗначений = пбп_ПредопределенныеЗначенияПереопределяемый.ПредопределенныеЗначения();

ТЗПредопределенныхЗначенийКСозданию = ПредопределенныеЗначенияКСозданию(ТЗПредопределенныхЗначений);
ТипЗначения = ТипЗнч(МенеджерОбъекта);
Если ТипЗначения = Тип("ПланВидовХарактеристикМенеджер.пбп_ПредопределенныеЗначения") Тогда
ТЗПредопределенныхЗначений = пбп_ПредопределенныеЗначенияПереопределяемый.ПредопределенныеЗначения();
ИначеЕсли ТипЗначения = Тип("СправочникМенеджер.пбп_ИнтегрируемыеСистемы") Тогда
ТЗПредопределенныхЗначений = пбп_ПредопределенныеЗначенияПереопределяемый.ПредопределенныеЗначенияИнтегрируемыеСистемы();
ИначеЕсли ТипЗначения = Тип("СправочникМенеджер.пбп_МетодыИнтеграции") Тогда
ТЗПредопределенныхЗначений = пбп_ПредопределенныеЗначенияПереопределяемый.ПредопределенныеЗначенияМетодыИнтеграции();
ИначеЕсли ТипЗначения = Тип("СправочникМенеджер.пбп_НастройкиИнтеграции") Тогда
ТЗПредопределенныхЗначений = пбп_ПредопределенныеЗначенияПереопределяемый.ПредопределенныеЗначенияНастройкиИнтеграции();
Иначе
Возврат;
КонецЕсли;

СоздатьПредопределенныеЗначения(
ТЗПредопределенныхЗначенийКСозданию,
ПланыВидовХарактеристик.пбп_ПредопределенныеЗначения);
ОбработатьПредопределенныеЗначения(ТЗПредопределенныхЗначений, МенеджерОбъекта);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add a description for the method.

The function ИнициализироватьПредопределенныеЗначения lacks a description. Adding a description will improve the readability and maintainability of the code.

Apply this diff to add the description:

+// Инициализирует предопределенные значения на основании менеджера объекта.
+//
+// Параметры:
+//  МенеджерОбъекта - Менеджер объекта, для которого инициализируются предопределенные значения.
Процедура ИнициализироватьПредопределенныеЗначения(МенеджерОбъекта) Экспорт
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.

Suggested change
Процедура ИнициализироватьПредопределенныеЗначения(МенеджерОбъекта) Экспорт
ТЗПредопределенныхЗначений = пбп_ПредопределенныеЗначенияПереопределяемый.ПредопределенныеЗначения();
ТЗПредопределенныхЗначенийКСозданию = ПредопределенныеЗначенияКСозданию(ТЗПредопределенныхЗначений);
ТипЗначения = ТипЗнч(МенеджерОбъекта);
Если ТипЗначения = Тип("ПланВидовХарактеристикМенеджер.пбп_ПредопределенныеЗначения") Тогда
ТЗПредопределенныхЗначений = пбп_ПредопределенныеЗначенияПереопределяемый.ПредопределенныеЗначения();
ИначеЕсли ТипЗначения = Тип("СправочникМенеджер.пбп_ИнтегрируемыеСистемы") Тогда
ТЗПредопределенныхЗначений = пбп_ПредопределенныеЗначенияПереопределяемый.ПредопределенныеЗначенияИнтегрируемыеСистемы();
ИначеЕсли ТипЗначения = Тип("СправочникМенеджер.пбп_МетодыИнтеграции") Тогда
ТЗПредопределенныхЗначений = пбп_ПредопределенныеЗначенияПереопределяемый.ПредопределенныеЗначенияМетодыИнтеграции();
ИначеЕсли ТипЗначения = Тип("СправочникМенеджер.пбп_НастройкиИнтеграции") Тогда
ТЗПредопределенныхЗначений = пбп_ПредопределенныеЗначенияПереопределяемый.ПредопределенныеЗначенияНастройкиИнтеграции();
Иначе
Возврат;
КонецЕсли;
СоздатьПредопределенныеЗначения(
ТЗПредопределенныхЗначенийКСозданию,
ПланыВидовХарактеристик.пбп_ПредопределенныеЗначения);
ОбработатьПредопределенныеЗначения(ТЗПредопределенныхЗначений, МенеджерОбъекта);
// Инициализирует предопределенные значения на основании менеджера объекта.
//
// Параметры:
// МенеджерОбъекта - Менеджер объекта, для которого инициализируются предопределенные значения.
Процедура ИнициализироватьПредопределенныеЗначения(МенеджерОбъекта) Экспорт
ТипЗначения = ТипЗнч(МенеджерОбъекта);
Если ТипЗначения = Тип("ПланВидовХарактеристикМенеджер.пбп_ПредопределенныеЗначения") Тогда
ТЗПредопределенныхЗначений = пбп_ПредопределенныеЗначенияПереопределяемый.ПредопределенныеЗначения();
ИначеЕсли ТипЗначения = Тип("СправочникМенеджер.пбп_ИнтегрируемыеСистемы") Тогда
ТЗПредопределенныхЗначений = пбп_ПредопределенныеЗначенияПереопределяемый.ПредопределенныеЗначенияИнтегрируемыеСистемы();
ИначеЕсли ТипЗначения = Тип("СправочникМенеджер.пбп_МетодыИнтеграции") Тогда
ТЗПредопределенныхЗначений = пбп_ПредопределенныеЗначенияПереопределяемый.ПредопределенныеЗначенияМетодыИнтеграции();
ИначеЕсли ТипЗначения = Тип("СправочникМенеджер.пбп_НастройкиИнтеграции") Тогда
ТЗПредопределенныхЗначений = пбп_ПредопределенныеЗначенияПереопределяемый.ПредопределенныеЗначенияНастройкиИнтеграции();
Иначе
Возврат;
КонецЕсли;
ОбработатьПредопределенныеЗначения(ТЗПредопределенныхЗначений, МенеджерОбъекта);
Tools
GitHub Check: 1C: Project SubSystems Library Sonarqube Results

[notice] 23-23: src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl#L23
Добавьте описание метода программного интерфейса


[warning] 29-29: src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl#L29
Длина строки 123 превышает максимально допустимую 120


[warning] 33-33: src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl#L33
Длина строки 122 превышает максимально допустимую 120

Copy link

Failed

  • 7 New Issues (is greater than 0)

Analysis Details

7 Issues

  • Bug 0 Bugs
  • Vulnerability 0 Vulnerabilities
  • Code Smell 7 Code Smells

Coverage and Duplications

  • Coverage No coverage information (0.00% Estimated after merge)
  • Duplications 0.00% Duplicated Code (0.50% Estimated after merge)

Project ID: PSSL

View in SonarQube

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

Outside diff range, codebase verification and nitpick comments (1)
src/cf/Configuration.xml (1)

60-60: Issue Found: Reference to Removed <CommonModule> Entry

The module пбп_ТипСоответствияОбъектовИБПереопределяемый is still referenced in the following file, which may lead to issues if it is removed without proper refactoring:

  • src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl

Please investigate and refactor the code to ensure that the removal of this module does not impact the application's functionality. No references were found for пбп_ИнтеграцииПереопределяемый, suggesting it might be safe to remove.

Analysis chain

Verify Removal of <CommonModule> Entries

The entries пбп_ИнтеграцииПереопределяемый and пбп_ТипСоответствияОбъектовИБПереопределяемый have been removed. Ensure that these modules are not required by other parts of the application or that their functionality has been suitably replaced or refactored.

Run the following script to verify the impact of these removals:

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that the removed CommonModule entries are not referenced elsewhere in the application.

# Test: Search for references to the removed CommonModule entries. Expect: No occurrences.
rg --type xml -A 5 $'пбп_ИнтеграцииПереопределяемый'
rg --type xml -A 5 $'пбп_ТипСоответствияОбъектовИБПереопределяемый'

Length of output: 635


Script:

#!/bin/bash
# Description: Verify that the removed CommonModule entries are not referenced elsewhere in the application across all file types.

# Test: Search for references to the removed CommonModule entries across all file types. Expect: No occurrences.
rg -A 5 'пбп_ИнтеграцииПереопределяемый'
rg -A 5 'пбп_ТипСоответствияОбъектовИБПереопределяемый'

Length of output: 2782

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 2bb5c52 and d6ec387.

Files selected for processing (9)
  • src/cf/Catalogs/пбп_ТипСоответствияОбъектовИБ/Ext/ManagerModule.bsl (1 hunks)
  • src/cf/Catalogs/пбп_ТипСоответствияОбъектовИБ/Forms/ФормаСписка/Ext/Form/Module.bsl (1 hunks)
  • src/cf/ChartsOfCharacteristicTypes/пбп_ПредопределенныеЗначения/Forms/ФормаСписка/Ext/Form/Module.bsl (1 hunks)
  • src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl (3 hunks)
  • src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl (7 hunks)
  • src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl (3 hunks)
  • src/cf/Configuration.xml (3 hunks)
  • src/cf/Subsystems/пбп_СоответствиеОбъектовИБ.xml (1 hunks)
  • src/cf/Subsystems/пбп_УправлениеИнтеграциями.xml (1 hunks)
Files skipped from review as they are similar to previous changes (1)
  • src/cf/ChartsOfCharacteristicTypes/пбп_ПредопределенныеЗначения/Forms/ФормаСписка/Ext/Form/Module.bsl
Additional context used
GitHub Check: 1C: Project SubSystems Library Sonarqube Results
src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl

[failure] 1831-1831: src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl#L1831
Уменьшите когнитивную сложность "МенеджерОбъектаПоПолномуИмени" с 31 до 15


[warning] 1885-1885: src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl#L1885
Создайте константу с понятным названием, присвойте ей значение "2" и используйте эту константу вместо магического числа.


[failure] 1831-1831: src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl#L1831
Уменьшите цикломатическую сложность "МенеджерОбъектаПоПолномуИмени" с 29 до 20


[warning] 1837-1837: src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl#L1837
Создайте константу с понятным названием, присвойте ей значение "2" и используйте эту константу вместо магического числа.


[warning] 1888-1888: src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl#L1888
Создайте константу с понятным названием, присвойте ей значение "4" и используйте эту константу вместо магического числа.

Additional comments not posted (5)
src/cf/Catalogs/пбп_ТипСоответствияОбъектовИБ/Forms/ФормаСписка/Ext/Form/Module.bsl (1)

29-29: Refactor to modular initialization method in ЗаполнитьПредопределенныеНаСервере.

The change to use пбп_ПредопределенныеЗначения.ИнициализироватьПредопределенныеЗначения instead of directly populating predefined correspondences is a positive shift towards modularity. This should enhance maintainability and flexibility in managing predefined values. However, ensure that this new method is compatible with all parts of the system that interact with predefined values.

The code changes are approved.

src/cf/Subsystems/пбп_СоответствиеОбъектовИБ.xml (1)

29-29: Change in XML configuration reference.

The replacement of the module reference with a new identifier (f49cf4ad-0522-4614-b522-500afecfbe5a) needs careful validation to ensure that it correctly points to the intended module and does not disrupt any existing functionalities.

Verify the correctness and impact of the new identifier in the XML configuration.

src/cf/Subsystems/пбп_УправлениеИнтеграциями.xml (1)

41-41: Verify the correctness and impact of the UUID reference.

The change from a named reference to a UUID (10964c81-8622-47e4-8243-0dc1fc8068de) needs verification to ensure it correctly identifies the intended object. Additionally, it's crucial to assess the impact of this change on other parts of the system where this reference is used.

Verification successful

UUID Reference Verification Complete

The UUID 10964c81-8622-47e4-8243-0dc1fc8068de is only referenced in the file src/cf/Subsystems/пбп_УправлениеИнтеграциями.xml and does not appear elsewhere in the codebase. This indicates that the change to a UUID does not affect other parts of the system. No further action is required.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the UUID reference and its impact on the system.

# Test: Search for the UUID in the codebase. Expect: References to this UUID should be consistent and correct.
rg --type xml -A 5 $'10964c81-8622-47e4-8243-0dc1fc8068de'

Length of output: 517


Script:

#!/bin/bash
# Description: Broaden the search for the UUID reference across different file types.

# Test: Search for the UUID in the entire codebase. Expect: To find any additional references or documentation.
rg '10964c81-8622-47e4-8243-0dc1fc8068de' -A 5

Length of output: 506

src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl (1)

23-48: Ensure proper implementation and documentation for the procedure ИнициализироватьПредопределенныеЗначения.

This procedure initializes predefined values from a table based on the object manager provided. Ensure that the implementation is correct and consider adding a detailed description for better maintainability.

+// Initializes predefined values from a table based on the object manager provided.
+//
+// Parameters:
+//   МенеджерОбъекта - The object manager used to initialize the predefined values.
Процедура ИнициализироватьПредопределенныеЗначения(МенеджерОбъекта) Экспорт

Likely invalid or redundant comment.

src/cf/Configuration.xml (1)

60-60: Version Update Approved

The version number has been updated from 1.0.1.2 to 1.0.1.3. This change is typically indicative of minor updates or patches, which seems consistent with the removal of some <CommonModule> entries as part of a cleanup or deprecation effort.

The version update is approved as it follows standard versioning practices.

Comment on lines +114 to +126
Функция ПредопределенныеЗначенияНастройкиИнтеграции() Экспорт

Результат = ТаблицаПредопределенныхНастройкиИнтеграции();

// Добавление
НоваяНастройка = Результат.Добавить();
НоваяНастройка.Наименование = "Интеграция с системой N";
НоваяНастройка.ИдентификаторНастройки = "ИнтеграцияССистемойN";
// КонецДобавления

Возврат Результат;

КонецФункции
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ensure proper implementation and documentation for the function ПредопределенныеЗначенияНастройкиИнтеграции.

This function initializes a table with predefined values for integration settings. Ensure that the implementation is correct and consider adding a detailed description for better maintainability.

+// Initializes a table with predefined values for integration settings.
+//
+// Returns:
+//   ТаблицаЗначений - A table filled with predefined values for integration settings.
Функция ПредопределенныеЗначенияНастройкиИнтеграции() Экспорт
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.

Suggested change
Функция ПредопределенныеЗначенияНастройкиИнтеграции() Экспорт
Результат = ТаблицаПредопределенныхНастройкиИнтеграции();
// Добавление
НоваяНастройка = Результат.Добавить();
НоваяНастройка.Наименование = "Интеграция с системой N";
НоваяНастройка.ИдентификаторНастройки = "ИнтеграцияССистемойN";
// КонецДобавления
Возврат Результат;
КонецФункции
// Initializes a table with predefined values for integration settings.
//
// Returns:
// ТаблицаЗначений - A table filled with predefined values for integration settings.
Функция ПредопределенныеЗначенияНастройкиИнтеграции() Экспорт
Результат = ТаблицаПредопределенныхНастройкиИнтеграции();
// Добавление
НоваяНастройка = Результат.Добавить();
НоваяНастройка.Наименование = "Интеграция с системой N";
НоваяНастройка.ИдентификаторНастройки = "ИнтеграцияССистемойN";
// КонецДобавления
Возврат Результат;
КонецФункции

Comment on lines +76 to +88
Функция ПредопределенныеЗначенияИнтегрируемыеСистемы() Экспорт

Результат = ТаблицаПредопределенныхИнтегрируемыеСистемы();

// Добавление
НоваяСистема = Результат.Добавить();
НоваяСистема.Наименование = "Система N";
НоваяСистема.ИдентификаторНастройки = "СистемаN";
// КонецДобавления

Возврат Результат;

КонецФункции
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ensure proper implementation and documentation for the function ПредопределенныеЗначенияИнтегрируемыеСистемы.

This function initializes a table with predefined values for integrated systems. Ensure that the implementation is correct and consider adding a detailed description for better maintainability.

+// Initializes a table with predefined values for integrated systems.
+//
+// Returns:
+//   ТаблицаЗначений - A table filled with predefined values for integrated systems.
Функция ПредопределенныеЗначенияИнтегрируемыеСистемы() Экспорт
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.

Suggested change
Функция ПредопределенныеЗначенияИнтегрируемыеСистемы() Экспорт
Результат = ТаблицаПредопределенныхИнтегрируемыеСистемы();
// Добавление
НоваяСистема = Результат.Добавить();
НоваяСистема.Наименование = "Система N";
НоваяСистема.ИдентификаторНастройки = "СистемаN";
// КонецДобавления
Возврат Результат;
КонецФункции
// Initializes a table with predefined values for integrated systems.
//
// Returns:
// ТаблицаЗначений - A table filled with predefined values for integrated systems.
Функция ПредопределенныеЗначенияИнтегрируемыеСистемы() Экспорт
Результат = ТаблицаПредопределенныхИнтегрируемыеСистемы();
// Добавление
НоваяСистема = Результат.Добавить();
НоваяСистема.Наименование = "Система N";
НоваяСистема.ИдентификаторНастройки = "СистемаN";
// КонецДобавления
Возврат Результат;
КонецФункции

Comment on lines +133 to +145
Функция ПредопределенныеЗначенияТипСоответствияОбъектовИБ() Экспорт

Результат = ТаблицаПредопределенныхТипСоответствияОбъектовИБ();

// Добавление
НоваяНастройка = Результат.Добавить();
НоваяНастройка.Наименование = "Тест";
НоваяНастройка.ИдентификаторНастройки = "Тест";
// КонецДобавления

Возврат Результат;

КонецФункции
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ensure proper implementation and documentation for the function ПредопределенныеЗначенияТипСоответствияОбъектовИБ.

This function initializes a table with predefined values for object type correspondences. Ensure that the implementation is correct and consider adding a detailed description for better maintainability.

+// Initializes a table with predefined values for object type correspondences.
+//
+// Returns:
+//   ТаблицаЗначений - A table filled with predefined values for object type correspondences.
Функция ПредопределенныеЗначенияТипСоответствияОбъектовИБ() Экспорт
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.

Suggested change
Функция ПредопределенныеЗначенияТипСоответствияОбъектовИБ() Экспорт
Результат = ТаблицаПредопределенныхТипСоответствияОбъектовИБ();
// Добавление
НоваяНастройка = Результат.Добавить();
НоваяНастройка.Наименование = "Тест";
НоваяНастройка.ИдентификаторНастройки = "Тест";
// КонецДобавления
Возврат Результат;
КонецФункции
// Initializes a table with predefined values for object type correspondences.
//
// Returns:
// ТаблицаЗначений - A table filled with predefined values for object type correspondences.
Функция ПредопределенныеЗначенияТипСоответствияОбъектовИБ() Экспорт
Результат = ТаблицаПредопределенныхТипСоответствияОбъектовИБ();
// Добавление
НоваяНастройка = Результат.Добавить();
НоваяНастройка.Наименование = "Тест";
НоваяНастройка.ИдентификаторНастройки = "Тест";
// КонецДобавления
Возврат Результат;
КонецФункции

Comment on lines +95 to +107
Функция ПредопределенныеЗначенияМетодыИнтеграции() Экспорт

Результат = ТаблицаПредопределенныхМетодыИнтеграции();

// Добавление
НовыйМетод = Результат.Добавить();
НовыйМетод.Наименование = "Метод интеграции системы N";
НовыйМетод.ИдентификаторНастройки = "МетодИнтеграцииСистемыN";
// КонецДобавления

Возврат Результат;

КонецФункции
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ensure proper implementation and documentation for the function ПредопределенныеЗначенияМетодыИнтеграции.

This function initializes a table with predefined values for integration methods. Ensure that the implementation is correct and consider adding a detailed description for better maintainability.

+// Initializes a table with predefined values for integration methods.
+//
+// Returns:
+//   ТаблицаЗначений - A table filled with predefined values for integration methods.
Функция ПредопределенныеЗначенияМетодыИнтеграции() Экспорт
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.

Suggested change
Функция ПредопределенныеЗначенияМетодыИнтеграции() Экспорт
Результат = ТаблицаПредопределенныхМетодыИнтеграции();
// Добавление
НовыйМетод = Результат.Добавить();
НовыйМетод.Наименование = "Метод интеграции системы N";
НовыйМетод.ИдентификаторНастройки = "МетодИнтеграцииСистемыN";
// КонецДобавления
Возврат Результат;
КонецФункции
// Initializes a table with predefined values for integration methods.
//
// Returns:
// ТаблицаЗначений - A table filled with predefined values for integration methods.
Функция ПредопределенныеЗначенияМетодыИнтеграции() Экспорт
Результат = ТаблицаПредопределенныхМетодыИнтеграции();
// Добавление
НовыйМетод = Результат.Добавить();
НовыйМетод.Наименование = "Метод интеграции системы N";
НовыйМетод.ИдентификаторНастройки = "МетодИнтеграцииСистемыN";
// КонецДобавления
Возврат Результат;
КонецФункции

Comment on lines 55 to 71
// ТаблицаПредопределенных - ТаблицаЗначений - см. пбп_ПредопределенныеЗначенияПереопределяемыйТаблицаПредопределенных,
// пбп_ТипСоответствияОбъектовИБПереопределяемый.ТаблицаПредопределенных
// МенеджерОбъекта - СправочникМенеджер, ДокументМенеджер, ОбработкаМенеджер, РегистрСведенийМенеджер - менеджер объекта.
// МенеджерОбъекта - СправочникМенеджер, ПланВидовХарактеристикМенеджер - менеджер объекта.
// ПолноеИмяОбъекта - Строка - Полное имя объекта метаданных.
//
Процедура СоздатьПредопределенныеЗначения(Таблица, МенеджерОбъекта) Экспорт
Процедура СоздатьПредопределенныеЗначения(ТаблицаПредопределенных, МенеджерОбъекта, ПолноеИмяОбъекта = "") Экспорт

Если Не ЗначениеЗаполнено(Таблица) Тогда
Если Не ЗначениеЗаполнено(ТаблицаПредопределенных) Тогда
Возврат;
КонецЕсли;

Если ПустаяСтрока(ПолноеИмяОбъекта) Тогда
ПолноеИмяОбъекта = ПолноеИмяОбъекта();
КонецЕсли;

Группы = Новый Соответствие;
КолонкаСуществует = Таблица.Колонки.Найти("ЭтоГруппа") <> Неопределено;
КолонкаСуществует = ТаблицаПредопределенных.Колонки.Найти("ЭтоГруппа") <> Неопределено;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ensure proper implementation and documentation for the procedure СоздатьПредопределенныеЗначения.

This procedure creates predefined values based on a filled table. Ensure that the implementation is correct and consider adding a detailed description for better maintainability.

+// Creates predefined values based on a filled table.
+//
+// Parameters:
+//   ТаблицаПредопределенных - The table of predefined values.
+//   МенеджерОбъекта - The object manager used to create the predefined values.
+//   ПолноеИмяОбъекта - The full name of the metadata object.
Процедура СоздатьПредопределенныеЗначения(ТаблицаПредопределенных, МенеджерОбъекта, ПолноеИмяОбъекта = "") Экспорт
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.

Suggested change
// ТаблицаПредопределенных - ТаблицаЗначений - см. пбп_ПредопределенныеЗначенияПереопределяемыйТаблицаПредопределенных,
// пбп_ТипСоответствияОбъектовИБПереопределяемый.ТаблицаПредопределенных
// МенеджерОбъекта - СправочникМенеджер, ДокументМенеджер, ОбработкаМенеджер, РегистрСведенийМенеджер - менеджер объекта.
// МенеджерОбъекта - СправочникМенеджер, ПланВидовХарактеристикМенеджер - менеджер объекта.
// ПолноеИмяОбъекта - Строка - Полное имя объекта метаданных.
//
Процедура СоздатьПредопределенныеЗначения(Таблица, МенеджерОбъекта) Экспорт
Процедура СоздатьПредопределенныеЗначения(ТаблицаПредопределенных, МенеджерОбъекта, ПолноеИмяОбъекта = "") Экспорт
Если Не ЗначениеЗаполнено(Таблица) Тогда
Если Не ЗначениеЗаполнено(ТаблицаПредопределенных) Тогда
Возврат;
КонецЕсли;
Если ПустаяСтрока(ПолноеИмяОбъекта) Тогда
ПолноеИмяОбъекта = ПолноеИмяОбъекта();
КонецЕсли;
Группы = Новый Соответствие;
КолонкаСуществует = Таблица.Колонки.Найти("ЭтоГруппа") <> Неопределено;
КолонкаСуществует = ТаблицаПредопределенных.Колонки.Найти("ЭтоГруппа") <> Неопределено;
// Creates predefined values based on a filled table.
//
// Parameters:
// ТаблицаПредопределенных - The table of predefined values.
// МенеджерОбъекта - The object manager used to create the predefined values.
// ПолноеИмяОбъекта - The full name of the metadata object.
Процедура СоздатьПредопределенныеЗначения(ТаблицаПредопределенных, МенеджерОбъекта, ПолноеИмяОбъекта = "") Экспорт
Если Не ЗначениеЗаполнено(ТаблицаПредопределенных) Тогда
Возврат;
КонецЕсли;
Если ПустаяСтрока(ПолноеИмяОбъекта) Тогда
ПолноеИмяОбъекта = ПолноеИмяОбъекта();
КонецЕсли;
Группы = Новый Соответствие;
КолонкаСуществует = ТаблицаПредопределенных.Колонки.Найти("ЭтоГруппа") <> Неопределено;

Comment on lines 107 to 144
// Получает все предопределенные элементы объекта, помечает на удаление те, которые удалены из кода.
// При установке пометки удаления для групп, также устанавливается для всех подчиенных элементов.
//
// Параметры:
// ТаблицаПредопределенных - ТаблицаЗначений - см. пбп_ПредопределенныеЗначенияПереопределяемыйТаблицаПредопределенных,
// пбп_ТипСоответствияОбъектовИБПереопределяемый.ТаблицаПредопределенных.
// ПолноеИмяОбъекта - Строка - Полное имя объекта метаданных.
//
Процедура ОбработатьНеиспользуемыеЭлементы(ТаблицаПредопределенных, ПолноеИмяОбъекта = "") Экспорт

Если ПустаяСтрока(ПолноеИмяОбъекта) Тогда
ПолноеИмяОбъекта = ПолноеИмяОбъекта();
КонецЕсли;

ТаблицаПредопределенных.Индексы.Добавить("ИдентификаторНастройки");

Запрос = Новый Запрос;
ТекстЗапроса =
"ВЫБРАТЬ
| пбп_ПредопределенныеЗначения.Ссылка КАК Ссылка,
| пбп_ПредопределенныеЗначения.ИдентификаторНастройки КАК ИдентификаторНастройки
|ИЗ
| %1 КАК пбп_ПредопределенныеЗначения
|ГДЕ
| НЕ пбп_ПредопределенныеЗначения.ПометкаУдаления
|
|УПОРЯДОЧИТЬ ПО
| Ссылка
|ИТОГИ ПО
| Ссылка ИЕРАРХИЯ";

Запрос.Текст = СтрШаблон(ТекстЗапроса, ПолноеИмяОбъекта);

Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);

ПометитьНаУдалениеВсеВложения(Выборка, ТаблицаПредопределенных);

КонецПроцедуры
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ensure proper implementation and documentation for the procedure ОбработатьНеиспользуемыеЭлементы.

This procedure processes all predefined elements of an object, marking those that are deleted from the code for deletion. Ensure that the implementation is correct and consider adding a detailed description for better maintainability.

+// Processes all predefined elements of an object, marking those that are deleted from the code for deletion.
+//
+// Parameters:
+//   ТаблицаПредопределенных - The table of predefined values.
+//   ПолноеИмяОбъекта - The full name of the metadata object.
Процедура ОбработатьНеиспользуемыеЭлементы(ТаблицаПредопределенных, ПолноеИмяОбъекта = "") Экспорт
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.

Suggested change
// Получает все предопределенные элементы объекта, помечает на удаление те, которые удалены из кода.
// При установке пометки удаления для групп, также устанавливается для всех подчиенных элементов.
//
// Параметры:
// ТаблицаПредопределенных - ТаблицаЗначений - см. пбп_ПредопределенныеЗначенияПереопределяемыйТаблицаПредопределенных,
// пбп_ТипСоответствияОбъектовИБПереопределяемый.ТаблицаПредопределенных.
// ПолноеИмяОбъекта - Строка - Полное имя объекта метаданных.
//
Процедура ОбработатьНеиспользуемыеЭлементы(ТаблицаПредопределенных, ПолноеИмяОбъекта = "") Экспорт
Если ПустаяСтрока(ПолноеИмяОбъекта) Тогда
ПолноеИмяОбъекта = ПолноеИмяОбъекта();
КонецЕсли;
ТаблицаПредопределенных.Индексы.Добавить("ИдентификаторНастройки");
Запрос = Новый Запрос;
ТекстЗапроса =
"ВЫБРАТЬ
| пбп_ПредопределенныеЗначения.Ссылка КАК Ссылка,
| пбп_ПредопределенныеЗначения.ИдентификаторНастройки КАК ИдентификаторНастройки
|ИЗ
| %1 КАК пбп_ПредопределенныеЗначения
|ГДЕ
| НЕ пбп_ПредопределенныеЗначения.ПометкаУдаления
|
|УПОРЯДОЧИТЬ ПО
| Ссылка
|ИТОГИ ПО
| Ссылка ИЕРАРХИЯ";
Запрос.Текст = СтрШаблон(ТекстЗапроса, ПолноеИмяОбъекта);
Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
ПометитьНаУдалениеВсеВложения(Выборка, ТаблицаПредопределенных);
КонецПроцедуры
// Processes all predefined elements of an object, marking those that are deleted from the code for deletion.
//
// Parameters:
// ТаблицаПредопределенных - The table of predefined values.
// ПолноеИмяОбъекта - The full name of the metadata object.
Процедура ОбработатьНеиспользуемыеЭлементы(ТаблицаПредопределенных, ПолноеИмяОбъекта = "") Экспорт
Если ПустаяСтрока(ПолноеИмяОбъекта) Тогда
ПолноеИмяОбъекта = ПолноеИмяОбъекта();
КонецЕсли;
ТаблицаПредопределенных.Индексы.Добавить("ИдентификаторНастройки");
Запрос = Новый Запрос;
ТекстЗапроса =
"ВЫБРАТЬ
| пбп_ПредопределенныеЗначения.Ссылка КАК Ссылка,
| пбп_ПредопределенныеЗначения.ИдентификаторНастройки КАК ИдентификаторНастройки
|ИЗ
| %1 КАК пбп_ПредопределенныеЗначения
|ГДЕ
| НЕ пбп_ПредопределенныеЗначения.ПометкаУдаления
|
|УПОРЯДОЧИТЬ ПО
| Ссылка
|ИТОГИ ПО
| Ссылка ИЕРАРХИЯ";
Запрос.Текст = СтрШаблон(ТекстЗапроса, ПолноеИмяОбъекта);
Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
ПометитьНаУдалениеВсеВложения(Выборка, ТаблицаПредопределенных);
КонецПроцедуры

Comment on lines +1831 to +1934
ЧастиИмени = СтрРазделить(ПолноеИмя, ".");

Если ЧастиИмени.Количество() >= 2 Тогда
КлассОМ = ЧастиИмени[0];
ИмяОМ = ЧастиИмени[1];
Иначе
Менеджер = Неопределено;
КонецЕсли;

Если ВРег(КлассОМ) = "ПЛАНОБМЕНА" Тогда
Менеджер = ПланыОбмена;

ИначеЕсли ВРег(КлассОМ) = "СПРАВОЧНИК" Тогда
Менеджер = Справочники;

ИначеЕсли ВРег(КлассОМ) = "ДОКУМЕНТ" Тогда
Менеджер = Документы;

ИначеЕсли ВРег(КлассОМ) = "ЖУРНАЛДОКУМЕНТОВ" Тогда
Менеджер = ЖурналыДокументов;

ИначеЕсли ВРег(КлассОМ) = "ПЕРЕЧИСЛЕНИЕ" Тогда
Менеджер = Перечисления;

ИначеЕсли ВРег(КлассОМ) = "ОТЧЕТ" Тогда
Менеджер = Отчеты;

ИначеЕсли ВРег(КлассОМ) = "ОБРАБОТКА" Тогда
Менеджер = Обработки;

ИначеЕсли ВРег(КлассОМ) = "ПЛАНВИДОВХАРАКТЕРИСТИК" Тогда
Менеджер = ПланыВидовХарактеристик;

ИначеЕсли ВРег(КлассОМ) = "ПЛАНСЧЕТОВ" Тогда
Менеджер = ПланыСчетов;

ИначеЕсли ВРег(КлассОМ) = "ПЛАНВИДОВРАСЧЕТА" Тогда
Менеджер = ПланыВидовРасчета;

ИначеЕсли ВРег(КлассОМ) = "РЕГИСТРСВЕДЕНИЙ" Тогда
Менеджер = РегистрыСведений;

ИначеЕсли ВРег(КлассОМ) = "РЕГИСТРНАКОПЛЕНИЯ" Тогда
Менеджер = РегистрыНакопления;

ИначеЕсли ВРег(КлассОМ) = "РЕГИСТРБУХГАЛТЕРИИ" Тогда
Менеджер = РегистрыБухгалтерии;

ИначеЕсли ВРег(КлассОМ) = "РЕГИСТРРАСЧЕТА" Тогда

Если ЧастиИмени.Количество() = 2 Тогда
Менеджер = РегистрыРасчета;

ИначеЕсли ЧастиИмени.Количество() = 4 Тогда
КлассПодчиненногоОМ = ЧастиИмени[2];
ИмяПодчиненногоОМ = ЧастиИмени[3];

Если ВРег(КлассПодчиненногоОМ) = "ПЕРЕРАСЧЕТ" Тогда
Менеджер = РегистрыРасчета[ИмяОМ].Перерасчеты;
ИмяОм = ИмяПодчиненногоОМ;

Иначе
Менеджер = Неопределено;
КонецЕсли;

Иначе
Менеджер = Неопределено;
КонецЕсли;

ИначеЕсли ВРег(КлассОМ) = "БИЗНЕСПРОЦЕСС" Тогда
Менеджер = БизнесПроцессы;

ИначеЕсли ВРег(КлассОМ) = "ЗАДАЧА" Тогда
Менеджер = Задачи;

ИначеЕсли ВРег(КлассОМ) = "КОНСТАНТА" Тогда
Менеджер = Константы;

ИначеЕсли ВРег(КлассОМ) = "ПОСЛЕДОВАТЕЛЬНОСТЬ" Тогда
Менеджер = Последовательности;

Иначе
Менеджер = Неопределено;
КонецЕсли;

Если Менеджер = Неопределено Тогда
ПроверитьОбъектМетаданныхСуществует(ПолноеИмя);
ВызватьИсключение пбп_СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Объект метаданных ""%1"" не имеет менеджера объекта.';
|en = 'Metadata object %1 has no object manager.'"), ПолноеИмя);
КонецЕсли;

Попытка
Возврат Менеджер[ИмяОМ];
Исключение
ПроверитьОбъектМетаданныхСуществует(ПолноеИмя);
ВызватьИсключение;
КонецПопытки;

КонецФункции
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Refactor to reduce complexity and use constants for magic numbers.

The function МенеджерОбъектаПоПолномуИмени has high cognitive and cyclomatic complexity. Additionally, magic numbers are used in the code.

Apply this diff to refactor the function:

+КОНСТ_КОЛИЧЕСТВО_ЧАСТЕЙ_ИМЕНИ = 2;
+КОНСТ_КОЛИЧЕСТВО_ЧАСТЕЙ_ИМЕНИ_ПОДЧИНЕННОГО = 4;

Функция МенеджерОбъектаПоПолномуИмени(ПолноеИмя) Экспорт
    Перем КлассОМ, ИмяОМ, Менеджер;

    ЧастиИмени = СтрРазделить(ПолноеИмя, ".");

    Если ЧастиИмени.Количество() >= КОНСТ_КОЛИЧЕСТВО_ЧАСТЕЙ_ИМЕНИ Тогда
        КлассОМ = ЧастиИмени[0];
        ИмяОМ   = ЧастиИмени[1];
    Иначе 
        Менеджер = Неопределено;
    КонецЕсли;

    Если      ВРег(КлассОМ) = "ПЛАНОБМЕНА" Тогда
        Менеджер = ПланыОбмена;
    ИначеЕсли ВРег(КлассОМ) = "СПРАВОЧНИК" Тогда
        Менеджер = Справочники;
    ИначеЕсли ВРег(КлассОМ) = "ДОКУМЕНТ" Тогда
        Менеджер = Документы;
    ИначеЕсли ВРег(КлассОМ) = "ЖУРНАЛДОКУМЕНТОВ" Тогда
        Менеджер = ЖурналыДокументов;
    ИначеЕсли ВРег(КлассОМ) = "ПЕРЕЧИСЛЕНИЕ" Тогда
        Менеджер = Перечисления;
    ИначеЕсли ВРег(КлассОМ) = "ОТЧЕТ" Тогда
        Менеджер = Отчеты;
    ИначеЕсли ВРег(КлассОМ) = "ОБРАБОТКА" Тогда
        Менеджер = Обработки;
    ИначеЕсли ВРег(КлассОМ) = "ПЛАНВИДОВХАРАКТЕРИСТИК" Тогда
        Менеджер = ПланыВидовХарактеристик;
    ИначеЕсли ВРег(КлассОМ) = "ПЛАНСЧЕТОВ" Тогда
        Менеджер = ПланыСчетов;
    ИначеЕсли ВРег(КлассОМ) = "ПЛАНВИДОВРАСЧЕТА" Тогда
        Если ЧастиИмени.Количество() = КОНСТ_КОЛИЧЕСТВО_ЧАСТЕЙ_ИМЕНИ Тогда
            Менеджер = РегистрыРасчета;
        ИначеЕсли ЧастиИмени.Количество() = КОНСТ_КОЛИЧЕСТВО_ЧАСТЕЙ_ИМЕНИ_ПОДЧИНЕННОГО Тогда
            КлассПодчиненногоОМ = ЧастиИмени[2];
            ИмяПодчиненногоОМ = ЧастиИмени[3];
            Если ВРег(КлассПодчиненногоОМ) = "ПЕРЕРАСЧЕТ" Тогда 
                Менеджер = РегистрыРасчета[ИмяОМ].Перерасчеты;
                ИмяОм = ИмяПодчиненногоОМ;
            Иначе 
                Менеджер = Неопределено;
            КонецЕсли;
        Иначе
            Менеджер = Неопределено;
        КонецЕсли;
    ИначеЕсли ВРег(КлассОМ) = "БИЗНЕСПРОЦЕСС" Тогда
        Менеджер = БизнесПроцессы;
    ИначеЕсли ВРег(КлассОМ) = "ЗАДАЧА" Тогда
        Менеджер = Задачи;
    ИначеЕсли ВРег(КлассОМ) = "КОНСТАНТА" Тогда
        Менеджер = Константы;
    ИначеЕсли ВРег(КлассОМ) = "ПОСЛЕДОВАТЕЛЬНОСТЬ" Тогда
        Менеджер = Последовательности;
    Иначе
        Менеджер = Неопределено;
    КонецЕсли;

    Если Менеджер = Неопределено Тогда
        ПроверитьОбъектМетаданныхСуществует(ПолноеИмя);
        ВызватьИсключение пбп_СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
            НСтр("ru = 'Объект метаданных ""%1"" не имеет менеджера объекта.';
                |en = 'Metadata object %1 has no object manager.'"), ПолноеИмя);
    КонецЕсли;

    Попытка
        Возврат Менеджер[ИмяОМ];
    Исключение
        ПроверитьОбъектМетаданныхСуществует(ПолноеИмя);
        ВызватьИсключение;
    КонецПопытки;

КонецФункции
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.

Suggested change
Функция МенеджерОбъектаПоПолномуИмени(ПолноеИмя) Экспорт
Перем КлассОМ, ИмяОМ, Менеджер;
ЧастиИмени = СтрРазделить(ПолноеИмя, ".");
Если ЧастиИмени.Количество() >= 2 Тогда
КлассОМ = ЧастиИмени[0];
ИмяОМ = ЧастиИмени[1];
Иначе
Менеджер = Неопределено;
КонецЕсли;
Если ВРег(КлассОМ) = "ПЛАНОБМЕНА" Тогда
Менеджер = ПланыОбмена;
ИначеЕсли ВРег(КлассОМ) = "СПРАВОЧНИК" Тогда
Менеджер = Справочники;
ИначеЕсли ВРег(КлассОМ) = "ДОКУМЕНТ" Тогда
Менеджер = Документы;
ИначеЕсли ВРег(КлассОМ) = "ЖУРНАЛДОКУМЕНТОВ" Тогда
Менеджер = ЖурналыДокументов;
ИначеЕсли ВРег(КлассОМ) = "ПЕРЕЧИСЛЕНИЕ" Тогда
Менеджер = Перечисления;
ИначеЕсли ВРег(КлассОМ) = "ОТЧЕТ" Тогда
Менеджер = Отчеты;
ИначеЕсли ВРег(КлассОМ) = "ОБРАБОТКА" Тогда
Менеджер = Обработки;
ИначеЕсли ВРег(КлассОМ) = "ПЛАНВИДОВХАРАКТЕРИСТИК" Тогда
Менеджер = ПланыВидовХарактеристик;
ИначеЕсли ВРег(КлассОМ) = "ПЛАНСЧЕТОВ" Тогда
Менеджер = ПланыСчетов;
ИначеЕсли ВРег(КлассОМ) = "ПЛАНВИДОВРАСЧЕТА" Тогда
Менеджер = ПланыВидовРасчета;
ИначеЕсли ВРег(КлассОМ) = "РЕГИСТРСВЕДЕНИЙ" Тогда
Менеджер = РегистрыСведений;
ИначеЕсли ВРег(КлассОМ) = "РЕГИСТРНАКОПЛЕНИЯ" Тогда
Менеджер = РегистрыНакопления;
ИначеЕсли ВРег(КлассОМ) = "РЕГИСТРБУХГАЛТЕРИИ" Тогда
Менеджер = РегистрыБухгалтерии;
ИначеЕсли ВРег(КлассОМ) = "РЕГИСТРРАСЧЕТА" Тогда
Если ЧастиИмени.Количество() = 2 Тогда
Менеджер = РегистрыРасчета;
ИначеЕсли ЧастиИмени.Количество() = 4 Тогда
КлассПодчиненногоОМ = ЧастиИмени[2];
ИмяПодчиненногоОМ = ЧастиИмени[3];
Если ВРег(КлассПодчиненногоОМ) = "ПЕРЕРАСЧЕТ" Тогда
Менеджер = РегистрыРасчета[ИмяОМ].Перерасчеты;
ИмяОм = ИмяПодчиненногоОМ;
Иначе
Менеджер = Неопределено;
КонецЕсли;
Иначе
Менеджер = Неопределено;
КонецЕсли;
ИначеЕсли ВРег(КлассОМ) = "БИЗНЕСПРОЦЕСС" Тогда
Менеджер = БизнесПроцессы;
ИначеЕсли ВРег(КлассОМ) = "ЗАДАЧА" Тогда
Менеджер = Задачи;
ИначеЕсли ВРег(КлассОМ) = "КОНСТАНТА" Тогда
Менеджер = Константы;
ИначеЕсли ВРег(КлассОМ) = "ПОСЛЕДОВАТЕЛЬНОСТЬ" Тогда
Менеджер = Последовательности;
Иначе
Менеджер = Неопределено;
КонецЕсли;
Если Менеджер = Неопределено Тогда
ПроверитьОбъектМетаданныхСуществует(ПолноеИмя);
ВызватьИсключение пбп_СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Объект метаданных ""%1"" не имеет менеджера объекта.';
|en = 'Metadata object %1 has no object manager.'"), ПолноеИмя);
КонецЕсли;
Попытка
Возврат Менеджер[ИмяОМ];
Исключение
ПроверитьОбъектМетаданныхСуществует(ПолноеИмя);
ВызватьИсключение;
КонецПопытки;
КонецФункции
КОНСТ_КОЛИЧЕСТВО_ЧАСТЕЙ_ИМЕНИ = 2;
КОНСТ_КОЛИЧЕСТВО_ЧАСТЕЙ_ИМЕНИ_ПОДЧИНЕННОГО = 4;
Функция МенеджерОбъектаПоПолномуИмени(ПолноеИмя) Экспорт
Перем КлассОМ, ИмяОМ, Менеджер;
ЧастиИмени = СтрРазделить(ПолноеИмя, ".");
Если ЧастиИмени.Количество() >= КОНСТ_КОЛИЧЕСТВО_ЧАСТЕЙ_ИМЕНИ Тогда
КлассОМ = ЧастиИмени[0];
ИмяОМ = ЧастиИмени[1];
Иначе
Менеджер = Неопределено;
КонецЕсли;
Если ВРег(КлассОМ) = "ПЛАНОБМЕНА" Тогда
Менеджер = ПланыОбмена;
ИначеЕсли ВРег(КлассОМ) = "СПРАВОЧНИК" Тогда
Менеджер = Справочники;
ИначеЕсли ВРег(КлассОМ) = "ДОКУМЕНТ" Тогда
Менеджер = Документы;
ИначеЕсли ВРег(КлассОМ) = "ЖУРНАЛДОКУМЕНТОВ" Тогда
Менеджер = ЖурналыДокументов;
ИначеЕсли ВРег(КлассОМ) = "ПЕРЕЧИСЛЕНИЕ" Тогда
Менеджер = Перечисления;
ИначеЕсли ВРег(КлассОМ) = "ОТЧЕТ" Тогда
Менеджер = Отчеты;
ИначеЕсли ВРег(КлассОМ) = "ОБРАБОТКА" Тогда
Менеджер = Обработки;
ИначеЕсли ВРег(КлассОМ) = "ПЛАНВИДОВХАРАКТЕРИСТИК" Тогда
Менеджер = ПланыВидовХарактеристик;
ИначеЕсли ВРег(КлассОМ) = "ПЛАНСЧЕТОВ" Тогда
Менеджер = ПланыСчетов;
ИначеЕсли ВРег(КлассОМ) = "ПЛАНВИДОВРАСЧЕТА" Тогда
Если ЧастиИмени.Количество() = КОНСТ_КОЛИЧЕСТВО_ЧАСТЕЙ_ИМЕНИ Тогда
Менеджер = РегистрыРасчета;
ИначеЕсли ЧастиИмени.Количество() = КОНСТ_КОЛИЧЕСТВО_ЧАСТЕЙ_ИМЕНИ_ПОДЧИНЕННОГО Тогда
КлассПодчиненногоОМ = ЧастиИмени[2];
ИмяПодчиненногоОМ = ЧастиИмени[3];
Если ВРег(КлассПодчиненногоОМ) = "ПЕРЕРАСЧЕТ" Тогда
Менеджер = РегистрыРасчета[ИмяОМ].Перерасчеты;
ИмяОм = ИмяПодчиненногоОМ;
Иначе
Менеджер = Неопределено;
КонецЕсли;
Иначе
Менеджер = Неопределено;
КонецЕсли;
ИначеЕсли ВРег(КлассОМ) = "БИЗНЕСПРОЦЕСС" Тогда
Менеджер = БизнесПроцессы;
ИначеЕсли ВРег(КлассОМ) = "ЗАДАЧА" Тогда
Менеджер = Задачи;
ИначеЕсли ВРег(КлассОМ) = "КОНСТАНТА" Тогда
Менеджер = Константы;
ИначеЕсли ВРег(КлассОМ) = "ПОСЛЕДОВАТЕЛЬНОСТЬ" Тогда
Менеджер = Последовательности;
Иначе
Менеджер = Неопределено;
КонецЕсли;
Если Менеджер = Неопределено Тогда
ПроверитьОбъектМетаданныхСуществует(ПолноеИмя);
ВызватьИсключение пбп_СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Объект метаданных ""%1"" не имеет менеджера объекта.';
|en = 'Metadata object %1 has no object manager.'"), ПолноеИмя);
КонецЕсли;
Попытка
Возврат Менеджер[ИмяОМ];
Исключение
ПроверитьОбъектМетаданныхСуществует(ПолноеИмя);
ВызватьИсключение;
КонецПопытки;
КонецФункции
Tools
GitHub Check: 1C: Project SubSystems Library Sonarqube Results

[failure] 1831-1831: src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl#L1831
Уменьшите когнитивную сложность "МенеджерОбъектаПоПолномуИмени" с 31 до 15


[warning] 1885-1885: src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl#L1885
Создайте константу с понятным названием, присвойте ей значение "2" и используйте эту константу вместо магического числа.


[failure] 1831-1831: src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl#L1831
Уменьшите цикломатическую сложность "МенеджерОбъектаПоПолномуИмени" с 29 до 20


[warning] 1837-1837: src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl#L1837
Создайте константу с понятным названием, присвойте ей значение "2" и используйте эту константу вместо магического числа.


[warning] 1888-1888: src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl#L1888
Создайте константу с понятным названием, присвойте ей значение "4" и используйте эту константу вместо магического числа.

@@ -26,7 +26,7 @@
<xr:Item xsi:type="xr:MDObjectRef">Role.пбп_РедактированиеРегистраСведенийСоответствияОбъектовИБ</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">Role.пбп_ЧтениеРегистраСведенийСоответствияОбъектовИБ</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">DefinedType.пбп_ТипыОбъектовСоответствийИБ</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.пбп_ТипСоответствияОбъектовИБПереопределяемый</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">f49cf4ad-0522-4614-b522-500afecfbe5a</xr:Item>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Забыл из подсистем удалить объекты

Copy link

@coderabbitai coderabbitai bot left a 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

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between d6ec387 and 7a8d0e4.

Files selected for processing (4)
  • src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl (6 hunks)
  • src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl (4 hunks)
  • src/cf/Subsystems/пбп_СоответствиеОбъектовИБ.xml (1 hunks)
  • src/cf/Subsystems/пбп_УправлениеИнтеграциями.xml (1 hunks)
Files skipped from review as they are similar to previous changes (3)
  • src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl
  • src/cf/Subsystems/пбп_СоответствиеОбъектовИБ.xml
  • src/cf/Subsystems/пбп_УправлениеИнтеграциями.xml
Additional comments not posted (8)
src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl (8)

160-168: LGTM!

The code changes are approved.


178-186: LGTM!

The code changes are approved.


192-240: LGTM!

The code changes are approved.


284-300: LGTM!

The code changes are approved.


302-326: LGTM!

The code changes are approved.


328-330: LGTM!

The code changes are approved.


332-345: LGTM!

The code changes are approved.


347-358: LGTM!

The code changes are approved.

Copy link

@coderabbitai coderabbitai bot left a 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

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 7a8d0e4 and ab7ce0f.

Files selected for processing (1)
  • src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl (6 hunks)
Additional comments not posted (9)
src/cf/CommonModules/пбп_ПредопределенныеЗначения/Ext/Module.bsl (9)

150-168: LGTM!

The code changes are approved.


170-186: LGTM!

The code changes are approved.


192-240: LGTM!

The code changes are approved.


Line range hint 242-259: LGTM!

The code changes are approved.


Line range hint 261-282: LGTM!

The code changes are approved.


284-300: LGTM!

The code changes are approved.


302-326: LGTM!

The code changes are approved.


328-330: LGTM!

The code changes are approved.


332-345: LGTM!

The code changes are approved.

@ivanmolodec ivanmolodec merged commit e3ef441 into develop Sep 3, 2024
3 checks passed
@ivanmolodec ivanmolodec deleted the update-subsystem-predefined branch September 3, 2024 08:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Улучшение существующей функциональности
Projects
None yet
2 participants