-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Рефакторинг подсистемы интеграций и доработка истории интеграции #120
Рефакторинг подсистемы интеграций и доработка истории интеграции #120
Conversation
…реквизиты для хранения файла в НЕ текстовом формате в историю интеграции #112. Рефакторинг общего модуля пбп_ИнтеграцииСервер
WalkthroughThe pull request introduces enhancements to the integration management system, including new attributes in XML files, additional functions for handling file messages, and modifications to existing forms and modules. New XML files define metadata for common modules and roles, while existing modules have been updated with new procedures and functions. The changes also include updates to versioning and the addition of rights definitions, reflecting a comprehensive update to the integration framework. Changes
Possibly related PRs
Suggested labels
Suggested reviewers
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 19
🧹 Outside diff range and nitpick comments (24)
src/cf/Roles/пбп_ПросмотрИсторииИнтеграции.xml (2)
3-13
: Role structure is correct, consider adding a comment for clarity.The Role element and its properties are well-structured and follow the expected format. The use of a prefix in the Name and the inclusion of a localized Synonym are good practices.
However, the Comment element is currently empty. Consider adding a brief description of the role's purpose or any specific permissions it grants. This can help with future maintenance and understanding of the role's function within the system.
1-15
: Summary: New role addition aligns with PR objectives.This new XML file successfully introduces a role for viewing integration history, which aligns with the PR's objective of enhancing the integration subsystem. The file is well-structured, follows 1C:Enterprise standards, and provides necessary metadata including a localized name.
To further improve documentation:
- Consider adding a brief description in the Comment element to clarify the role's specific permissions or purpose.
- If this role is part of a larger set of changes related to integration history, ensure that it's properly referenced in other relevant files or documentation.
Overall, this addition contributes positively to the goal of improving the integration history functionality.
src/cf/Roles/пбп_ПросмотрИсторииИнтеграции/Ext/Rights.xml (1)
3-5
: Global rights settings are appropriate, consider adding documentation.The global settings for rights assignment are well-defined:
- New objects won't automatically inherit rights
- Attributes will have default rights
- Child objects don't have independent rights
This configuration prioritizes explicit rights assignment, which is good for security but may require more manual configuration.
Consider adding inline comments or separate documentation explaining the implications of these settings for future maintenance.
src/cf/Catalogs/пбп_ИсторияИнтеграции/Ext/ObjectModule.bsl (1)
23-27
: New function added: ПолучитьДанныеФайлаСообщенияThe addition of this exported function enhances the module's functionality by providing access to message file data. This is likely beneficial for integration processes.
However, there are a few suggestions for improvement:
- Consider adding error handling to manage cases where
ФайлСообщения
might not be initialized:Функция ПолучитьДанныеФайлаСообщения() Экспорт Если ФайлСообщения = Неопределено Тогда ВызватьИсключение НСтр("ru = 'ФайлСообщения не инициализирован.'; en = 'MessageFile is not initialized.'"); КонецЕсли; Возврат ФайлСообщения.Получить(); КонецФункции
- It's recommended to move this function to a more appropriate section, such as after the event handlers or in a dedicated "Public Methods" section:
#Область ПрограммныйИнтерфейс Функция ПолучитьДанныеФайлаСообщения() Экспорт // Function implementation КонецФункции #КонецОбласти
- Please add a comment describing the purpose and usage of this function:
// Возвращает данные файла сообщения. // // Возвращаемое значение: // - Произвольный - Данные файла сообщения. // Функция ПолучитьДанныеФайлаСообщения() Экспорт // Function implementation КонецФункцииsrc/cf/CommonModules/пбп_ИнтеграцииFTPSFTP.xml (1)
4-21
: Properties are well-defined, but consider adding a comment for documentation.The properties of the CommonModule are correctly set up:
- The module name "пбп_ИнтеграцииFTPSFTP" follows the expected naming convention.
- The Russian synonym accurately describes the module's purpose.
- The boolean flags are appropriately set for a server-side module with external connection support.
Consider adding a brief description in the
<Comment>
element to provide context about the module's purpose and functionality. This can help with future maintenance and understanding of the module's role in the system.Example:
<Comment>Модуль для работы с FTP и SFTP протоколами в рамках интеграций</Comment>src/cf/CommonModules/пбп_ФайловаяСистемаКлиентПереадресация.xml (1)
3-21
: Consider adding a comment for better documentation.The CommonModule element and its properties are well-defined. The module name follows a good naming convention with the "пбп_" prefix. However, the Comment element is empty. Consider adding a brief description of the module's purpose for better documentation and maintainability.
Example:
<Comment>Клиентский модуль для обработки переадресации в файловой системе</Comment>The rest of the properties look good and appropriately define the module's behavior and scope.
src/cf/CommonModules/пбп_ФайловаяСистемаПереадресация/Ext/Module.bsl (1)
32-37
: LGTM! Consider updating the documentation.The conversion of
ПараметрыЗапускаПрограммы()
from a procedure to a function is a logical improvement. It now correctly returns the result of the redirected call, which is consistent with the module's pattern.Consider updating the comment on line 31 to reflect that this is now a function rather than a procedure. For example:
// См. пбп_ФайловаяСистема.ПараметрыЗапускаПрограммы. // // Возвращаемое значение: // - Произвольный - Результат выполнения пбп_ФайловаяСистема.ПараметрыЗапускаПрограммыsrc/cf/CommonModules/пбп_ФайловаяСистемаКлиентПереадресация/Ext/Module.bsl (4)
24-29
: LGTM: Well-structured wrapper procedure.The
СоздатьВременныйКаталог
procedure is well-designed as a wrapper for functionality in another module. The use of a notification parameter suggests proper handling of asynchronous operations.Consider adding a brief comment explaining the purpose of the
Расширение
parameter for better code documentation.
32-41
: LGTM: Well-structured wrapper function with flexible parameters.The
ПодключитьРасширениеДляРаботыСФайлами
function is well-designed as a wrapper for functionality in another module. The use of a notification parameter for closure suggests proper handling of asynchronous operations.Consider adding brief comments explaining the purpose of
ТекстПредложения
andВозможноПродолжениеБезУстановки
parameters for better code documentation.
47-49
: LGTM: Efficient module retrieval function.The
ПолучитьМодуль
function efficiently encapsulates the logic for obtaining the required module, allowing for flexibility in module naming and potential overrides.Consider adding a brief comment explaining the fallback mechanism between "ФайловаяСистемаКлиент" and "пбп_ФайловаяСистемаКлиент" for better code documentation.
1-51
: LGTM: Well-structured and modular code.This file demonstrates good coding practices:
- Clear structure with separate sections for different types of code elements.
- Modular approach, delegating implementations to another module, which promotes code reusability and maintainability.
- Consistent naming conventions and structure.
- Use of wrapper functions allowing for potential customization or interception of functionality.
- Good separation of concerns.
Consider adding more detailed comments for each function, explaining their purpose, parameters, and return values (if any) to improve code documentation and maintainability.
src/cf/CommonModules/пбп_ОбновлениеИнформационнойБазыПБП/Ext/Module.bsl (1)
Line range hint
1-124
: Consider updating related documentation.While the version update is correct, it's important to ensure that this change is reflected in any related documentation or changelog files. Please make sure to update any documents that reference the library version.
src/cf/Catalogs/пбп_ИсторияИнтеграции.xml (1)
1048-1087
: LGTM: New attribute "ФайлСообщения" (Message File) added correctly.The new attribute for storing the message file content is well-defined:
- Appropriate v8:ValueStorage type for storing binary data.
- Necessary properties are set, including indexing and full-text search.
- This attribute complements the "ИмяФайлаСообщения" attribute, allowing for comprehensive file storage within the integration history.
Consider adding a comment to explain the relationship between "ИмяФайлаСообщения" and "ФайлСообщения" attributes for better maintainability. For example:
<Comment/> +<Comment>This attribute stores the content of the file whose name is specified in the ИмяФайлаСообщения attribute.</Comment>
src/cf/CommonModules/пбп_ФайловаяСистемаСлужебныйКлиент/Ext/Module.bsl (1)
83-96
: Enhance Uniqueness of Temporary Directory NamesThe procedure
СоздатьВременныйКаталогПослеПолученияВременногоКаталога
generates a temporary directory name using a unique identifier. To further enhance the uniqueness and aid in debugging, consider incorporating a timestamp into the directory name.You might adjust the directory name generation as follows:
- ИмяКаталога = "v8_" + Строка(Новый УникальныйИдентификатор); + ИмяКаталога = "v8_" + Формат(ТекущаяДата(), "ДФ=yyyyMMddHHmmss") + "_" + Строка(Новый УникальныйИдентификатор);This change adds a timestamp, making it easier to track and manage temporary directories.
src/cf/CommonModules/пбп_ФайловаяСистемаКлиент/Ext/Module.bsl (2)
34-45
: Consider adding unit tests forСоздатьВременныйКаталог
To ensure the reliability and correctness of this new exported procedure, please consider adding unit tests that cover various scenarios, including edge cases.
40-41
: Avoid reassigning the parameterОповещение
to enhance code clarityReassigning the parameter
Оповещение
within the procedure can lead to confusion and reduce code readability. Consider using a different variable name for the newОписаниеОповещения
instance to make the code clearer.src/cf/CommonModules/пбп_ИнтеграцииСлужебный/Ext/Module.bsl (1)
217-234
: Use case-insensitive search for XML tagsIn the procedure
ДополнительноОбработатьЗапросыИнтеграцииПередЗаписьюВИсторию
, the search for "xml" in messages is case-sensitive. If the message contains "XML" in uppercase, the condition may fail.Modify the search to be case-insensitive to ensure all XML messages are processed:
...Using
СтрРег
converts the string to uppercase, allowing for case-insensitive comparison.src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl (1)
Line range hint
182-200
: Optimize the Construction of HTTP Status Codes TableThe function
ПодготовитьТаблицуКодовОтветаHTTP
manually adds each HTTP status code, which is repetitive and prone to errors.Consider initializing the table using a predefined array or data structure:
Функция ПодготовитьТаблицуКодовОтветаHTTP() Экспорт ТаблицаКодовОтвета = Новый ТаблицаЗначений; ТаблицаКодовОтвета.Колонки.Добавить("КодОтвета" , пбп_ОбщегоНазначенияСлужебный.ОписаниеТипаЧисло(3)); ТаблицаКодовОтвета.Колонки.Добавить("КраткоеОписание" , пбп_ОбщегоНазначенияСлужебный.ОписаниеТипаСтрока(150)); + МассивКодов = [100, 200, 300, 301, 302, 303, 304, 305, 306, 307, 308, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 429, + 500, 501, 502, 503, 504, 505, 506, 507, 509, 510, 511]; + Для Каждого Код Из МассивКодов Цикл + НоваяСтрока = ТаблицаКодовОтвета.Добавить(); + НоваяСтрока.КодОтвета = Код; + НоваяСтрока.КраткоеОписание = РасшифровкаКодаСостоянияHTTP(Код); + КонецЦикла; Возврат ТаблицаКодовОтвета; КонецФункцииThis simplifies the code and makes it easier to maintain.
src/cf/Catalogs/пбп_ИсторияИнтеграции/Forms/ФормаЭлемента/Ext/Form/Module.bsl (3)
183-183
: Revise dialog title for clarity in 'СохранитьФайлСообщенияОбмена'The dialog title
'Укажите файл внешней компоненты'
may not accurately represent the action of saving an exchange message file. Consider updating the title to'Укажите имя файла для сохранения сообщения'
for improved user understanding.Suggested change:
- ЗаголовокДиалога = НСтр("ru = 'Укажите файл внешней компоненты'"); + ЗаголовокДиалога = НСтр("ru = 'Укажите имя файла для сохранения сообщения'");
214-215
: Distinguish labels for saving incoming and outgoing messagesCurrently, both
СохранитьФайлСообщенияОбменаИсх
andСохранитьФайлСообщенияОбменаВх
use the same labelОбъект.ИмяФайлаСообщения
. To avoid confusion, consider using distinct labels that indicate whether the message is incoming or outgoing.Suggested change:
- Элементы.СохранитьФайлСообщенияОбменаИсх.Заголовок = Объект.ИмяФайлаСообщения; + Элементы.СохранитьФайлСообщенияОбменаИсх.Заголовок = Объект.ИмяФайлаСообщения + " (Исходящее)"; - Элементы.СохранитьФайлСообщенияОбменаВх.Заголовок = Объект.ИмяФайлаСообщения; + Элементы.СохранитьФайлСообщенияОбменаВх.Заголовок = Объект.ИмяФайлаСообщения + " (Входящее)";
334-334
: Improve exception message for better user understandingThe exception message
'Редактор ' + ФорматИнтеграцииСтрокой + ' не предназначен для веб-клиента'
could be clearer. Consider rephrasing it to'Редактор ' + ФорматИнтеграцииСтрокой + ' не поддерживается в веб-клиенте'
for better user comprehension.Suggested change:
- ВызватьИсключение НСтр("ru = 'Редактор " + ФорматИнтеграцииСтрокой + " не предназначен для веб-клиента'"); + ВызватьИсключение НСтр("ru = 'Редактор " + ФорматИнтеграцииСтрокой + " не поддерживается в веб-клиенте'");src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl (3)
839-862
: Add missing descriptions for return values and parametersSome functions and methods lack descriptions of their return values and parameters, which can affect code readability and maintainability.
Consider adding comments to describe the purpose of parameters and return values.
Example:
// Инициализирует и возвращает таблицу файлов SFTP. // Возвращаемое значение: // ТаблицаЗначений - таблица с колонками "ИмяФайла" и "ДатаИзменения" Функция ИнициализироватьТаблицуФайловSFTP()🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[notice] 851-851: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L851
Возможная опечатка в "Количествово"
[warning] 839-839: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L839
Создайте константу с понятным названием, присвойте ей значение "150" и используйте эту константу вместо магического числа.
[warning] 850-850: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L850
Создайте константу с понятным названием, присвойте ей значение "30" и используйте эту константу вместо магического числа.
[warning] 852-852: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L852
Создайте константу с понятным названием, присвойте ей значение "3" и используйте эту константу вместо магического числа.
[warning] 853-853: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L853
Создайте константу с понятным названием, присвойте ей значение "50" и используйте эту константу вместо магического числа.
[warning] 854-854: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L854
Создайте константу с понятным названием, присвойте ей значение "50" и используйте эту константу вместо магического числа.
[warning] 856-856: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L856
Создайте константу с понятным названием, присвойте ей значение "15" и используйте эту константу вместо магического числа.
[warning] 857-857: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L857
Создайте константу с понятным названием, присвойте ей значение "10" и используйте эту константу вместо магического числа.
[warning] 859-859: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L859
Создайте константу с понятным названием, присвойте ей значение "2" и используйте эту константу вместо магического числа.
[warning] 860-860: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L860
Создайте константу с понятным названием, присвойте ей значение "5" и используйте эту константу вместо магического числа.
[warning] 862-862: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L862
Создайте константу с понятным названием, присвойте ей значение "150" и используйте эту константу вместо магического числа.
33-33
: Add description for the return value of "ПараметрыСообщенияFTPSFTP" functionThe function lacks a description of its return value in the comments.
Consider adding a description to improve code documentation.
Example:
// Возвращаемое значение: // Структура - структура с параметрами сообщения для FTP/SFTP обмена🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[warning] 33-33: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L33
Добавьте описание возвращаемого значения функции
839-839
: Use constants instead of magic numbersA magic number "150" is used when defining the column "ИмяФайла". Using constants improves readability.
Define a constant for the length.
Константа ДлинаИмениФайла = 150; ... ТаблицаФайлов.Колонки.Добавить("ИмяФайла", пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(ДлинаИмениФайла));🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[warning] 839-839: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L839
Создайте константу с понятным названием, присвойте ей значение "150" и используйте эту константу вместо магического числа.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (22)
- src/cf/Catalogs/пбп_ИсторияИнтеграции.xml (1 hunks)
- src/cf/Catalogs/пбп_ИсторияИнтеграции/Ext/ObjectModule.bsl (1 hunks)
- src/cf/Catalogs/пбп_ИсторияИнтеграции/Forms/ФормаЭлемента/Ext/Form.xml (3 hunks)
- src/cf/Catalogs/пбп_ИсторияИнтеграции/Forms/ФормаЭлемента/Ext/Form/Module.bsl (9 hunks)
- src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP.xml (1 hunks)
- src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl (1 hunks)
- src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl (8 hunks)
- src/cf/CommonModules/пбп_ИнтеграцииСлужебный.xml (1 hunks)
- src/cf/CommonModules/пбп_ИнтеграцииСлужебный/Ext/Module.bsl (1 hunks)
- src/cf/CommonModules/пбп_ОбновлениеИнформационнойБазыПБП/Ext/Module.bsl (1 hunks)
- src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl (2 hunks)
- src/cf/CommonModules/пбп_ФайловаяСистемаКлиент.xml (1 hunks)
- src/cf/CommonModules/пбп_ФайловаяСистемаКлиент/Ext/Module.bsl (1 hunks)
- src/cf/CommonModules/пбп_ФайловаяСистемаКлиентПереадресация.xml (1 hunks)
- src/cf/CommonModules/пбп_ФайловаяСистемаКлиентПереадресация/Ext/Module.bsl (1 hunks)
- src/cf/CommonModules/пбп_ФайловаяСистемаПереадресация/Ext/Module.bsl (1 hunks)
- src/cf/CommonModules/пбп_ФайловаяСистемаСлужебныйКлиент.xml (1 hunks)
- src/cf/CommonModules/пбп_ФайловаяСистемаСлужебныйКлиент/Ext/Module.bsl (1 hunks)
- src/cf/Configuration.xml (4 hunks)
- src/cf/Roles/пбп_ПросмотрИсторииИнтеграции.xml (1 hunks)
- src/cf/Roles/пбп_ПросмотрИсторииИнтеграции/Ext/Rights.xml (1 hunks)
- src/cf/Subsystems/пбп_УправлениеИнтеграциями.xml (1 hunks)
✅ Files skipped from review due to trivial changes (3)
- src/cf/CommonModules/пбп_ИнтеграцииСлужебный.xml
- src/cf/CommonModules/пбп_ФайловаяСистемаКлиент.xml
- src/cf/CommonModules/пбп_ФайловаяСистемаСлужебныйКлиент.xml
🧰 Additional context used
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl
[failure] 868-868: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L868
Уменьшите когнитивную сложность "ЗаполнитьСвойстваФайловИзСтрокиСпискаФайлов" с 16 до 15
[failure] 928-928: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L928
Уменьшите когнитивную сложность "ПолучитьНомерМесяцаПоСтроковомуПредставлению" с 23 до 15
[notice] 930-930: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L930
Возможная опечатка в "Янв"
[notice] 944-944: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L944
Возможная опечатка в "Авг"
[notice] 851-851: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L851
Возможная опечатка в "Количествово"
[notice] 879-879: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L879
Возможная опечатка в "Количествово"
[notice] 940-940: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L940
Возможная опечатка в "Июн"
[notice] 942-942: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L942
Возможная опечатка в "Июл"
[notice] 932-932: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L932
Возможная опечатка в "Фев"
[notice] 948-948: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L948
Возможная опечатка в "Окт"
[warning] 839-839: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L839
Создайте константу с понятным названием, присвойте ей значение "150" и используйте эту константу вместо магического числа.
[warning] 850-850: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L850
Создайте константу с понятным названием, присвойте ей значение "30" и используйте эту константу вместо магического числа.
[warning] 852-852: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L852
Создайте константу с понятным названием, присвойте ей значение "3" и используйте эту константу вместо магического числа.
[warning] 853-853: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L853
Создайте константу с понятным названием, присвойте ей значение "50" и используйте эту константу вместо магического числа.
[warning] 854-854: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L854
Создайте константу с понятным названием, присвойте ей значение "50" и используйте эту константу вместо магического числа.
[warning] 856-856: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L856
Создайте константу с понятным названием, присвойте ей значение "15" и используйте эту константу вместо магического числа.
[warning] 857-857: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L857
Создайте константу с понятным названием, присвойте ей значение "10" и используйте эту константу вместо магического числа.
[warning] 859-859: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L859
Создайте константу с понятным названием, присвойте ей значение "2" и используйте эту константу вместо магического числа.
[warning] 860-860: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L860
Создайте константу с понятным названием, присвойте ей значение "5" и используйте эту константу вместо магического числа.
[warning] 862-862: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L862
Создайте константу с понятным названием, присвойте ей значение "150" и используйте эту константу вместо магического числа.
[warning] 881-881: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L881
Создайте константу с понятным названием, присвойте ей значение "2" и используйте эту константу вместо магического числа.
[warning] 883-883: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L883
Создайте константу с понятным названием, присвойте ей значение "3" и используйте эту константу вместо магического числа.
[warning] 885-885: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L885
Создайте константу с понятным названием, присвойте ей значение "4" и используйте эту константу вместо магического числа.
[warning] 888-888: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L888
Создайте константу с понятным названием, присвойте ей значение "5" и используйте эту константу вместо магического числа.
[warning] 890-890: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L890
Создайте константу с понятным названием, присвойте ей значение "6" и используйте эту константу вместо магического числа.
[warning] 893-893: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L893
Создайте константу с понятным названием, присвойте ей значение "7" и используйте эту константу вместо магического числа.
[warning] 901-901: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L901
Создайте константу с понятным названием, присвойте ей значение "7" и используйте эту константу вместо магического числа.
[warning] 33-33: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L33
Добавьте описание возвращаемого значения функции
[failure] 928-928: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L928
Уменьшите цикломатическую сложность "ПолучитьНомерМесяцаПоСтроковомуПредставлению" с 24 до 20src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl
[warning] 191-191: src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl#L191
Необходимо избавиться от многократного использования строкового литерала "СистемаN"
🔇 Additional comments (41)
src/cf/Roles/пбп_ПросмотрИсторииИнтеграции.xml (2)
1-2
: LGTM: XML declaration and root element are correctly structured.The XML declaration and root
MetaDataObject
element are properly formatted with the correct encoding and necessary namespace declarations. This ensures compatibility and extensibility within the 1C:Enterprise ecosystem.
14-15
: LGTM: File structure is well-formed and consistent.The XML file is properly structured with correct closing tags for both the Role and MetaDataObject elements. The overall layout is clean and follows the expected format for 1C:Enterprise configuration files.
src/cf/Roles/пбп_ПросмотрИсторииИнтеграции/Ext/Rights.xml (4)
1-2
: XML structure and namespace declarations look good.The XML declaration and namespace definitions are correctly specified. The use of a versioned schema (2.16) is a good practice for maintaining backwards compatibility.
6-32
: Rights for Configuration.ПроектнаяБиблиотекаПодсистем are comprehensive, verify if all are necessary.The rights granted for Configuration.ПроектнаяБиблиотекаПодсистем cover various main window modes and analytics access:
- MainWindowModeNormal
- MainWindowModeWorkplace
- MainWindowModeEmbeddedWorkplace
- MainWindowModeFullscreenWorkplace
- MainWindowModeKiosk
- AnalyticsSystemClient
All these rights are set to true, providing full access.
Please review if all these rights are necessary for the "View Integration History" role. It's important to adhere to the principle of least privilege. Consider running a security review to ensure that only the minimum required rights are granted.
33-43
: Rights for Catalog.пбп_ИсторияИнтеграции are appropriate for a view-only role.The rights granted for Catalog.пбп_ИсторияИнтеграции (Integration History) are:
- Read: true
- View: true
These permissions are appropriate for a "View Integration History" role, allowing users to retrieve and view data without the ability to modify it. This adheres to the principle of least privilege.
1-44
: Overall, the Rights.xml file is well-structured and appropriate for its purpose.This new file successfully defines the "View Integration History" role with appropriate permissions. Key points:
- The XML structure and namespace declarations are correct.
- Global settings prioritize explicit rights assignment, enhancing security.
- Configuration.ПроектнаяБиблиотекаПодсистем rights provide comprehensive UI access, though a security review is recommended to ensure adherence to the principle of least privilege.
- Catalog.пбп_ИсторияИнтеграции rights are correctly limited to read and view operations, aligning with the role's purpose.
The file achieves its goal of defining a view-only role for integration history while granting necessary UI access rights. Consider adding documentation for maintainability and conducting a security review to validate the extensive UI access rights.
src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP.xml (2)
1-2
: LGTM: XML declaration and namespace definitions are correct.The XML declaration and namespace definitions are properly set up for a 1C:Enterprise configuration file. The UTF-8 encoding and the comprehensive list of namespaces provide a solid foundation for the module definition.
2-3
: LGTM: MetaDataObject and CommonModule elements are correctly structured.The MetaDataObject and CommonModule elements are properly defined. The UUID for the CommonModule is present, which is essential for object identification in the 1C:Enterprise system.
To ensure the UUID's uniqueness, please run the following command:
✅ Verification successful
UUID Uniqueness Verified
The UUID for the CommonModule is unique across all XML files. No duplicate UUIDs were found.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Check for duplicate UUIDs across all XML files # Test: Search for duplicate UUIDs duplicate_uuids=$(grep -r -h -o 'uuid="[^"]*"' | sort | uniq -d) if [ -n "$duplicate_uuids" ]; then echo "Warning: Duplicate UUIDs found:" echo "$duplicate_uuids" else echo "No duplicate UUIDs found." fiLength of output: 146
src/cf/CommonModules/пбп_ФайловаяСистемаКлиентПереадресация.xml (2)
1-2
: LGTM: XML declaration and namespace definitions are correct.The XML declaration, encoding, and namespace definitions are properly set up and follow 1C:Enterprise standards. The version number (2.16) appears to be up-to-date.
13-23
: Module settings are appropriate for a client-side module.The module settings correctly define this as a client-side module, which aligns with its name and purpose. The security and scope settings are appropriate.
Note on performance:
TheReturnValuesReuse
is set to "DontUse", which ensures data consistency but might have a slight impact on performance. This is generally the safer option, especially for modules dealing with file systems. If performance becomes an issue in the future, you might consider reviewing this setting.The overall structure of the file is correct and follows 1C:Enterprise standards.
src/cf/CommonModules/пбп_ФайловаяСистемаПереадресация/Ext/Module.bsl (2)
Line range hint
1-58
: Overall, the changes improve the module's functionality and consistency.The modifications to convert procedures to functions in this module enhance its capabilities by allowing the return of values from redirected calls. This change is consistent throughout the module and aligns with good programming practices.
Key points:
- The changes are in line with the AI-generated summary.
- The implementation follows a consistent pattern of redirecting calls.
- The modifications improve the overall functionality of the module.
40-47
: LGTM! Consider documentation update and clarify BSLLS comments.The conversion of
ЗапуститьПрограмму()
from a procedure to a function is a logical improvement. It now correctly returns the result of the redirected call, which is consistent with the module's pattern.
- Consider updating the comment on line 39 to reflect that this is now a function rather than a procedure. For example:
// См. пбп_ФайловаяСистема.ЗапуститьПрограмму. // // Возвращаемое значение: // - Произвольный - Результат выполнения пбп_ФайловаяСистема.ЗапуститьПрограмму
- The BSLLS comments suggest that a linter rule is being temporarily disabled. Could you provide more context on why this is necessary? If it's a known issue, consider adding a brief comment explaining the reason for disabling the rule.
✅ Verification successful
Action Required: Update Shell Script to Search
.bsl
Files CorrectlyThe previous
rg
command failed because thebsl
file type is not recognized. Please update the script to search within.bsl
files by specifying the appropriate glob pattern.
LGTM! BSLLS comments are consistently used across the codebase.
The
BSLLS:ExternalAppStarting
comments are part of our standard practice for managing specific linter rules within the project. To enhance clarity, consider documenting the purpose and usage of BSLLS comments in the project documentation.🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Search for other occurrences of BSLLS:ExternalAppStarting rg --type bsl "BSLLS:ExternalAppStarting"Length of output: 69
Script:
#!/bin/bash # Search for other occurrences of BSLLS:ExternalAppStarting in .bsl files rg "BSLLS:ExternalAppStarting" --glob "*.bsl"Length of output: 1167
src/cf/CommonModules/пбп_ФайловаяСистемаКлиентПереадресация/Ext/Module.bsl (1)
1-20
: LGTM: Proper copyright and license information included.The inclusion of copyright notice, license information, and the GitHub URL is commendable. This provides clear attribution and licensing terms for the code.
src/cf/CommonModules/пбп_ОбновлениеИнформационнойБазыПБП/Ext/Module.bsl (1)
77-77
: Version update looks good.The version number has been incremented from "1.0.2.6" to "1.0.2.7", which is consistent with the PR objectives of refactoring and improving the integration subsystem.
Let's verify if this version update is consistent across the project:
This script will help us ensure that the version update has been applied consistently across the project.
✅ Verification successful
Version update verified successfully.
The version number "1.0.2.7" is consistently updated across the project with no remaining references to "1.0.2.6".
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Check for version number occurrences across the project # Search for the old version number echo "Occurrences of the old version number (1.0.2.6):" rg --type-add 'bsl:*.bsl' --type bsl '1\.0\.2\.6' # Search for the new version number echo "Occurrences of the new version number (1.0.2.7):" rg --type-add 'bsl:*.bsl' --type bsl '1\.0\.2\.7'Length of output: 419
src/cf/Configuration.xml (5)
60-60
: Version update approved.The configuration version has been incremented from 1.0.2.6 to 1.0.2.7, which is consistent with semantic versioning for a minor update or bugfix.
269-269
: New role addition approved.The new role "пбп_ПросмотрИсторииИнтеграции" (View Integration History) has been added, which aligns with the PR objective of improving the integration history functionality. This role will likely be used to manage access to the integration history feature.
282-283
: New common modules addition approved.Three new common modules have been added:
- пбп_ИнтеграцииСлужебный (Integration Service)
- пбп_ИнтеграцииFTPSFTP (FTP/SFTP Integrations)
- пбп_ФайловаяСистемаКлиентПереадресация (File System Client Redirection)
These additions align with the PR objective of refactoring the integration subsystem and enhancing file handling capabilities.
Also applies to: 326-326
327-328
: New client modules addition approved.Two new client-side modules have been added:
- пбп_ФайловаяСистемаКлиент (File System Client)
- пбп_ФайловаяСистемаСлужебныйКлиент (File System Service Client)
These additions enhance the file handling capabilities on the client side, which supports the overall objective of improving the integration subsystem.
60-60
: Overall changes are consistent with PR objectives.The modifications to the Configuration.xml file include:
- Version update from 1.0.2.6 to 1.0.2.7
- Addition of a new role for viewing integration history
- Introduction of new common and client modules related to integrations and file system operations
These changes align well with the PR objectives of refactoring the integration subsystem, improving integration history functionality, and enhancing file handling capabilities. The modifications appear to be consistent and purposeful, with no apparent conflicts with existing components.
Also applies to: 269-269, 282-283, 326-328
src/cf/Catalogs/пбп_ИсторияИнтеграции/Forms/ФормаЭлемента/Ext/Form.xml (6)
287-292
: Approved: Improved field naming for clarityThe renaming of "ЗапросИсходящий" to "ИсходящееСообщение" enhances the clarity of the form by using more precise terminology. This change is consistent across the TextDocumentField, ContextMenu, and ExtendedTooltip elements.
294-327
: Approved: Enhanced form structure for file handlingThe addition of "ГруппаДанныеСообщенияИсходящего" improves the form's organization and introduces functionality for handling attached files. This aligns well with the PR objective of adding attributes for storing files in a non-text format within the integration history (issue #112).
350-355
: Approved: Consistent field naming improvementThe renaming of "ЗапросВходящий" to "ВходящееСообщение" enhances clarity and maintains consistency with the previously renamed outgoing message field. This change is applied correctly across the TextDocumentField, ContextMenu, and ExtendedTooltip elements.
357-390
: Approved: Consistent form enhancement for incoming messagesThe addition of "ГруппаДанныеСообщенияВходящего" maintains consistency with the previously added outgoing message group. This new group provides similar functionality for handling attached files for incoming messages, aligning with the PR objectives and maintaining a consistent user interface.
657-671
: Approved: New command for saving exchange message filesThe addition of the "СохранитьФайлСообщенияОбмена" command supports the new functionality for handling attached files in both incoming and outgoing messages. This command aligns well with the PR objective of improving file handling within the integration history.
Line range hint
1-671
: Overall assessment: Successful form enhancementThe changes in this file successfully improve the integration history form by:
- Renaming fields for better clarity ("ЗапросИсходящий" to "ИсходящееСообщение" and "ЗапросВходящий" to "ВходящееСообщение").
- Adding new groups ("ГруппаДанныеСообщенияИсходящего" and "ГруппаДанныеСообщенияВходящего") for handling attached files.
- Introducing a new command ("СохранитьФайлСообщенияОбмена") to support file saving functionality.
These enhancements align well with the PR objectives, particularly the addition of attributes for storing files in a non-text format within the integration history (issue #112). The changes maintain consistency throughout the form and improve the overall user experience for managing integration data.
src/cf/Catalogs/пбп_ИсторияИнтеграции.xml (2)
1004-1047
: LGTM: New attribute "ИмяФайлаСообщения" (Message File Name) added correctly.The new attribute for storing the message file name is well-defined:
- Appropriate string type with a reasonable maximum length of 150 characters.
- Necessary properties are set, including indexing and full-text search.
- The attribute aligns well with the catalog's purpose of tracking integration history.
1004-1087
: Summary: New attributes successfully implement non-text file storage in integration history.The addition of "ИмяФайлаСообщения" (Message File Name) and "ФайлСообщения" (Message File) attributes successfully implements the capability to store files in a non-text format within the integration history, as outlined in issue #112. These changes enhance the catalog's functionality while maintaining consistency with the existing structure and naming conventions.
src/cf/CommonModules/пбп_ФайловаяСистемаСлужебныйКлиент/Ext/Module.bsl (5)
28-38
: Proper Handling of Extension ConnectionThe procedure
НачатьПодключениеРасширенияРаботыСФайламиПриУстановкеРасширения
correctly checks the connection status of the file system extension. It handles the scenario where the extension is already connected and appropriately raises an exception when the operation cannot proceed due to the browser environment limitations.
40-46
: Consistent Processing Based on User ActionThe procedure
НачатьПодключениеРасширенияРаботыСФайламиПриОтветеНаВопросОбУстановке
accurately interprets the user's action and determines the connection status of the extension. The use ofВыполнитьОбработкуОповещения
ensures that the callback is invoked with the correct status.
62-73
: Efficient Initiation of Temporary Directory CreationIn
СоздатьВременныйКаталогПослеПроверкиРасширенияРаботыСФайлами
, the logic appropriately initiates the process to create a temporary directory when the extension is connected. It also handles failure by notifying the user about the inability to establish the extension.
98-105
: Error Handling is Correctly ImplementedThe procedure
СоздатьВременныйКаталогПриОбработкеОшибки
effectively captures and processes errors during the temporary directory creation. Suppressing the standard error processing and providing a concise error description ensures that the user is informed appropriately.
108-114
: Verify Parameters in Warning Display FunctionIn
СоздатьВременныйКаталогОповеститьОбОшибке
, the call toПоказатьПредупреждение
has an empty first parameter:ПоказатьПредупреждение(, ОписаниеОшибки);Please confirm whether the
ПоказатьПредупреждение
function supports an empty first parameter. If not, consider adjusting the function call to ensure the warning message is displayed correctly:- ПоказатьПредупреждение(, ОписаниеОшибки); + ПоказатьПредупреждение(ОписаниеОшибки);This change removes the empty parameter and passes the error description directly, aligning with standard function usage.
src/cf/CommonModules/пбп_ФайловаяСистемаКлиент/Ext/Module.bsl (2)
83-87
: Verify that the extension is always connected in non-web clientsThe code assumes that in mobile, thin, and thick clients, the extension is always connected. Please verify that this assumption holds true in all environments to prevent potential issues.
1-106
: Overall code is well-structured and aligns with best practicesThe implementation provides essential functionality for managing temporary directories and ensuring necessary extensions are available. The code is well-documented and maintains consistency with the existing codebase.
src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl (1)
167-171
: Verify the correctness of the integration system retrievalAt lines 167 to 171, the integration system is retrieved using:
НоваяНастройка.ИнтегрируемаяСистема = пбп_ИнтеграцииСлужебный.ИнтегрируемаяСистема("RabbitMq");Please ensure that the function
пбп_ИнтеграцииСлужебный.ИнтегрируемаяСистема("RabbitMq")
correctly returns the intended integration system. Verify that "RabbitMq" is a valid identifier and that the integration system exists.Run the following script to check for the definition of "RabbitMq":
This script searches for occurrences where the integration system "Rabbit Mq" is defined, helping to confirm its existence.
✅ Verification successful
Integration system "RabbitMq" is correctly defined and retrieved.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify that the integration system "RabbitMq" is defined in the codebase. # Search for the definition of "RabbitMq" in the integration systems module. rg --type-add 'bsl:*.bsl' -t bsl -A 5 'Наименование\s*=\s*"Rabbit Mq"' src/Length of output: 1615
src/cf/Catalogs/пбп_ИсторияИнтеграции/Forms/ФормаЭлемента/Ext/Form/Module.bsl (6)
36-36
: Extension of status checks to include 'ОшибкаЗагрузки'The added condition to include
Объект.Статус = Перечисления.пбп_СтатусыИнтеграции.ОшибкаЗагрузки
ensures that the form correctly handles cases where an error occurs during loading. This enhances the robustness of status handling.
44-51
: Include support for JSON integration formatBy adding checks for
Перечисления.пбп_ФорматыИнтеграций.JSON
, the code now supports JSON integration formats in addition to XML. Ensure that all necessary components for JSON rendering are properly initialized and tested.Consider verifying that JSON-specific elements like
ВидОтображенияЗапроса
are correctly displayed and that the rendering of JSON messages functions as intended.
123-124
: Ensure compatibility with XML editor methodsThe usage of
Xonomy.plusminus("xonomy1", true)
suggests reliance on specific XML editor functionality. Verify that this method is compatible with the current version of the editor and ensure that it behaves as expected for collapsing and expanding XML nodes.
142-143
: Consistency in method calls for collapsing XML nodesSimilar to the expansion functionality, ensure that the usage of
Xonomy.plusminus("xonomy1", false)
correctly collapses all XML nodes. Consistency in these methods is crucial for user experience.
277-315
: New procedure 'ВывестиСсылкуНаФайлПриНеобходимости' is well-structuredThe procedure effectively manages the visibility of elements based on whether a file link should be displayed instead of the message content, considering different integration types. This enhances the dynamic UI adjustments.
Line range hint
395-424
: Ensure proper initialization and disposal of JSON objectsIn the procedures for initializing and filling JSON objects (
ИнициализироватьИЗаполнитьТекстомОбъектJSON
), make sure that theДокументВнешнийОбъектИсходящий
andДокументВнешнийОбъектВходящий
are properly destroyed before reinitialization to prevent memory leaks. The current implementation appears to handle this correctly.
<xr:Item xsi:type="xr:MDObjectRef">Role.пбп_ПросмотрИсторииИнтеграции</xr:Item> | ||
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.пбп_ИнтеграцииСлужебный</xr:Item> | ||
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.пбп_ИнтеграцииFTPSFTP</xr:Item> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codebase verification
Missing Definitions for New Components
The new components added in src/cf/Subsystems/пбп_УправлениеИнтеграциями.xml
were not found in the expected locations:
пбп_ПросмотрИсторииИнтеграции
inRoles/*.xml
пбп_ИнтеграцииСлужебный
andпбп_ИнтеграцииFTPSFTP
inCommonModules/*.xml
However, there are references to these components in several .bsl
files without corresponding definitions. Please ensure that these components are properly defined and implemented.
🔗 Analysis chain
LGTM! Verify consistency with related components.
The additions to the subsystem content align well with the PR objectives, enhancing the integration management capabilities:
Role.пбп_ПросмотрИсторииИнтеграции
: Adds a role for viewing integration history, improving access control.CommonModule.пбп_ИнтеграцииСлужебный
: Introduces a service module for integrations, potentially centralizing common integration logic.CommonModule.пбп_ИнтеграцииFTPSFTP
: Adds a module specifically for FTP/SFTP integrations, which aligns with the new SFTP directory content retrieval mentioned in the PR objectives.
These changes appear to be correct and beneficial.
To ensure consistency, please run the following script to verify the existence and proper implementation of these new components:
This script will help ensure that the new components are properly defined and used throughout the codebase.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Verify the existence and implementation of new components
# Test 1: Check if the role is properly defined
echo "Checking Role definition:"
rg --type xml "пбп_ПросмотрИсторииИнтеграции" -g "Roles/*.xml"
# Test 2: Check if the CommonModules are properly implemented
echo "Checking CommonModule implementations:"
rg --type xml "пбп_ИнтеграцииСлужебный" -g "CommonModules/*.xml"
rg --type xml "пбп_ИнтеграцииFTPSFTP" -g "CommonModules/*.xml"
# Test 3: Look for usage of these new components in other files
echo "Checking usage of new components:"
rg "пбп_ПросмотрИсторииИнтеграции|пбп_ИнтеграцииСлужебный|пбп_ИнтеграцииFTPSFTP" -g "*.bsl"
Length of output: 4992
НоваяНастройка = Результат.Добавить(); | ||
НоваяНастройка.Наименование = "SFTP"; | ||
НоваяНастройка.ИдентификаторНастройки = "SFTP"; | ||
НоваяНастройка.ИнтегрируемаяСистема = пбп_ИнтеграцииСлужебный.ИнтегрируемаяСистема("СистемаN"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Eliminate multiple uses of the string literal "СистемаN"
As indicated by the static analysis tool, the string literal "СистемаN"
is used multiple times at lines 191 and 198:
...
To improve maintainability and reduce the risk of errors due to typos, consider defining a constant for the string "СистемаN"
.
Apply this diff to define a constant and replace the string literals:
+// Define a constant for "СистемаN"
+Перем ИдентификаторСистемаN;
+ИдентификаторСистемаN = "СистемаN";
...
...
This change centralizes the definition of the string, making it easier to update in the future and enhancing code readability.
Also applies to: 198-198
🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[warning] 191-191: src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl#L191
Необходимо избавиться от многократного использования строкового литерала "СистемаN"
// НачалоУдаления | ||
НовыйМетод = Результат.Добавить(); | ||
НовыйМетод.Наименование = "SFTP исх"; | ||
НовыйМетод.ИдентификаторНастройки = "SFTPИсх"; | ||
|
||
НовыйМетод = Результат.Добавить(); | ||
НовыйМетод.Наименование = "SFTP вх"; | ||
НовыйМетод.ИдентификаторНастройки = "SFTPВх"; | ||
|
||
НовыйМетод = Результат.Добавить(); | ||
НовыйМетод.Наименование = "Каталог исх"; | ||
НовыйМетод.ИдентификаторНастройки = "КаталогИсх"; | ||
|
||
НовыйМетод = Результат.Добавить(); | ||
НовыйМетод.Наименование = "Каталог вх"; | ||
НовыйМетод.ИдентификаторНастройки = "КаталогВх"; | ||
|
||
НовыйМетод = Результат.Добавить(); | ||
НовыйМетод.Наименование = "Rest вх"; | ||
НовыйМетод.ИдентификаторНастройки = "RESTВх"; | ||
|
||
НовыйМетод = Результат.Добавить(); | ||
НовыйМетод.Наименование = "Rest исх"; | ||
НовыйМетод.ИдентификаторНастройки = "RESTИсх"; | ||
|
||
НовыйМетод = Результат.Добавить(); | ||
НовыйМетод.Наименование = "COM"; | ||
НовыйМетод.ИдентификаторНастройки = "COM"; | ||
// КонецУдаления |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Correct the use of deletion markers in added code
The code segment from lines 116 to 144 is enclosed between // НачалоУдаления
and // КонецУдаления
, which indicate the start and end of a deletion. However, the code within these markers appears to be additions of new methods.
To prevent confusion and maintain clarity in the codebase, consider updating the comments to reflect that this block is being added rather than deleted.
Apply this diff to correct the comments:
- // НачалоУдаления
+ // НачалоДобавления
НовыйМетод = Результат.Добавить();
НовыйМетод.Наименование = "SFTP исх";
НовыйМетод.ИдентификаторНастройки = "SFTPИсх";
...
НовыйМетод.ИдентификаторНастройки = "COM";
- // КонецУдаления
+ // КонецДобавления
📝 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.
// НачалоУдаления | |
НовыйМетод = Результат.Добавить(); | |
НовыйМетод.Наименование = "SFTP исх"; | |
НовыйМетод.ИдентификаторНастройки = "SFTPИсх"; | |
НовыйМетод = Результат.Добавить(); | |
НовыйМетод.Наименование = "SFTP вх"; | |
НовыйМетод.ИдентификаторНастройки = "SFTPВх"; | |
НовыйМетод = Результат.Добавить(); | |
НовыйМетод.Наименование = "Каталог исх"; | |
НовыйМетод.ИдентификаторНастройки = "КаталогИсх"; | |
НовыйМетод = Результат.Добавить(); | |
НовыйМетод.Наименование = "Каталог вх"; | |
НовыйМетод.ИдентификаторНастройки = "КаталогВх"; | |
НовыйМетод = Результат.Добавить(); | |
НовыйМетод.Наименование = "Rest вх"; | |
НовыйМетод.ИдентификаторНастройки = "RESTВх"; | |
НовыйМетод = Результат.Добавить(); | |
НовыйМетод.Наименование = "Rest исх"; | |
НовыйМетод.ИдентификаторНастройки = "RESTИсх"; | |
НовыйМетод = Результат.Добавить(); | |
НовыйМетод.Наименование = "COM"; | |
НовыйМетод.ИдентификаторНастройки = "COM"; | |
// КонецУдаления | |
// НачалоДобавления | |
НовыйМетод = Результат.Добавить(); | |
НовыйМетод.Наименование = "SFTP исх"; | |
НовыйМетод.ИдентификаторНастройки = "SFTPИсх"; | |
НовыйМетод = Результат.Добавить(); | |
НовыйМетод.Наименование = "SFTP вх"; | |
НовыйМетод.ИдентификаторНастройки = "SFTPВх"; | |
НовыйМетод = Результат.Добавить(); | |
НовыйМетод.Наименование = "Каталог исх"; | |
НовыйМетод.ИдентификаторНастройки = "КаталогИсх"; | |
НовыйМетод = Результат.Добавить(); | |
НовыйМетод.Наименование = "Каталог вх"; | |
НовыйМетод.ИдентификаторНастройки = "КаталогВх"; | |
НовыйМетод = Результат.Добавить(); | |
НовыйМетод.Наименование = "Rest вх"; | |
НовыйМетод.ИдентификаторНастройки = "RESTВх"; | |
НовыйМетод = Результат.Добавить(); | |
НовыйМетод.Наименование = "Rest исх"; | |
НовыйМетод.ИдентификаторНастройки = "RESTИсх"; | |
НовыйМетод = Результат.Добавить(); | |
НовыйМетод.Наименование = "COM"; | |
НовыйМетод.ИдентификаторНастройки = "COM"; | |
// КонецДобавления |
// НачалоУдаления | ||
НоваяНастройка = Результат.Добавить(); | ||
НоваяНастройка.Наименование = "SFTP"; | ||
НоваяНастройка.ИдентификаторНастройки = "SFTP"; | ||
НоваяНастройка.ИнтегрируемаяСистема = пбп_ИнтеграцииСлужебный.ИнтегрируемаяСистема("СистемаN"); | ||
НоваяНастройка.ТипИнтеграции = Справочники.пбп_ТипыИнтеграций.SFTP; | ||
НоваяНастройка.ТипАвторизации = Перечисления.пбп_ТипыАвторизации.Базовая; | ||
|
||
НоваяНастройка = Результат.Добавить(); | ||
НоваяНастройка.Наименование = "Каталог"; | ||
НоваяНастройка.ИдентификаторНастройки = "Каталог"; | ||
НоваяНастройка.ИнтегрируемаяСистема = пбп_ИнтеграцииСлужебный.ИнтегрируемаяСистема("СистемаN"); | ||
НоваяНастройка.ТипИнтеграции = Справочники.пбп_ТипыИнтеграций.Локальный; | ||
НоваяНастройка.ТипАвторизации = Перечисления.пбп_ТипыАвторизации.Базовая; | ||
|
||
НоваяНастройка = Результат.Добавить(); | ||
НоваяНастройка.Наименование = "REST API"; | ||
НоваяНастройка.ИдентификаторНастройки = "RestAPI"; | ||
НоваяНастройка.ИнтегрируемаяСистема = пбп_ИнтеграцииСлужебный.ИнтегрируемаяСистема("СистемаN"); | ||
НоваяНастройка.ТипИнтеграции = Справочники.пбп_ТипыИнтеграций.RESTAPI; | ||
НоваяНастройка.ТипАвторизации = Перечисления.пбп_ТипыАвторизации.Базовая; | ||
// КонецУдаления |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Correct the use of deletion markers in added code
Similar to the previous issue, the code block from lines 187 to 208 is enclosed within // НачалоУдаления
and // КонецУдаления
, but it contains additions rather than deletions.
To maintain consistency and prevent misunderstandings, update the comments to correctly indicate that this block is added code.
Apply this diff to correct the comments:
- // НачалоУдаления
НоваяНастройка = Результат.Добавить();
НоваяНастройка.Наименование = "SFTP";
...
НоваяНастройка.ТипАвторизации = Перечисления.пбп_ТипыАвторизации.Базовая;
- // КонецУдаления
+ // НачалоДобавления
+ ...
+ // КонецДобавления
Committable suggestion was skipped due to low confidence.
🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[warning] 191-191: src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl#L191
Необходимо избавиться от многократного использования строкового литерала "СистемаN"
Если НовоеСообщение.Ошибка Тогда | ||
НовоеСообщение.Статус = Перечисления.пбп_СтатусыИнтеграции.ОшибкаЗагрузки; | ||
Иначе | ||
НовоеСообщение.Статус = Перечисления.пбп_СтатусыИнтеграции.Загружено; | ||
КонецЕсли; | ||
Иначе | ||
Если НовоеСообщение.Ошибка Тогда | ||
НовоеСообщение.Статус = Перечисления.пбп_СтатусыИнтеграции.ОшибкаВыгрузки; | ||
Иначе | ||
НовоеСообщение.Статус = Перечисления.пбп_СтатусыИнтеграции.Выгружено; | ||
КонецЕсли; | ||
КонецЕсли; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Refactor conditional statements to reduce code duplication
The nested Если
statements can be simplified to reduce duplication and improve readability.
Consider refactoring the code as follows:
This refactoring minimizes duplication and makes the logic clearer.
Процедура ЗаполнитьСвойстваФайловИзСтрокиСпискаФайлов(ТаблицаСвойствФайлов, ТекущаяСтрока) | ||
|
||
МассивСвойств = пбп_СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ТекущаяСтрока, " ", Истина, Истина); | ||
Инкремент = 0; | ||
ИмяФайла = ""; | ||
НоваяСтрока = ТаблицаСвойствФайлов.Добавить(); | ||
Для Каждого СтрокаСвойств Из МассивСвойств Цикл | ||
ТекущееЗначение = СтрокаСвойств; | ||
Если Инкремент = 0 Тогда | ||
ИмяКолонки = "Права"; | ||
ИначеЕсли Инкремент = 1 Тогда | ||
ИмяКолонки = "КоличествовоСсылок"; | ||
ТекущееЗначение = Число(ТекущееЗначение); | ||
ИначеЕсли Инкремент = 2 Тогда | ||
ИмяКолонки = "Владелец"; | ||
ИначеЕсли Инкремент = 3 Тогда | ||
ИмяКолонки = "Группа"; | ||
ИначеЕсли Инкремент = 4 Тогда | ||
ИмяКолонки = "Размер"; | ||
ТекущееЗначение = Число(ТекущееЗначение); | ||
ИначеЕсли Инкремент = 5 Тогда | ||
ИмяКолонки = "Месяц"; | ||
ИначеЕсли Инкремент = 6 Тогда | ||
ИмяКолонки = "Число"; | ||
ТекущееЗначение = Число(ТекущееЗначение); | ||
ИначеЕсли Инкремент = 7 Тогда | ||
ИмяКолонки = "ГодВремя"; | ||
НоваяСтрока.ЭтоВремя = СтрНайти(ТекущееЗначение, ":") > 0; | ||
Иначе | ||
ИмяФайла = ИмяФайла + ?(ПустаяСтрока(ИмяФайла), "", " ") + ТекущееЗначение; | ||
КонецЕсли; | ||
|
||
// Далее должно быть имя файла | ||
Если Инкремент <= 7 Тогда | ||
НоваяСтрока[ИмяКолонки] = ТекущееЗначение; | ||
КонецЕсли; | ||
|
||
Инкремент = Инкремент + 1; | ||
КонецЦикла; | ||
|
||
НоваяСтрока.ИмяФайла = ИмяФайла; | ||
|
||
КонецПроцедуры |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Reduce cognitive complexity in "ЗаполнитьСвойстваФайловИзСтрокиСпискаФайлов" function
The function ЗаполнитьСвойстваФайловИзСтрокиСпискаФайлов
has high cognitive complexity (16). This can make the code harder to read and maintain.
Consider refactoring the function to reduce complexity. One approach is to replace the large Если
chain with a Выбор...КонецВыбора
construct or use a mapping array.
Example refactoring using Выбор
:
Процедура ЗаполнитьСвойстваФайловИзСтрокиСпискаФайлов(ТаблицаСвойствФайлов, ТекущаяСтрока)
МассивСвойств = пбп_СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ТекущаяСтрока, " ", Истина, Истина);
Инкремент = 0;
ИмяФайла = "";
НоваяСтрока = ТаблицаСвойствФайлов.Добавить();
Для Каждого СтрокаСвойств Из МассивСвойств Цикл
ТекущееЗначение = СтрокаСвойств;
Выбор Инкремент
Когда 0:
ИмяКолонки = "Права";
Когда 1:
ИмяКолонки = "КоличествоСсылок";
ТекущееЗначение = Число(ТекущееЗначение);
Когда 2:
ИмяКолонки = "Владелец";
Когда 3:
ИмяКолонки = "Группа";
Когда 4:
ИмяКолонки = "Размер";
ТекущееЗначение = Число(ТекущееЗначение);
Когда 5:
ИмяКолонки = "Месяц";
Когда 6:
ИмяКолонки = "Число";
ТекущееЗначение = Число(ТекущееЗначение);
Когда 7:
ИмяКолонки = "ГодВремя";
НоваяСтрока.ЭтоВремя = СтрНайти(ТекущееЗначение, ":") > 0;
Иначе
ИмяФайла = ИмяФайла + ?(ПустаяСтрока(ИмяФайла), "", " ") + ТекущееЗначение;
КонецВыбора;
// Далее должно быть имя файла
Если Инкремент <= 7 Тогда
НоваяСтрока[ИмяКолонки] = ТекущееЗначение;
КонецЕсли;
Инкремент = Инкремент + 1;
КонецЦикла;
НоваяСтрока.ИмяФайла = ИмяФайла;
КонецПроцедуры
🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[failure] 868-868: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L868
Уменьшите когнитивную сложность "ЗаполнитьСвойстваФайловИзСтрокиСпискаФайлов" с 16 до 15
[notice] 879-879: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L879
Возможная опечатка в "Количествово"
[warning] 881-881: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L881
Создайте константу с понятным названием, присвойте ей значение "2" и используйте эту константу вместо магического числа.
[warning] 883-883: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L883
Создайте константу с понятным названием, присвойте ей значение "3" и используйте эту константу вместо магического числа.
[warning] 885-885: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L885
Создайте константу с понятным названием, присвойте ей значение "4" и используйте эту константу вместо магического числа.
[warning] 888-888: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L888
Создайте константу с понятным названием, присвойте ей значение "5" и используйте эту константу вместо магического числа.
[warning] 890-890: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L890
Создайте константу с понятным названием, присвойте ей значение "6" и используйте эту константу вместо магического числа.
[warning] 893-893: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L893
Создайте константу с понятным названием, присвойте ей значение "7" и используйте эту константу вместо магического числа.
[warning] 901-901: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L901
Создайте константу с понятным названием, присвойте ей значение "7" и используйте эту константу вместо магического числа.
Функция ПолучитьНомерМесяцаПоСтроковомуПредставлению(МесяцСтрокойСокр) | ||
|
||
Если МесяцСтрокойСокр = "Янв" Тогда | ||
МесяцЧислом = 1; | ||
ИначеЕсли МесяцСтрокойСокр = "Фев" Тогда | ||
МесяцЧислом = 2; | ||
ИначеЕсли МесяцСтрокойСокр = "Мар" Тогда | ||
МесяцЧислом = 3; | ||
ИначеЕсли МесяцСтрокойСокр = "Апр" Тогда | ||
МесяцЧислом = 4; | ||
ИначеЕсли МесяцСтрокойСокр = "Май" Тогда | ||
МесяцЧислом = 5; | ||
ИначеЕсли МесяцСтрокойСокр = "Июн" Тогда | ||
МесяцЧислом = 6; | ||
ИначеЕсли МесяцСтрокойСокр = "Июл" Тогда | ||
МесяцЧислом = 7; | ||
ИначеЕсли МесяцСтрокойСокр = "Авг" Тогда | ||
МесяцЧислом = 8; | ||
ИначеЕсли МесяцСтрокойСокр = "Сен" Тогда | ||
МесяцЧислом = 9; | ||
ИначеЕсли МесяцСтрокойСокр = "Окт" Тогда | ||
МесяцЧислом = 10; | ||
ИначеЕсли МесяцСтрокойСокр = "Ноя" Тогда | ||
МесяцЧислом = 11; | ||
ИначеЕсли МесяцСтрокойСокр = "Jan" Тогда | ||
МесяцЧислом = 1; | ||
ИначеЕсли МесяцСтрокойСокр = "Feb" Тогда | ||
МесяцЧислом = 2; | ||
ИначеЕсли МесяцСтрокойСокр = "Mar" Тогда | ||
МесяцЧислом = 3; | ||
ИначеЕсли МесяцСтрокойСокр = "Apr" Тогда | ||
МесяцЧислом = 4; | ||
ИначеЕсли МесяцСтрокойСокр = "May" Тогда | ||
МесяцЧислом = 5; | ||
ИначеЕсли МесяцСтрокойСокр = "Jun" Тогда | ||
МесяцЧислом = 6; | ||
ИначеЕсли МесяцСтрокойСокр = "Jul" Тогда | ||
МесяцЧислом = 7; | ||
ИначеЕсли МесяцСтрокойСокр = "Aug" Тогда | ||
МесяцЧислом = 8; | ||
ИначеЕсли МесяцСтрокойСокр = "Sep" Тогда | ||
МесяцЧислом = 9; | ||
ИначеЕсли МесяцСтрокойСокр = "Oct" Тогда | ||
МесяцЧислом = 10; | ||
ИначеЕсли МесяцСтрокойСокр = "Nov" Тогда | ||
МесяцЧислом = 11; | ||
Иначе // Декабрь | ||
МесяцЧислом = 12; | ||
КонецЕсли; | ||
|
||
Возврат МесяцЧислом; | ||
|
||
КонецФункции |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Reduce cognitive complexity in "ПолучитьНомерМесяцаПоСтроковомуПредставлению" function
The function ПолучитьНомерМесяцаПоСтроковомуПредставлению
has high cognitive complexity (23). This makes it difficult to read and maintain.
Consider using a mapping structure (e.g., Соответствие
) to map month abbreviations to their numeric values.
Example refactoring:
Функция ПолучитьНомерМесяцаПоСтроковомуПредставлению(МесяцСтрокойСокр)
Месяцы = Новый Соответствие;
Месяцы.Вставить("Янв", 1); Месяцы.Вставить("Jan", 1);
Месяцы.Вставить("Фев", 2); Месяцы.Вставить("Feb", 2);
Месяцы.Вставить("Мар", 3); Месяцы.Вставить("Mar", 3);
Месяцы.Вставить("Апр", 4); Месяцы.Вставить("Apr", 4);
Месяцы.Вставить("Май", 5); Месяцы.Вставить("May", 5);
Месяцы.Вставить("Июн", 6); Месяцы.Вставить("Jun", 6);
Месяцы.Вставить("Июл", 7); Месяцы.Вставить("Jul", 7);
Месяцы.Вставить("Авг", 8); Месяцы.Вставить("Aug", 8);
Месяцы.Вставить("Сен", 9); Месяцы.Вставить("Sep", 9);
Месяцы.Вставить("Окт", 10); Месяцы.Вставить("Oct", 10);
Месяцы.Вставить("Ноя", 11); Месяцы.Вставить("Nov", 11);
Месяцы.Вставить("Дек", 12); Месяцы.Вставить("Dec", 12);
Если Месяцы.СодержитКлюч(МесяцСтрокойСокр) Тогда
Возврат Месяцы[МесяцСтрокойСокр];
Иначе
Возврат 0; // Или обработать ошибку
КонецЕсли;
КонецФункции
🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[failure] 928-928: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L928
Уменьшите когнитивную сложность "ПолучитьНомерМесяцаПоСтроковомуПредставлению" с 23 до 15
[notice] 930-930: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L930
Возможная опечатка в "Янв"
[notice] 944-944: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L944
Возможная опечатка в "Авг"
[notice] 940-940: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L940
Возможная опечатка в "Июн"
[notice] 942-942: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L942
Возможная опечатка в "Июл"
[notice] 932-932: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L932
Возможная опечатка в "Фев"
[notice] 948-948: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L948
Возможная опечатка в "Окт"
[failure] 928-928: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L928
Уменьшите цикломатическую сложность "ПолучитьНомерМесяцаПоСтроковомуПредставлению" с 24 до 20
ТаблицаСвойствФайлов.Колонки.Добавить("КоличествовоСсылок", | ||
пбп_ОбщегоНазначенияСервер.ОписаниеТипаЧисло(3, 0, ДопустимыйЗнак.Неотрицательный)); | ||
ТаблицаСвойствФайлов.Колонки.Добавить("Владелец", пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(50)); | ||
ТаблицаСвойствФайлов.Колонки.Добавить("Группа", пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(50)); | ||
ТаблицаСвойствФайлов.Колонки.Добавить("Размер", | ||
пбп_ОбщегоНазначенияСервер.ОписаниеТипаЧисло(15, 0, ДопустимыйЗнак.Неотрицательный)); | ||
ТаблицаСвойствФайлов.Колонки.Добавить("Месяц", пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(10)); | ||
ТаблицаСвойствФайлов.Колонки.Добавить("Число", | ||
пбп_ОбщегоНазначенияСервер.ОписаниеТипаЧисло(2, 0, ДопустимыйЗнак.Неотрицательный)); | ||
ТаблицаСвойствФайлов.Колонки.Добавить("ГодВремя", пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(5)); | ||
ТаблицаСвойствФайлов.Колонки.Добавить("ЭтоВремя", Новый ОписаниеТипов("Булево")); | ||
ТаблицаСвойствФайлов.Колонки.Добавить("ИмяФайла", пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(150)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Use constants instead of magic numbers in table column definitions
Magic numbers are used when defining the lengths and precisions of table columns. This can reduce code readability and maintainability.
Consider defining constants with meaningful names for these numbers.
Example:
Константа ДлинаСтрокиИмяФайла = 150;
Константа ДлинаСтрокиПрава = 30;
Константа ДлинаСтрокиВладелец = 50;
Константа ДлинаСтрокиМесяц = 10;
Константа ДлинаСтрокиГодВремя = 5;
...
ТаблицаСвойствФайлов.Колонки.Добавить("Права", пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(ДлинаСтрокиПрава));
ТаблицаСвойствФайлов.Колонки.Добавить("Владелец", пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(ДлинаСтрокиВладелец));
...
🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[notice] 851-851: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L851
Возможная опечатка в "Количествово"
[warning] 852-852: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L852
Создайте константу с понятным названием, присвойте ей значение "3" и используйте эту константу вместо магического числа.
[warning] 853-853: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L853
Создайте константу с понятным названием, присвойте ей значение "50" и используйте эту константу вместо магического числа.
[warning] 854-854: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L854
Создайте константу с понятным названием, присвойте ей значение "50" и используйте эту константу вместо магического числа.
[warning] 856-856: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L856
Создайте константу с понятным названием, присвойте ей значение "15" и используйте эту константу вместо магического числа.
[warning] 857-857: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L857
Создайте константу с понятным названием, присвойте ей значение "10" и используйте эту константу вместо магического числа.
[warning] 859-859: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L859
Создайте константу с понятным названием, присвойте ей значение "2" и используйте эту константу вместо магического числа.
[warning] 860-860: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L860
Создайте константу с понятным названием, присвойте ей значение "5" и используйте эту константу вместо магического числа.
[warning] 862-862: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L862
Создайте константу с понятным названием, присвойте ей значение "150" и используйте эту константу вместо магического числа.
|
||
КонецФункции | ||
|
||
Функция ПолучитьНомерМесяцаПоСтроковомуПредставлению(МесяцСтрокойСокр) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Cyclomatic complexity is too high in "ПолучитьНомерМесяцаПоСтроковомуПредставлению"
The function's cyclomatic complexity is 24, exceeding the recommended maximum of 20.
The refactoring suggested earlier (using a mapping structure) will also address this issue by reducing the number of conditional branches.
🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[failure] 928-928: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L928
Уменьшите когнитивную сложность "ПолучитьНомерМесяцаПоСтроковомуПредставлению" с 23 до 15
[failure] 928-928: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L928
Уменьшите цикломатическую сложность "ПолучитьНомерМесяцаПоСтроковомуПредставлению" с 24 до 20
Если МесяцСтрокойСокр = "Янв" Тогда | ||
МесяцЧислом = 1; | ||
ИначеЕсли МесяцСтрокойСокр = "Фев" Тогда | ||
МесяцЧислом = 2; | ||
ИначеЕсли МесяцСтрокойСокр = "Мар" Тогда | ||
МесяцЧислом = 3; | ||
ИначеЕсли МесяцСтрокойСокр = "Апр" Тогда | ||
МесяцЧислом = 4; | ||
ИначеЕсли МесяцСтрокойСокр = "Май" Тогда | ||
МесяцЧислом = 5; | ||
ИначеЕсли МесяцСтрокойСокр = "Июн" Тогда | ||
МесяцЧислом = 6; | ||
ИначеЕсли МесяцСтрокойСокр = "Июл" Тогда | ||
МесяцЧислом = 7; | ||
ИначеЕсли МесяцСтрокойСокр = "Авг" Тогда | ||
МесяцЧислом = 8; | ||
ИначеЕсли МесяцСтрокойСокр = "Сен" Тогда | ||
МесяцЧислом = 9; | ||
ИначеЕсли МесяцСтрокойСокр = "Окт" Тогда | ||
МесяцЧислом = 10; | ||
ИначеЕсли МесяцСтрокойСокр = "Ноя" Тогда | ||
МесяцЧислом = 11; | ||
ИначеЕсли МесяцСтрокойСокр = "Jan" Тогда | ||
МесяцЧислом = 1; | ||
ИначеЕсли МесяцСтрокойСокр = "Feb" Тогда | ||
МесяцЧислом = 2; | ||
ИначеЕсли МесяцСтрокойСокр = "Mar" Тогда | ||
МесяцЧислом = 3; | ||
ИначеЕсли МесяцСтрокойСокр = "Apr" Тогда | ||
МесяцЧислом = 4; | ||
ИначеЕсли МесяцСтрокойСокр = "May" Тогда | ||
МесяцЧислом = 5; | ||
ИначеЕсли МесяцСтрокойСокр = "Jun" Тогда | ||
МесяцЧислом = 6; | ||
ИначеЕсли МесяцСтрокойСокр = "Jul" Тогда | ||
МесяцЧислом = 7; | ||
ИначеЕсли МесяцСтрокойСокр = "Aug" Тогда | ||
МесяцЧислом = 8; | ||
ИначеЕсли МесяцСтрокойСокр = "Sep" Тогда | ||
МесяцЧислом = 9; | ||
ИначеЕсли МесяцСтрокойСокр = "Oct" Тогда | ||
МесяцЧислом = 10; | ||
ИначеЕсли МесяцСтрокойСокр = "Nov" Тогда | ||
МесяцЧислом = 11; | ||
Иначе // Декабрь |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codebase verification
Incorrect month abbreviation detected
- In
src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl
at lines 930-974, the abbreviation "Фев" should be corrected to "Февр" to match the standard Russian month abbreviations.
🔗 Analysis chain
Possible typos in month abbreviations
There are potential typos in the Russian month abbreviations:
- "Фев" should be "Февр" for February.
- "Авг" is correct for August.
- "Июн" and "Июл" are correct for June and July.
- "Окт" is correct for October.
However, check if the month abbreviations match the expected input format from the SFTP server. Ensure consistency between the abbreviations used and those provided by the server.
To verify the month abbreviations, you can run the following script to check if the abbreviations match those in the data received from the SFTP server.
If needed, I can assist in updating the function to handle additional or corrected abbreviations.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Verify the month abbreviations used in the function against sample data from the SFTP server.
# Expected result: Confirm that the month abbreviations in the data match those handled by the function.
# Since we cannot access the SFTP server, ensure that the abbreviations correspond to standard month abbreviations in English and Russian.
echo "Standard Russian abbreviations: Янв, Февр, Мар, Апр, Май, Июн, Июл, Авг, Сен, Окт, Ноя, Дек"
echo "Standard English abbreviations: Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec"
Length of output: 383
🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[notice] 930-930: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L930
Возможная опечатка в "Янв"
[notice] 944-944: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L944
Возможная опечатка в "Авг"
[notice] 940-940: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L940
Возможная опечатка в "Июн"
[notice] 942-942: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L942
Возможная опечатка в "Июл"
[notice] 932-932: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L932
Возможная опечатка в "Фев"
[notice] 948-948: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L948
Возможная опечатка в "Окт"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 4
🧹 Outside diff range and nitpick comments (6)
.bsl-language-server.json (1)
13-13
: LGTM! Consider improving readability.The additions to the "excludeWords" list are appropriate and align with the PR objectives. They correctly exclude new technical terms related to Linux servers, FTP, and SFTP operations from the "LatinAndCyrillicSymbolInWord" check.
For improved readability, consider breaking the long line into multiple lines, with one term per line. This would make future additions or modifications easier. For example:
"excludeWords": [ "ЧтениеXML", "ЧтениеJSON", "ЗаписьXML", "ЗаписьJSON", "ComОбъект", "ФабрикаXDTO", "ОбъектXDTO", "СоединениеFTP", "HTTPСоединение", "HTTPЗапрос", "HTTPСервисОтвет", "SMSСообщение", "WSПрокси", "ИмяCOMОбъекта", "ЭтоWindowsКлиент", "ЭтоLinuxСервер", "ВыполнитьПодключениеКFTPСерверуДляИнтеграционногоПотока", "ЗаполнитьПараметрыПодключенияКSFTPСерверу", "ПолучитьТаблицуФайловСодержимогоSFTPСервера" ],src/cf/CommonModules/пбп_ФайловаяСистемаКлиентПереадресация/Ext/Module.bsl (3)
23-29
: Procedure implementation looks good, consider enhancing documentation.The
СоздатьВременныйКаталог
procedure is well-structured and serves as a wrapper for the same method in another module. This approach promotes code reusability and maintainability.Consider adding a brief description of the procedure's purpose directly in this file, in addition to the reference to the other module's documentation. This would improve readability and make the code more self-documenting.
31-41
: Procedure implementation is correct, consider enhancing documentation.The
ПодключитьРасширениеДляРаботыСФайлами
procedure is well-structured and serves as a wrapper for the same method in another module. This approach is consistent with the previous procedure and promotes code reusability and maintainability.Similar to the previous suggestion, consider adding a brief description of the procedure's purpose directly in this file, in addition to the reference to the other module's documentation. This would improve readability and make the code more self-documenting.
47-49
: Function implementation is correct, consider adding documentation.The
ПолучитьМодуль
function is concise and serves its purpose of obtaining the correct module for file system operations. Its internal-only visibility (not exported) is appropriate for its usage within this module.Consider adding a brief comment above the function to describe its purpose and return value. This would improve the code's self-documentation and make it easier for other developers to understand its role in the module.
src/cf/CommonModules/пбп_ИнтеграцииСлужебный/Ext/Module.bsl (1)
146-146
: Adjust line lengths to comply with coding standardsLines 146, 182, 194, and 206 exceed the maximum allowed line length of 120 characters, as indicated by the static analysis tools.
Consider splitting these comment lines to improve readability and adhere to the project's style guidelines.
For example:
// ИнтеграционныйПоток - СправочникСсылка.пбп_ИнтеграционныеПотоки - ссылка на метод, // параметры которого получаем.Also applies to: 182-182, 194-194, 206-206
🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[warning] 146-146: src/cf/CommonModules/пбп_ИнтеграцииСлужебный/Ext/Module.bsl#L146
Длина строки 121 превышает максимально допустимую 120src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl (1)
432-432
: Add description for parameter "ПроверитьНаличиеПередУдалением"In the function
УдалитьФайлSFTP
, the parameterПроверитьНаличиеПередУдалением
is missing a description in the function comments. Including a description will enhance the documentation and make the function's purpose clearer to other developers.🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[warning] 432-432: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L432
Необходимо добавить описание параметра "ПроверитьНаличиеПередУдалением"
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (9)
- .bsl-language-server.json (1 hunks)
- src/cf/Catalogs/пбп_ИсторияИнтеграции/Ext/ObjectModule.bsl (1 hunks)
- src/cf/Catalogs/пбп_ИсторияИнтеграции/Forms/ФормаЭлемента/Ext/Form/Module.bsl (9 hunks)
- src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl (1 hunks)
- src/cf/CommonModules/пбп_ИнтеграцииСлужебный/Ext/Module.bsl (1 hunks)
- src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl (1 hunks)
- src/cf/CommonModules/пбп_ФайловаяСистемаКлиент/Ext/Module.bsl (1 hunks)
- src/cf/CommonModules/пбп_ФайловаяСистемаКлиентПереадресация/Ext/Module.bsl (1 hunks)
- src/cf/CommonModules/пбп_ФайловаяСистемаСлужебныйКлиент/Ext/Module.bsl (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (4)
- src/cf/Catalogs/пбп_ИсторияИнтеграции/Ext/ObjectModule.bsl
- src/cf/Catalogs/пбп_ИсторияИнтеграции/Forms/ФормаЭлемента/Ext/Form/Module.bsl
- src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl
- src/cf/CommonModules/пбп_ФайловаяСистемаКлиент/Ext/Module.bsl
🧰 Additional context used
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl
[warning] 432-432: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L432
Необходимо добавить описание параметра "ПроверитьНаличиеПередУдалением"
[warning] 1011-1011: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L1011
Создайте константу с понятным названием, присвойте ей значение "30" и используйте эту константу вместо магического числа.
[warning] 1021-1021: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L1021
Создайте константу с понятным названием, присвойте ей значение "5" и используйте эту константу вместо магического числа.
[warning] 1014-1014: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L1014
Создайте константу с понятным названием, присвойте ей значение "50" и используйте эту константу вместо магического числа.
[failure] 1030-1030: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L1030
Уменьшите когнитивную сложность "ЗаполнитьСвойстваФайловИзСтрокиСпискаФайлов" с 16 до 15
[warning] 1018-1018: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L1018
Создайте константу с понятным названием, присвойте ей значение "10" и используйте эту константу вместо магического числа.
[warning] 1048-1048: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L1048
Создайте константу с понятным названием, присвойте ей значение "4" и используйте эту константу вместо магического числа.
[warning] 1053-1053: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L1053
Создайте константу с понятным названием, присвойте ей значение "6" и используйте эту константу вместо магического числа.
[warning] 1064-1064: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L1064
Создайте константу с понятным названием, присвойте ей значение "7" и используйте эту константу вместо магического числа.
[warning] 1044-1044: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L1044
Создайте константу с понятным названием, присвойте ей значение "2" и используйте эту константу вместо магического числа.
[warning] 1046-1046: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L1046
Создайте константу с понятным названием, присвойте ей значение "3" и используйте эту константу вместо магического числа.
[warning] 1013-1013: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L1013
Создайте константу с понятным названием, присвойте ей значение "3" и используйте эту константу вместо магического числа.
[warning] 1017-1017: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L1017
Создайте константу с понятным названием, присвойте ей значение "15" и используйте эту константу вместо магического числа.
[warning] 1023-1023: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L1023
Создайте константу с понятным названием, присвойте ей значение "150" и используйте эту константу вместо магического числа.
[failure] 1092-1092: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L1092
Уменьшите когнитивную сложность "ПолучитьНомерМесяцаПоСтроковомуПредставлению" с 23 до 15
[failure] 1092-1092: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L1092
Уменьшите цикломатическую сложность "ПолучитьНомерМесяцаПоСтроковомуПредставлению" с 24 до 20
[warning] 1015-1015: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L1015
Создайте константу с понятным названием, присвойте ей значение "50" и используйте эту константу вместо магического числа.
[warning] 1051-1051: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L1051
Создайте константу с понятным названием, присвойте ей значение "5" и используйте эту константу вместо магического числа.
[warning] 1056-1056: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L1056
Создайте константу с понятным названием, присвойте ей значение "7" и используйте эту константу вместо магического числа.
[warning] 1020-1020: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L1020
Создайте константу с понятным названием, присвойте ей значение "2" и используйте эту константу вместо магического числа.src/cf/CommonModules/пбп_ИнтеграцииСлужебный/Ext/Module.bsl
[warning] 146-146: src/cf/CommonModules/пбп_ИнтеграцииСлужебный/Ext/Module.bsl#L146
Длина строки 121 превышает максимально допустимую 120
[warning] 182-182: src/cf/CommonModules/пбп_ИнтеграцииСлужебный/Ext/Module.bsl#L182
Длина строки 121 превышает максимально допустимую 120
[warning] 194-194: src/cf/CommonModules/пбп_ИнтеграцииСлужебный/Ext/Module.bsl#L194
Длина строки 121 превышает максимально допустимую 120
[warning] 206-206: src/cf/CommonModules/пбп_ИнтеграцииСлужебный/Ext/Module.bsl#L206
Длина строки 121 превышает максимально допустимую 120
🔇 Additional comments (10)
src/cf/CommonModules/пбп_ФайловаяСистемаКлиентПереадресация/Ext/Module.bsl (2)
1-20
: Excellent inclusion of copyright and license information.The file starts with a clear copyright notice and license information, which is a best practice in open-source software development. The Apache License 2.0 is appropriately referenced, and the inclusion of the GitHub URL is helpful for users and potential contributors.
1-51
: Overall, the module is well-implemented and follows good practices.The
пбп_ФайловаяСистемаКлиентПереадресация
module demonstrates a clean and consistent implementation. It effectively acts as a redirection layer, forwarding calls to appropriate methods in other modules. This approach promotes code reusability and maintainability.Key strengths:
- Consistent structure across procedures
- Clear separation of concerns
- Appropriate use of export keywords
- Inclusion of copyright and license information
Suggestions for improvement:
- Add brief inline documentation for each procedure and function to enhance self-documentation
src/cf/CommonModules/пбп_ФайловаяСистемаСлужебныйКлиент/Ext/Module.bsl (6)
28-38
: Procedure correctly handles extension connection during installationThe procedure
НачатьПодключениеРасширенияРаботыСФайламиПриУстановкеРасширения
effectively checks the extension's connection status and handles scenarios appropriately by invoking notifications or raising exceptions as needed.
40-46
: Procedure accurately processes user responses for extension installationThe procedure
НачатьПодключениеРасширенияРаботыСФайламиПриОтветеНаВопросОбУстановке
correctly interprets user actions and updates the connection status, ensuring the system responds accordingly.
62-73
: Temporary directory creation initiated correctly based on extension statusThe procedure
СоздатьВременныйКаталогПослеПроверкиРасширенияРаботыСФайлами
appropriately initiates the creation of a temporary directory when the extension is connected and handles errors by notifying the user.
83-96
: Secure generation of unique temporary directory namesThe procedure
СоздатьВременныйКаталогПослеПолученияВременногоКаталога
securely generates a unique temporary directory name using a new unique identifier, minimizing naming conflicts and enhancing security.
98-105
: Effective error handling during temporary directory creationThe procedure
СоздатьВременныйКаталогПриОбработкеОшибки
suppresses standard error processing and provides a concise error notification, ensuring errors are handled gracefully.
108-114
: User-friendly error notificationsThe procedure
СоздатьВременныйКаталогОповеститьОбОшибке
displays warnings to the user and ensures that error notifications are properly communicated to the context for further handling.src/cf/CommonModules/пбп_ИнтеграцииСлужебный/Ext/Module.bsl (2)
30-51
: Function 'ПолучитьСтруктуруЗаписиИстории' is well-implementedThe function correctly initializes all necessary fields in the integration history structure, ensuring that all expected properties are set with appropriate default values.
96-112
: Procedure 'ДобавитьЗаписьВПротоколОбмена' operates correctlyThe procedure effectively appends messages to the exchange protocol with the specified delimiter, handling default values appropriately.
Функция ИнтеграционныйПоток(ИдентификаторНастройки) Экспорт | ||
Возврат Справочники.пбп_ИнтеграционныеПотоки.НайтиПоРеквизиту("ИдентификаторНастройки", ИдентификаторНастройки); | ||
КонецФункции |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add input validation in exported functions
The exported functions ИнтеграционныйПоток
, ИнтегрируемаяСистема
, and НастройкаИнтеграции
do not check if the input parameter ИдентификаторНастройки
is Неопределено
or an empty string. This may lead to runtime errors if these functions are called with invalid arguments.
Consider adding input validation at the beginning of each function to ensure proper handling of invalid inputs:
// At the start of each function
Если ПустаяСтрока(ИдентификаторНастройки) Тогда
Возврат Неопределено;
КонецЕсли;
Also applies to: 199-201, 211-213
МаксимальныйРазмерСтроки = 1000; | ||
ИтераторДерева = Новый ОбходДереваDOM(ДокументDOM); | ||
Пока ИтераторДерева.СледующийУзел() <> Неопределено Цикл | ||
Если ТипЗнч(ИтераторДерева.ТекущийУзел) = Тип("ЭлементDOM") Тогда | ||
Если СтрДлина(ИтераторДерева.ТекущийУзел.ТекстовоеСодержимое) > МаксимальныйРазмерСтроки Тогда | ||
ИтераторДерева.ТекущийУзел.ТекстовоеСодержимое = "X"; | ||
ТребуетсяПерезаписатьXML = Истина; | ||
КонецЕсли; | ||
КонецЕсли; | ||
КонецЦикла; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Enhance the handling of large XML content
In the procedure ОчиститьДлинныеАтрибутыСообщенияXML
, when the text content exceeds МаксимальныйРазмерСтроки
, it is replaced with "X"
. Replacing large content with a single character may not be informative for debugging or logging purposes.
Consider replacing the large content with a placeholder that indicates the content was removed and provides the original length. This can aid in troubleshooting without exposing the full content:
ИтераторДерева.ТекущийУзел.ТекстовоеСодержимое = "[CONTENT REMOVED - Length: " + СтрДлина(ИтераторДерева.ТекущийУзел.ТекстовоеСодержимое) + "]"
Процедура ОчиститьДлинныеАтрибутыСообщенияXML(XMLСтрока) | ||
|
||
ЧтениеXML = Новый ЧтениеXML; | ||
ЧтениеXML.УстановитьСтроку(XMLСтрока); | ||
|
||
ПостроительDOM = Новый ПостроительDOM; | ||
ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML); | ||
|
||
ТребуетсяПерезаписатьXML = Ложь; | ||
|
||
// Перебрать все узлы | ||
МаксимальныйРазмерСтроки = 1000; | ||
ИтераторДерева = Новый ОбходДереваDOM(ДокументDOM); | ||
Пока ИтераторДерева.СледующийУзел() <> Неопределено Цикл | ||
Если ТипЗнч(ИтераторДерева.ТекущийУзел) = Тип("ЭлементDOM") Тогда | ||
Если СтрДлина(ИтераторДерева.ТекущийУзел.ТекстовоеСодержимое) > МаксимальныйРазмерСтроки Тогда | ||
ИтераторДерева.ТекущийУзел.ТекстовоеСодержимое = "X"; | ||
ТребуетсяПерезаписатьXML = Истина; | ||
КонецЕсли; | ||
КонецЕсли; | ||
КонецЦикла; | ||
|
||
Если ТребуетсяПерезаписатьXML Тогда | ||
|
||
ЗаписьXML = Новый ЗаписьXML; | ||
ЗаписьXML.УстановитьСтроку(Новый ПараметрыЗаписиXML(, , Истина, Истина)); | ||
|
||
ЗаписьDOM = Новый ЗаписьDOM; | ||
ЗаписьDOM.Записать(ДокументDOM, ЗаписьXML); | ||
|
||
XMLСтрока = ЗаписьXML.Закрыть(); | ||
|
||
КонецЕсли; | ||
|
||
КонецПроцедуры |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add error handling for potential XML parsing exceptions
The procedure ОчиститьДлинныеАтрибутыСообщенияXML
does not include error handling for cases where XMLСтрока
might be invalid or malformed. This could lead to unhandled exceptions during XML parsing.
Include a try-catch block (Попытка...Исключение
) to handle potential exceptions when working with XML:
Попытка
// Existing code for XML processing
Исключение
// Handle the exception or log an appropriate error message
КонецПопытки;
This ensures that any issues with XML parsing do not cause runtime errors in your application.
Функция ПроверитьСуществованиеУтилитыПодключенияКSFTPWindows() | ||
|
||
Возврат Ложь; | ||
|
||
КонецФункции | ||
|
||
Функция ПолучитьТекстСкриптаОтправкиДляWinSCP(ПараметрыСоединения) | ||
|
||
Возврат ""; | ||
|
||
КонецФункции | ||
|
||
Функция ПолучитьТекстСкриптаСодержимогоКаталоговДляWinSCP(ПараметрыСоединения) | ||
|
||
Возврат ""; | ||
|
||
КонецФункции | ||
|
||
Функция ПолучитьТекстСкриптаПолученияДляWinSCP(ПараметрыСоединения) | ||
|
||
Возврат ""; | ||
|
||
КонецФункции | ||
|
||
Функция ПолучитьТекстСкриптаУдаленияФайлаДляWinSCP(ПараметрыСоединения) | ||
|
||
Возврат ""; | ||
|
||
КонецФункции |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Implement SFTP utility functions for Windows
The functions responsible for SFTP operations on Windows platforms (lines 1140-1168) currently return default or empty values, indicating that they are not implemented. This could prevent the module from functioning correctly on Windows systems.
Consider implementing these functions to provide SFTP support on Windows platforms. If Windows support is not intended, consider updating the documentation to reflect this limitation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 9
🧹 Outside diff range and nitpick comments (11)
src/cf/CommonModules/пбп_ИнтеграцииСлужебный/Ext/Module.bsl (10)
30-51
: LGTM with a minor suggestion.The function
ПолучитьСтруктуруЗаписиИстории
is well-implemented and properly documented. It initializes all necessary fields for the integration history structure.Consider using a more concise initialization for the
ОбъектыИнтеграции
table:ОбъектыИнтеграции = Новый ТаблицаЗначений; ОбъектыИнтеграции.Колонки.Добавить("ОбъектИнтеграции"); ОбъектыИнтеграции.Колонки.Добавить("СозданОбновлен");This approach is more idiomatic in 1C and slightly more efficient.
102-112
: LGTM with a minor readability suggestion.The procedure
ДобавитьЗаписьВПротоколОбмена
is well-implemented. It correctly handles the separator logic and uses НСтр for potential localization.Consider using a more descriptive variable name instead of
ВыводРазделителя
. For example:РазделительДляДобавления = ?(ПустаяСтрока(СтруктураОтвета.ПротоколОбмена), "", Разделитель);This makes the purpose of the variable clearer and improves code readability.
125-141
: Approved with a suggestion for input validation.The function
ПолучитьСтруктуруНастроекИнтеграции
is well-implemented. It correctly uses privileged mode, retrieves data from both object properties and secure storage, and combines them into a single structure.Consider adding input validation for the
НастройкаИнтеграции
parameter at the beginning of the function:Если НЕ ЗначениеЗаполнено(НастройкаИнтеграции) Тогда Возврат Новый Структура; КонецЕсли;This will ensure that the function handles cases where an empty or invalid reference is passed, improving its robustness.
151-159
: Approved with suggestions for improvement.The function
ПолучитьСтруктуруПотокаИНастроекИнтеграции
is well-implemented, correctly retrieving and combining data from the integration flow object and integration settings.
- Add input validation for the
ИнтеграционныйПоток
parameter:Если НЕ ЗначениеЗаполнено(ИнтеграционныйПоток) Тогда Возврат Новый Структура; КонецЕсли;
- Update the function comment to include a description of the
ИнтеграционныйПоток
parameter:// Возвращает структуру с настройками для интеграции // // Параметры: // ИнтеграционныйПоток - СправочникСсылка.пбп_ИнтеграционныеПотоки - Ссылка на элемент справочника интеграционные потоки // // Возвращаемое значение: // Структура - Структура, содержащая настройки интеграционного потока и связанные настройки интеграцииThese changes will improve the function's robustness and documentation.
🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[warning] 151-151: src/cf/CommonModules/пбп_ИнтеграцииСлужебный/Ext/Module.bsl#L151
Необходимо добавить описание всех параметров метода
173-178
: Approved with a suggestion for input validation.The function
ПолучитьСтруктуруПараметровВхода
is well-implemented and documented. It correctly delegates the work to the appropriate catalog method, promoting code reuse and maintainability.Consider adding input validation for the
ИнтеграционныйПоток
parameter at the beginning of the function:Если НЕ ЗначениеЗаполнено(ИнтеграционныйПоток) Тогда Возврат Новый Структура; КонецЕсли;This will ensure that the function handles cases where an empty or invalid reference is passed, improving its robustness.
189-191
: Approved with suggestions for improvement.The function
ИнтеграционныйПоток
is concise and correctly uses the catalog method to find the integration flow.
- Add input validation for the
ИдентификаторНастройки
parameter:Если ПустаяСтрока(ИдентификаторНастройки) Тогда Возврат Справочники.пбп_ИнтеграционныеПотоки.ПустаяСсылка(); КонецЕсли;
- Update the function comment to include a description of the
ИдентификаторНастройки
parameter:// Получает предопределенный метод интеграции по идентификатору настройки // // Параметры: // ИдентификаторНастройки - Строка - Строковый идентификатор предопределенного значения, реквизит ИдентификаторНастройки // // Возвращаемое значение: // СправочникСсылка.пбп_МетодыИнтеграции - Искомый метод интеграцииThese changes will improve the function's robustness and documentation.
🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[warning] 189-189: src/cf/CommonModules/пбп_ИнтеграцииСлужебный/Ext/Module.bsl#L189
Необходимо добавить описание всех параметров метода
202-204
: Approved with suggestions for improvement.The function
ИнтегрируемаяСистема
is concise and correctly uses the catalog method to find the integrable system.
- Add input validation for the
ИдентификаторНастройки
parameter:Если ПустаяСтрока(ИдентификаторНастройки) Тогда Возврат Справочники.пбп_ИнтегрируемыеСистемы.ПустаяСсылка(); КонецЕсли;
- Update the function comment to include a description of the
ИдентификаторНастройки
parameter:// Получает предопределенную интегрируемую систему по идентификатору настройки // // Параметры: // ИдентификаторНастройки - Строка - Строковый идентификатор предопределенного значения, реквизит ИдентификаторНастройки // // Возвращаемое значение: // СправочникСсылка.пбп_ИнтегрируемыеСистемы - Искомая система интеграцииThese changes will improve the function's robustness and documentation.
🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[warning] 202-202: src/cf/CommonModules/пбп_ИнтеграцииСлужебный/Ext/Module.bsl#L202
Необходимо добавить описание всех параметров метода
215-217
: Approved with suggestions for improvement.The function
НастройкаИнтеграции
is concise and correctly uses the catalog method to find the integration settings.
- Add input validation for the
ИдентификаторНастройки
parameter:Если ПустаяСтрока(ИдентификаторНастройки) Тогда Возврат Справочники.пбп_НастройкиИнтеграции.ПустаяСсылка(); КонецЕсли;
- Update the function comment to include a description of the
ИдентификаторНастройки
parameter:// Получает предопределенную настройку интеграции по идентификатору настройки // // Параметры: // ИдентификаторНастройки - Строка - Строковый идентификатор предопределенного значения, реквизит ИдентификаторНастройки // // Возвращаемое значение: // СправочникСсылка.пбп_НастройкиИнтеграции - Искомая настройка интеграцииThese changes will improve the function's robustness and documentation.
🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[warning] 215-215: src/cf/CommonModules/пбп_ИнтеграцииСлужебный/Ext/Module.bsl#L215
Необходимо добавить описание всех параметров метода
230-246
: Approved with suggestions for improvement.The procedure
ДополнительноОбработатьЗапросыИнтеграцииПередЗаписьюВИсторию
correctly processes both incoming and outgoing messages for XML content.Consider the following improvements:
- Use a more robust method to detect XML content. Instead of using
СтрНайти
, you could check if the string starts with<?xml
or use a regular expression:Если СтрНачинаетсяС(СокрЛП(СтруктураЗаписиИстории.ИсходящееСообщение), "<?xml") Тогда // Process XML КонецЕсли;
- Add error handling to catch potential exceptions during XML processing:
Попытка ОчиститьДлинныеАтрибутыСообщенияXML(СтруктураЗаписиИстории.ИсходящееСообщение); Исключение ЗаписьЖурналаРегистрации("ОбработкаXML", УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки;These changes will make the procedure more robust and easier to debug.
253-287
: Approved with suggestions for improvement.The procedure
ОчиститьДлинныеАтрибутыСообщенияXML
effectively processes XML content using DOM and handles cases where no changes are needed.Consider the following improvements:
- Make the maximum string length configurable:
Процедура ОчиститьДлинныеАтрибутыСообщенияXML(XMLСтрока, МаксимальныйРазмерСтроки = 1000)
- Replace long content with a more informative placeholder:
ИтераторДерева.ТекущийУзел.ТекстовоеСодержимое = СтрШаблон("(Содержимое удалено. Длина: %1)", СтрДлина(ИтераторДерева.ТекущийУзел.ТекстовоеСодержимое));
- Add error handling for XML parsing:
Попытка ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(XMLСтрока); ПостроительDOM = Новый ПостроительDOM; ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML); // ... rest of the code ... Исключение ЗаписьЖурналаРегистрации("ОбработкаXML", УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); Возврат; КонецПопытки;These changes will make the procedure more flexible, informative, and robust.
src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl (1)
Line range hint
188-269
: RefactorРасшифровкаКодаСостоянияHTTP
for MaintainabilityThe function
РасшифровкаКодаСостоянияHTTP
uses a lengthy series ofЕсли
andИначеЕсли
statements to map HTTP status codes to their descriptions. This approach can be cumbersome and difficult to maintain. Recommend refactoring the function to use aСоответствие
(dictionary) to store the mappings, which enhances readability and simplifies future updates.Here's how you might implement it:
Функция РасшифровкаКодаСостоянияHTTP(КодСостояния) Экспорт КодыСостояния = Новый Соответствие; КодыСостояния.Вставить(100, НСтр("ru = 'Успешно.'")); КодыСостояния.Вставить(200, НСтр("ru = 'Успешно.'")); КодыСостояния.Вставить(300, НСтр("ru = 'Запрос имеет более чем один из возможных ответов.'")); // ... Add other status codes and messages here ... КодыСостояния.Вставить(511, НСтр("ru = 'Требуется авторизация на сервере.'")); Если КодыСостояния.СодержитКлюч(КодСостояния) Тогда Расшифровка = КодыСостояния[КодСостояния]; Иначе Расшифровка = НСтр("ru = '<Неизвестный код состояния>.'"); КонецЕсли; Возврат пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = '[%1] %2'"), КодСостояния, Расшифровка); КонецФункции
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (3)
- src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl (1 hunks)
- src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl (8 hunks)
- src/cf/CommonModules/пбп_ИнтеграцииСлужебный/Ext/Module.bsl (1 hunks)
🧰 Additional context used
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl
[failure] 1030-1030: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L1030
Уменьшите когнитивную сложность "ЗаполнитьСвойстваФайловИзСтрокиСпискаФайлов" с 16 до 15
[failure] 1092-1092: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L1092
Уменьшите цикломатическую сложность "ПолучитьНомерМесяцаПоСтроковомуПредставлению" с 24 до 20
[failure] 1092-1092: src/cf/CommonModules/пбп_ИнтеграцииFTPSFTP/Ext/Module.bsl#L1092
Уменьшите когнитивную сложность "ПолучитьНомерМесяцаПоСтроковомуПредставлению" с 23 до 15src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl
[warning] 432-432: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L432
Добавьте описание возвращаемого значения функции
[warning] 432-432: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L432
Необходимо добавить описание всех параметров метода
[warning] 394-394: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L394
Добавьте описание возвращаемого значения функции
[warning] 423-423: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L423
Добавьте описание возвращаемого значения функции
[warning] 394-394: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L394
Необходимо добавить описание всех параметров метода
[warning] 403-403: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L403
Необходимо добавить описание всех параметров метода
[warning] 423-423: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L423
Необходимо добавить описание всех параметров метода
[warning] 403-403: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L403
Добавьте описание возвращаемого значения функцииsrc/cf/CommonModules/пбп_ИнтеграцииСлужебный/Ext/Module.bsl
[warning] 151-151: src/cf/CommonModules/пбп_ИнтеграцииСлужебный/Ext/Module.bsl#L151
Необходимо добавить описание всех параметров метода
[warning] 189-189: src/cf/CommonModules/пбп_ИнтеграцииСлужебный/Ext/Module.bsl#L189
Необходимо добавить описание всех параметров метода
[warning] 202-202: src/cf/CommonModules/пбп_ИнтеграцииСлужебный/Ext/Module.bsl#L202
Необходимо добавить описание всех параметров метода
[warning] 215-215: src/cf/CommonModules/пбп_ИнтеграцииСлужебный/Ext/Module.bsl#L215
Необходимо добавить описание всех параметров метода
🔇 Additional comments (4)
src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl (4)
68-75
: Possible Incorrect Date Calculation inДатаИзUnixTime
Function
90-107
: Avoid Removing Apostrophes from Error Messages
159-166
: Add Error Handling for JSON Serialization
413-416
: Incorrect Parameter Passing inПроверитьФайлЕстьНаSFTP
Function
Процедура СоздатьСообщениеИсторииИнтеграции(СтруктураЗаписиИстории, ЭтоЗагрузка) Экспорт | ||
|
||
УстановитьПривилегированныйРежим(Истина); | ||
|
||
ДополнительноОбработатьЗапросыИнтеграцииПередЗаписьюВИсторию(СтруктураЗаписиИстории); | ||
|
||
НовоеСообщение = Справочники.пбп_ИсторияИнтеграции.СоздатьЭлемент(); | ||
НовоеСообщение.ДатаИнтеграции = ТекущаяДатаСеанса(); | ||
НовоеСообщение.ДатаИнтеграцииВМиллисекундах = ТекущаяУниверсальнаяДатаВМиллисекундах(); | ||
НовоеСообщение.Код = Новый УникальныйИдентификатор(); | ||
НовоеСообщение.Ошибка = ЗначениеЗаполнено(СтруктураЗаписиИстории.ОписаниеОшибки); | ||
НовоеСообщение.Пользователь = пбп_ПользователиСлужебный.ТекущийПользователь(); | ||
НовоеСообщение.ДлительностьОбмена = НовоеСообщение.ДатаИнтеграции - СтруктураЗаписиИстории.ДатаНачалаИнтеграции; | ||
НовоеСообщение.ДлительностьВызова = СтруктураЗаписиИстории.ДлительностьВызова; | ||
Если ЭтоЗагрузка Тогда | ||
Если НовоеСообщение.Ошибка Тогда | ||
НовоеСообщение.Статус = Перечисления.пбп_СтатусыИнтеграции.ОшибкаЗагрузки; | ||
Иначе | ||
НовоеСообщение.Статус = Перечисления.пбп_СтатусыИнтеграции.Загружено; | ||
КонецЕсли; | ||
Иначе | ||
Если НовоеСообщение.Ошибка Тогда | ||
НовоеСообщение.Статус = Перечисления.пбп_СтатусыИнтеграции.ОшибкаВыгрузки; | ||
Иначе | ||
НовоеСообщение.Статус = Перечисления.пбп_СтатусыИнтеграции.Выгружено; | ||
КонецЕсли; | ||
КонецЕсли; | ||
ЗаполнитьЗначенияСвойств(НовоеСообщение, СтруктураЗаписиИстории); | ||
Для Каждого Строка Из СтруктураЗаписиИстории.ОбъектыИнтеграции Цикл | ||
НоваяСтрока = НовоеСообщение.ОбъектыИнтеграции.Добавить(); | ||
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка); | ||
КонецЦикла; | ||
|
||
НовоеСообщение.Записать(); | ||
|
||
КонецПроцедуры |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approved with a security consideration.
The procedure СоздатьСообщениеИсторииИнтеграции
is well-implemented, handling both upload and download scenarios correctly. It properly creates and fills a new entry in the integration history.
However, there's a potential security concern:
УстановитьПривилегированныйРежим(Истина);
The privileged mode is set at the beginning of the procedure but not reset at the end. This could lead to unintended elevated privileges in subsequent code execution.
To address this, add the following line at the end of the procedure:
УстановитьПривилегированныйРежим(Ложь);
This ensures that privileged mode is properly reset after the procedure completes its task.
Функция ОтправитьСообщениеSFTP(ИнтеграционныйПоток, ПараметрыСообщения, СтруктураИстории = Неопределено) Экспорт | ||
|
||
ПараметрыСоединения = ЗаполнитьПараметрыПодключенияКSFTPСерверу(ИнтеграционныйПоток); | ||
Возврат пбп_ИнтеграцииFTPSFTP.ОтправитьСообщениеSFTP(ИнтеграционныйПоток, ПараметрыСообщения, СтруктураИстории); | ||
|
||
Если ПустаяСтрока(ПараметрыСообщения.Путь) Тогда | ||
// BSLLS:MissingTemporaryFileDeletion-off | ||
// Необходимо пропустить проверку, так как файл удаляется позже | ||
НовыйФайл = ПолучитьИмяВременногоФайла(ПараметрыСообщения.Расширение); | ||
// BSLLS:MissingTemporaryFileDeletion-on | ||
ПараметрыСообщения.Данные.Записать(НовыйФайл); | ||
ПараметрыСообщения.Путь = НовыйФайл; | ||
КонецЕсли; | ||
|
||
СообщениеОбОшибке = ОпределитьТипОтправкиИОтправитьСообщениеНаSFTP(ПараметрыСоединения, ПараметрыСообщения); | ||
КонецФункции |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add Missing Documentation for ОтправитьСообщениеSFTP
The function ОтправитьСообщениеSFTP
lacks descriptions for its parameters and return value. Including this documentation will improve code readability and help other developers understand the purpose and usage of the function.
🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[warning] 394-394: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L394
Добавьте описание возвращаемого значения функции
[warning] 394-394: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L394
Необходимо добавить описание всех параметров метода
Функция ПолучитьСодержимоеКаталогаSFTP(ИнтеграционныйПоток, КаталогПоиска, СтруктураИстории = Неопределено) Экспорт | ||
|
||
Возврат СообщениеОбОшибке; | ||
Возврат пбп_ИнтеграцииFTPSFTP.ПолучитьСодержимоеКаталогаSFTP(ИнтеграционныйПоток, КаталогПоиска, СтруктураИстории); | ||
|
||
КонецФункции |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add Missing Documentation for ПолучитьСодержимоеКаталогаSFTP
The function ПолучитьСодержимоеКаталогаSFTP
is missing descriptions for its parameters and return value. Providing detailed documentation enhances maintainability and developer comprehension.
🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[warning] 403-403: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L403
Необходимо добавить описание всех параметров метода
[warning] 403-403: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L403
Добавьте описание возвращаемого значения функции
Функция ПрочитатьСообщениеSFTP(ИнтеграционныйПоток, ПараметрыСообщения, СтруктураИстории = Неопределено) Экспорт | ||
|
||
ПараметрыСоединения = ЗаполнитьПараметрыПодключенияКSFTPСерверу(ИнтеграционныйПоток); | ||
Возврат пбп_ИнтеграцииFTPSFTP.ПрочитатьСообщениеSFTP(ИнтеграционныйПоток, ПараметрыСообщения, СтруктураИстории); | ||
|
||
СообщениеОбОшибке = ОпределитьТипПолученияИПолучитьСообщениеНаSFTP(ПараметрыСоединения, ПараметрыСообщения); | ||
КонецФункции |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add Missing Documentation for ПрочитатьСообщениеSFTP
The function ПрочитатьСообщениеSFTP
does not include descriptions for its parameters and return value. Adding this information will make the code more understandable and easier to maintain.
🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[warning] 423-423: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L423
Добавьте описание возвращаемого значения функции
[warning] 423-423: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L423
Необходимо добавить описание всех параметров метода
Функция УдалитьФайлSFTP(ИнтеграционныйПоток, ИмяФайла, | ||
КаталогФайла = "/", ПроверитьНаличиеПередУдалением = Истина, СтруктураИстории = Неопределено) Экспорт | ||
|
||
Возврат СообщениеОбОшибке; | ||
Возврат пбп_ИнтеграцииFTPSFTP.УдалитьФайлSFTP(ИнтеграционныйПоток, | ||
ИмяФайла, КаталогФайла, ПроверитьНаличиеПередУдалением, СтруктураИстории); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add Missing Documentation for УдалитьФайлSFTP
The function УдалитьФайлSFTP
is missing descriptions for its parameters and return value. Including detailed documentation improves code clarity and assists others in understanding its functionality.
🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[warning] 432-432: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L432
Добавьте описание возвращаемого значения функции
[warning] 432-432: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L432
Необходимо добавить описание всех параметров метода
Функция ПолучитьТекстСкриптаОтправкиCURL(ПараметрыСоединения, ПутьОтправляемогоФайла, ПутьФайлаНаСервере) | ||
|
||
ТекстСкрипта = "#!/usr/bin/bash | ||
| | ||
|curl -k ""sftp://%1%2"" --user ""%3:%4"" -T %5"; | ||
|
||
ТекстСкрипта = СтрШаблон(ТекстСкрипта, ПараметрыСоединения.Адрес, ПутьФайлаНаСервере, | ||
ПараметрыСоединения.Логин, ПараметрыСоединения.Пароль, ПутьОтправляемогоФайла); | ||
|
||
Возврат ТекстСкрипта; | ||
|
||
КонецФункции |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Avoid including passwords directly in script templates
In the function ПолучитьТекстСкриптаОтправкиCURL
, the password is embedded directly in the script (--user ""%3:%4""
). This practice poses a significant security risk as it exposes sensitive credentials in plaintext within script files.
Consider using more secure authentication methods, such as:
- SSH Key Authentication: Use SSH keys instead of passwords for authentication. This eliminates the need to include passwords in scripts.
- Secure Password Handling: If passwords must be used, avoid embedding them in scripts. Instead, prompt for the password at runtime or retrieve it securely from a protected storage.
By implementing one of these methods, you can enhance the security of your application and protect sensitive information.
Функция ПолучитьТекстСкриптаОтправкиSSHPASS(ПараметрыСоединения, ПутьОтправляемогоФайла, ПутьФайлаНаСервере) | ||
|
||
ТекстСкрипта = "#!/usr/bin/bash | ||
| | ||
|HOST=""%1"" | ||
|USERNAME=""%2"" | ||
|PASSWORD=""%3"" | ||
|PORT=%4 | ||
| | ||
|sshpass -p ""$PASSWORD"" sftp -oPort=$PORT $USERNAME@$HOST <<EOF | ||
|put %5 %6 | ||
|EOF"; | ||
|
||
ТекстСкрипта = СтрШаблон(ТекстСкрипта, ПараметрыСоединения.Адрес, ПараметрыСоединения.КаталогИсходящие, | ||
ПараметрыСоединения.Логин, ПараметрыСоединения.Пароль, ПутьОтправляемогоФайла, ПутьФайлаНаСервере); | ||
|
||
Возврат ТекстСкрипта; | ||
|
||
КонецФункции |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Avoid including passwords directly in script templates
In the function ПолучитьТекстСкриптаОтправкиSSHPASS
, the password is included within the script (PASSWORD=""%3""
). Storing passwords in scripts can lead to credential compromise if the script is accessed by unauthorized individuals.
Consider the following alternatives:
- SSH Key Authentication: Replace password-based authentication with SSH keys to eliminate the need to handle passwords.
- Secure Password Retrieval: If passwords are necessary, retrieve them securely at runtime without storing them in scripts. This can be done by prompting the user or reading from a secure vault.
Implementing these changes will improve security by reducing the risk of exposing sensitive credentials.
Функция ПолучитьТекстСкриптаОтправкиEXPECT(ПараметрыСоединения, ПутьОтправляемогоФайла, ПутьФайлаНаСервере) | ||
|
||
ТекстСкрипта = "#!/usr/bin/expect | ||
| | ||
|spawn sftp -P %1 %2@%3 | ||
|expect ""%2@%3's password:"" | ||
|send ""%4\n"" | ||
|expect ""sftp>"" | ||
|send ""put %5 %6\n"" | ||
|expect ""sftp>"" | ||
|send ""exit\n"" | ||
|interact"; | ||
|
||
ТекстСкрипта = СтрШаблон(ТекстСкрипта, ПараметрыСоединения.Порт, ПараметрыСоединения.Логин, | ||
ПараметрыСоединения.Адрес, ПараметрыСоединения.Пароль, ПутьОтправляемогоФайла, ПутьФайлаНаСервере); | ||
|
||
Возврат ТекстСкрипта; | ||
|
||
КонецФункции |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Avoid including passwords directly in script templates
In the function ПолучитьТекстСкриптаОтправкиEXPECT
, the password is sent in plaintext within the script using the send
command. This exposes sensitive information and increases the risk of credential leakage.
To enhance security, consider:
- SSH Key Authentication: Utilize SSH keys for authentication to remove the need for passwords in scripts.
- Interactive Password Prompt: Modify the script to prompt for the password interactively, ensuring it is not hard-coded.
These changes will help protect sensitive information and adhere to security best practices.
Функция ПолучитьДатуИзТестовогоФорматаBASHLinux(СтрокаСвойств) | ||
|
||
ГодЧислом = ?(СтрокаСвойств.ЭтоВремя, Год(ТекущаяДатаСеанса()), Число(СтрокаСвойств.ГодВремя)); | ||
Месяц = ПолучитьНомерМесяцаПоСтроковомуПредставлению(СтрокаСвойств.Месяц); | ||
ЧислоМесяца = СтрокаСвойств.Число; | ||
|
||
ЧасВремя = ?(СтрокаСвойств.ЭтоВремя, СтрокаСвойств.ГодВремя, "00:00"); | ||
|
||
МассивЧасВремя = пбп_СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ЧасВремя, ":"); | ||
|
||
ДатаИзменения = Дата(ГодЧислом, Месяц, ЧислоМесяца, МассивЧасВремя[0], МассивЧасВремя[1], 0); | ||
|
||
Возврат ДатаИзменения; | ||
|
||
КонецФункции | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Simplify date parsing logic to reduce complexity
The function ПолучитьДатуИзТестовогоФорматаBASHLinux
uses multiple conditional statements to parse date and time values, increasing complexity and potential for errors.
Consider refactoring the function to leverage built-in date parsing capabilities or a mapping approach. For example:
Функция ПолучитьДатуИзТестовогоФорматаBASHLinux(СтрокаСвойств)
ДатаСтрокой = СтрСоединить(" ", СтрокаСвойств.Число, СтрокаСвойств.Месяц, СтрокаСвойств.ГодВремя);
Попытка
ДатаИзменения = ДатаЗначение(ДатаСтрокой);
Исключение
ДатаИзменения = ТекущаяДатаСеанса();
КонецПопытки;
Возврат ДатаИзменения;
КонецФункции
This approach simplifies the logic by constructing a date string and using ДатаЗначение
for parsing, which reduces complexity and improves maintainability.
Разработан метод получения содержимого каталога SFTP #117; Добавлены реквизиты для хранения файла в НЕ текстовом формате в историю интеграции #112. Рефакторинг общего модуля пбп_ИнтеграцииСервер
#121 Добавление метода удаления файлов на SFTP. Содержит исправления для #124 и #125
Summary by CodeRabbit
New Features
Bug Fixes
Documentation