-
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
Add functions for ftp #108
Conversation
…равка файлов, получение файлов, проверка наличия файла)
WalkthroughThe pull request introduces updates to enhance FTP integration within the application. It adds new functionalities for handling FTP operations, modifies existing forms to better manage FTP resource configurations, and includes checks for subsystem existence. These changes improve the application's capability to manage FTP connections and refine integration settings in user interfaces. Changes
Possibly related PRs
Suggested labels
Suggested reviewers
Poem
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: 9
Outside diff range and nitpick comments (3)
src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl (1)
1995-1996
: Add parameter description and consider adding a TODO comment.The
ПриНачалеВыполненияРегламентногоЗадания
procedure is currently implemented as a stub for a BSP (Standard Subsystems Library) method. While this is intentional, there are a couple of improvements that can be made:
- Add a description for the
РегламентноеЗадание
parameter.- Consider adding a TODO comment to remind about future implementation.
Here's a suggested improvement:
-Процедура ПриНачалеВыполненияРегламентногоЗадания(РегламентноеЗадание = Неопределено) Экспорт +// Процедура-заглушка, вызываемая при начале выполнения регламентного задания. +// +// Параметры: +// РегламентноеЗадание - РегламентноеЗаданиеОбъект - Выполняемое регламентное задание. +// +Процедура ПриНачалеВыполненияРегламентногоЗадания(РегламентноеЗадание = Неопределено) Экспорт + // TODO: Реализовать обработку начала выполнения регламентного задания. КонецПроцедурыThis change adds the missing parameter description and includes a TODO comment for future implementation.
Tools
GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[warning] 1995-1995: src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl#L1995
Необходимо добавить описание всех параметров методаsrc/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl (2)
585-586
: Clarify error message for file creation failureThe error message
"Файл не был создан. Подробно: "
may not provide enough context to the user.Consider providing more detailed information or guidance in the error message to help users understand and resolve the issue.
776-783
: Include 'Экспорт' keyword for consistencyThe function
ПараметрыСоединенияFTP
does not have theЭкспорт
keyword, unlike other functions in the module. For consistency and clarity, consider adding it if the function is intended to be accessible from other modules.- Функция ПараметрыСоединенияFTP() + Функция ПараметрыСоединенияFTP() Экспорт
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (4)
- src/cf/Catalogs/пбп_ИнтеграционныеПотоки/Forms/ФормаЭлемента/Ext/Form/Module.bsl (1 hunks)
- src/cf/Catalogs/пбп_НастройкиИнтеграции/Forms/ФормаЭлемента/Ext/Form/Module.bsl (1 hunks)
- src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl (2 hunks)
- src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl (3 hunks)
Additional context used
GitHub Check: 1C: Project SubSystems Library Sonarqube Results
src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl
[notice] 547-547: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L547
Метод "ПодробноеПредставлениеОшибки" устарел. Следует использовать одноименный метод объекта типа МенеджерОбработкиОшибок
[notice] 564-564: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L564
Метод "ПодробноеПредставлениеОшибки" устарел. Следует использовать одноименный метод объекта типа МенеджерОбработкиОшибок
[notice] 607-607: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L607
Метод "ПодробноеПредставлениеОшибки" устарел. Следует использовать одноименный метод объекта типа МенеджерОбработкиОшибок
[notice] 647-647: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L647
Метод "ПодробноеПредставлениеОшибки" устарел. Следует использовать одноименный метод объекта типа МенеджерОбработкиОшибок
[failure] 542-542: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L542
Не указан таймаут при работе с внешним ресурсом
[warning] 546-546: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L546
Уберите инициализацию параметров метода "НСтр" вложенными методами
[warning] 563-563: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L563
Уберите инициализацию параметров метода "НСтр" вложенными методами
[warning] 602-602: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L602
Уберите инициализацию параметров метода "НСтр" вложенными методами
[warning] 606-606: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L606
Уберите инициализацию параметров метода "НСтр" вложенными методами
[warning] 635-635: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L635
Уберите инициализацию параметров метода "НСтр" вложенными методами
[warning] 646-646: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L646
Уберите инициализацию параметров метода "НСтр" вложенными методами
[warning] 590-590: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L590
Нужно добавить удаление временного файла после использования
[warning] 641-641: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L641
Нужно добавить удаление временного файла после использования
[warning] 532-532: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L532
Нельзя использовать латинские и кириллические символы в одном идентификатореsrc/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl
[failure] 839-839: src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl#L839
Метод ИменаПодсистем общего модуля пбп_СтандартныеПодсистемыСлужебныйПовтИсп не существует
[notice] 1513-1513: src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl#L1513
Возможная опечатка в "Мультиязычность"
[notice] 1514-1514: src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl#L1514
Возможная опечатка в "Мультиязычность"
[notice] 1514-1514: src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl#L1514
Возможная опечатка в "Мультиязычность"
[warning] 1995-1995: src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl#L1995
Необходимо добавить описание всех параметров метода
Additional comments not posted (8)
src/cf/Catalogs/пбп_ИнтеграционныеПотоки/Forms/ФормаЭлемента/Ext/Form/Module.bsl (1)
Line range hint
1-524
: Overall, the changes for FTP Resources are well-implemented.The additions for handling FTP Resources in the
УстановитьСвойстваЭлементов
procedure are consistent with the existing code structure and correctly set the appropriate form element properties. The changes are localized and don't introduce any apparent issues in the rest of the file.Two suggestions for improvement have been made:
- Extracting repeated code patterns to reduce duplication and improve maintainability.
- Adding error handling and logging for the FTP Resources section to improve robustness and debuggability.
These improvements would further enhance the quality of the code without changing its core functionality.
src/cf/Catalogs/пбп_НастройкиИнтеграции/Forms/ФормаЭлемента/Ext/Form/Module.bsl (3)
281-281
: Label change for FTP server address is correct.The change from "Путь к каталогу" (Path to the directory) to "Адрес сервера" (Server address) is appropriate for the FTP resource type. This modification accurately reflects the expected input for an FTP connection.
Line range hint
279-294
: The label change is consistent with the FTP integration type.The modification of the label to "Адрес сервера" (Server address) for FTP resources is consistent with the purpose of this integration type. This change improves the user experience by providing a more accurate description of the expected input. The rest of the conditional block remains unchanged, maintaining the overall structure and functionality of the form setup.
Line range hint
1-1006
: Overall, the code is well-structured and the change is appropriate.The modification to the FTP resource label is a small but meaningful improvement to the user interface. The entire file demonstrates good organization, with clear separation of concerns for different integration types. The consistent use of Russian naming conventions aligns with common 1C:Enterprise development practices. The change fits well within the existing structure and enhances the user experience for FTP integrations.
src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl (3)
1511-1520
: Well-implemented function for retrieving the primary language code.The
КодОсновногоЯзыка
function is correctly implemented and aligns with the AI-generated summary. It efficiently handles both cases: when the "Мультиязычность" subsystem exists and when it doesn't.The function:
- Checks for the existence of the "Мультиязычность" subsystem.
- If it exists, uses the
МультиязычностьСервер
module to get the language code.- Otherwise, falls back to
Метаданные.ОсновнойЯзык.КодЯзыка
.This implementation provides a flexible way to retrieve the primary language code, accommodating configurations with and without the multilanguage subsystem.
Tools
GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[notice] 1513-1513: src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl#L1513
Возможная опечатка в "Мультиязычность"
[notice] 1514-1514: src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl#L1514
Возможная опечатка в "Мультиязычность"
[notice] 1514-1514: src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl#L1514
Возможная опечатка в "Мультиязычность"
Line range hint
1-1999
: Overall, the module is well-structured and provides useful utility functions.The
пбп_ОбщегоНазначенияСервер
module appears to be well-organized and contains a variety of utility functions and procedures. The code style is consistent, and the reviewed functions are implemented correctly.Key observations:
- Many functions are analogues of BSP (Standard Subsystems Library) methods, which is good for maintaining compatibility and familiar interfaces.
- The module provides a wide range of utility functions, living up to its "General Purpose Server" name.
- Functions are properly exported and documented.
To further improve the module:
- Consider reviewing the remaining functions in detail to ensure they all meet the same high standards as the ones we've examined.
- Look for opportunities to add unit tests for these utility functions to ensure their correctness and prevent regressions.
- If not already done, consider creating a module-level comment explaining the purpose and scope of this module, which can help developers understand its role in the larger system.
To help with the detailed review of remaining functions, you can use this script to list all function and procedure declarations in the module:
#!/bin/bash # List all function and procedure declarations rg -i --type bsl "^(Функция|Процедура)\s+\w+" src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bslThis will help identify any functions that may need closer examination or improved documentation.
Tools
GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[failure] 839-839: src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl#L839
Метод ИменаПодсистем общего модуля пбп_СтандартныеПодсистемыСлужебныйПовтИсп не существует
817-842
: Implementation looks good, but verify the existence ofИменаПодсистем
method.The function
ПодсистемаСуществует
is well-implemented and properly documented. It checks for the existence of a functional subsystem in the configuration, which aligns with the AI-generated summary.However, there's a potential issue flagged by the static analysis tool:
Please ensure that the
ИменаПодсистем
method exists in theпбп_СтандартныеПодсистемыСлужебныйПовтИсп
module. If it doesn't exist, you may need to implement it or use an alternative method to retrieve subsystem names.Tools
GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[failure] 839-839: src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl#L839
Метод ИменаПодсистем общего модуля пбп_СтандартныеПодсистемыСлужебныйПовтИсп не существуетsrc/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl (1)
476-489
: LGTM!The function
ПараметрыСообщенияFTP
is well-defined and correctly returns the required structure.
ИначеЕсли ЭлементНаследования = Справочники.пбп_ТипыИнтеграций.FTPРесурсы Тогда | ||
Элементы.ТочкаВхода.Заголовок = НСтр("ru = 'Путь к каталогу на сервере'"); | ||
|
||
пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( | ||
Элементы, "ТочкаВхода", УстанавливаемоеСвойство, Истина); | ||
пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( | ||
Элементы, "ПараметрыВхода", УстанавливаемоеСвойство, Ложь); | ||
пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( | ||
Элементы, "ПользовательскаяФункция", УстанавливаемоеСвойство, | ||
РеквизитыОбъекта.ИспользоватьПользовательскиеФункции); |
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.
LGTM! Consider extracting repeated code patterns.
The changes for handling FTP Resources are consistent with the existing code structure and correctly set the appropriate form element properties. Good job on maintaining consistency with other integration types.
Consider extracting the repeated pattern of setting form element properties into a separate helper function to reduce code duplication and improve maintainability. For example:
&НаСервере
Процедура УстановитьСвойствоЭлементаФормы(ИмяЭлемента, Свойство, Значение)
пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы, ИмяЭлемента, Свойство, Значение);
КонецПроцедуры
// Usage in the main procedure
УстановитьСвойствоЭлементаФормы("ТочкаВхода", УстанавливаемоеСвойство, Истина);
УстановитьСвойствоЭлементаФормы("ПараметрыВхода", УстанавливаемоеСвойство, Ложь);
УстановитьСвойствоЭлементаФормы("ПользовательскаяФункция", УстанавливаемоеСвойство, РеквизитыОбъекта.ИспользоватьПользовательскиеФункции);
This refactoring would make the code more concise and easier to maintain.
Consider adding error handling and logging for FTP Resources.
While the changes for FTP Resources are well-integrated, it would be beneficial to add error handling and logging to improve the robustness and debuggability of the code.
Consider wrapping the FTP Resources section in a try-catch block and adding logging. For example:
ИначеЕсли ЭлементНаследования = Справочники.пбп_ТипыИнтеграций.FTPРесурсы Тогда
Попытка
Элементы.ТочкаВхода.Заголовок = НСтр("ru = 'Путь к каталогу на сервере'");
УстановитьСвойствоЭлементаФормы("ТочкаВхода", УстанавливаемоеСвойство, Истина);
УстановитьСвойствоЭлементаФормы("ПараметрыВхода", УстанавливаемоеСвойство, Ложь);
УстановитьСвойствоЭлементаФормы("ПользовательскаяФункция", УстанавливаемоеСвойство, РеквизитыОбъекта.ИспользоватьПользовательскиеФункции);
ЗаписьЖурналаРегистрации("УстановитьСвойстваЭлементов", УровеньЖурналаРегистрации.Информация,
Метаданные.Справочники.пбп_ИнтеграционныеПотоки,,
"Успешно установлены свойства элементов для FTP ресурсов");
Исключение
ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ЗаписьЖурналаРегистрации("УстановитьСвойстваЭлементов", УровеньЖурналаРегистрации.Ошибка,
Метаданные.Справочники.пбп_ИнтеграционныеПотоки,,
"Ошибка при установке свойств элементов для FTP ресурсов: " + ТекстОшибки);
ВызватьИсключение;
КонецПопытки;
This addition will help in identifying and troubleshooting any issues that may arise when handling FTP Resources.
FTPСоединение = Новый FTPСоединение(ПараметрыСоединения.Адрес, | ||
Порт, ПараметрыСоединения.Логин, ПараметрыСоединения.Пароль); |
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.
Specify a timeout when connecting to external resources
No timeout is specified when creating the FTPСоединение
object. This can lead to potential hangs or long delays if the FTP server is unresponsive.
Consider specifying a timeout value when creating the FTP connection:
- FTPСоединение = Новый FTPСоединение(ПараметрыСоединения.Адрес,
- Порт, ПараметрыСоединения.Логин, ПараметрыСоединения.Пароль);
+ FTPСоединение = Новый FTPСоединение(ПараметрыСоединения.Адрес,
+ Порт, ПараметрыСоединения.Логин, ПараметрыСоединения.Пароль, ТаймаутСоединения);
Ensure that ТаймаутСоединения
is defined appropriately, for example:
ТаймаутСоединения = 30; // Таймаут в секундах
Tools
GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[failure] 542-542: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L542
Не указан таймаут при работе с внешним ресурсом
Inconsistent use of parameter names: 'Логин' vs 'ИмяПользователя'
There is an inconsistency in the parameter names used for the username. In ПолучитьПараметрыПодключенияFTPSFTP
, the username is stored in ПараметрыСоединения.ИмяПользователя
, but when creating the FTPСоединение
, you are using ПараметрыСоединения.Логин
.
To maintain consistency and avoid confusion, use the same property name throughout:
- Если СтруктураНастроек.Свойство("Логин") Тогда
- ПараметрыСоединения.ИмяПользователя = СтруктураНастроек.Логин.Значение;
+ Если СтруктураНастроек.Свойство("Логин") Тогда
+ ПараметрыСоединения.Логин = СтруктураНастроек.Логин.Значение;
...
- FTPСоединение = Новый FTPСоединение(ПараметрыСоединения.Адрес,
- Порт, ПараметрыСоединения.Логин, ПараметрыСоединения.Пароль);
+ FTPСоединение = Новый FTPСоединение(ПараметрыСоединения.Адрес,
+ Порт, ПараметрыСоединения.Логин, ПараметрыСоединения.Пароль);
Alternatively, you can change the property in ПараметрыСоединения
to ИмяПользователя
and use it consistently.
Committable suggestion was skipped due to low confidence.
Tools
GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[failure] 542-542: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L542
Не указан таймаут при работе с внешним ресурсом
СообщениеОбОшибке = НСтр(СтрШаблон("ru = '%1%2'", | ||
ЗаголовокОшибки, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()))); |
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 updated error handling methods
The method ПодробноеПредставлениеОшибки
is deprecated. It's recommended to use the same method from the МенеджерОбработкиОшибок
object.
Update your error handling code as follows:
- СообщениеОбОшибке = НСтр(СтрШаблон("ru = '%1%2'",
- ЗаголовокОшибки, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
+ МенеджерОшибок = Новый МенеджерОбработкиОшибок();
+ СообщениеОбОшибке = НСтр("ru = '%1%2'").СтрЗаменить("%1", ЗаголовокОшибки).СтрЗаменить("%2", МенеджерОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
Apply this change to all occurrences where ПодробноеПредставлениеОшибки
is used:
- Lines 546-547
- Lines 563-564
- Lines 606-607
- Lines 646-647
Also applies to: 563-564, 606-607, 646-647
Tools
GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[notice] 547-547: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L547
Метод "ПодробноеПредставлениеОшибки" устарел. Следует использовать одноименный метод объекта типа МенеджерОбработкиОшибок
[warning] 546-546: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L546
Уберите инициализацию параметров метода "НСтр" вложенными методами
Avoid initializing 'НСтр' parameters with nested method calls
Initializing parameters of the НСтр
method with nested methods like СтрШаблон
decreases code readability.
Refactor the code to separate method calls:
- СообщениеОбОшибке = НСтр(СтрШаблон("ru = '%1%2'", ЗаголовокОшибки, ДеталиОшибки));
+ ТекстСообщения = СтрШаблон("%1%2", ЗаголовокОшибки, ДеталиОшибки);
+ СообщениеОбОшибке = НСтр("ru = '%1'").СтрЗаменить("%1", ТекстСообщения);
This enhances readability and maintains the functionality.
Apply this refactoring to the relevant lines.
Also applies to: 563-564, 606-607, 635-636, 646-647
Tools
GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[notice] 547-547: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L547
Метод "ПодробноеПредставлениеОшибки" устарел. Следует использовать одноименный метод объекта типа МенеджерОбработкиОшибок
[warning] 546-546: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L546
Уберите инициализацию параметров метода "НСтр" вложенными методами
ФайлыНаРесурсе = FTPСоединение.НайтиФайлы(КаталогПоиска); | ||
Для Каждого ФайлНаСервере Из ФайлыНаРесурсе Цикл | ||
Если ПоТочномуСовпадению Тогда | ||
Если ВРег(ФайлНаСервере) = ВРег(ИмяФайла) Тогда | ||
Результат = Истина; | ||
Прервать; | ||
КонецЕсли; | ||
Иначе | ||
Если СтрНайти(ВРег(ФайлНаСервере), ВРег(ИмяФайла), НаправлениеПоиска.СНачала) > 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.
Optimize file search on FTP server
The method ПроверитьФайлЕстьНаFTP
retrieves the entire list of files in the directory and iterates over them to find the desired file. This may lead to performance issues if the directory contains a large number of files.
Consider using a method that checks for the existence of a file directly, if available, or optimizes the search to prevent performance degradation.
// Возвращаемое значение: | ||
// FTPСоединение, Строка - возвращает FTP-соединение по указанным настройкам, либо строку с описанием ошибки | ||
// | ||
Функция ВыполнитьПодключениеКFTPСерверуДляИнтеграционногоПотока(ИнтеграционныйПоток) Экспорт |
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 mixing Latin and Cyrillic characters in identifiers
The function name ВыполнитьПодключениеКFTPСерверуДляИнтеграционногоПотока
mixes Latin letters ("FTP") with Cyrillic letters. This can lead to confusion and potential errors. Consider using consistent character sets in identifiers.
You can rename the function to use only Cyrillic characters:
- Функция ВыполнитьПодключениеКFTPСерверуДляИнтеграционногоПотока(ИнтеграционныйПоток) Экспорт
+ Функция ВыполнитьПодключениеКФТПСерверуДляИнтеграционногоПотока(ИнтеграционныйПоток) Экспорт
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.
Функция ВыполнитьПодключениеКFTPСерверуДляИнтеграционногоПотока(ИнтеграционныйПоток) Экспорт | |
Функция ВыполнитьПодключениеКФТПСерверуДляИнтеграционногоПотока(ИнтеграционныйПоток) Экспорт |
Tools
GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[warning] 532-532: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L532
Нельзя использовать латинские и кириллические символы в одном идентификаторе
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 (1)
src/cf/CommonModules/пбп_СтандартныеПодсистемыСлужебныйПовтИсп/Ext/Module.bsl (1)
33-34
: Add return value description to the function comment.The function comment is missing a description of the return value. To improve code documentation and address the static analysis warning, please add information about what the function returns.
Here's a suggested improvement:
-// См. пбп_СтандартныеПодсистемыПовтИсп.ИменаПодсистем. +// См. пбп_СтандартныеПодсистемыПовтИсп.ИменаПодсистем. +// +// Возвращаемое значение: +// <Тип возвращаемого значения> - <Описание возвращаемого значения>Replace
<Тип возвращаемого значения>
and<Описание возвращаемого значения>
with the appropriate information based on whatпбп_СтандартныеПодсистемыПовтИсп.ИменаПодсистем
returns.🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[warning] 34-34: src/cf/CommonModules/пбп_СтандартныеПодсистемыСлужебныйПовтИсп/Ext/Module.bsl#L34
Добавьте описание возвращаемого значения функции
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (5)
- .bsl-language-server.json (1 hunks)
- src/cf/Catalogs/пбп_ИнтеграционныеПотоки/Forms/ФормаЭлемента/Ext/Form/Module.bsl (1 hunks)
- src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl (2 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 (1)
- src/cf/Catalogs/пбп_ИнтеграционныеПотоки/Forms/ФормаЭлемента/Ext/Form/Module.bsl
🧰 Additional context used
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl
[warning] 610-610: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L610
Вместо синхронного методаУдалитьФайлы
необходимо использоватьНачатьУдалениеФайлов
[warning] 548-548: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L548
Уберите инициализацию параметров метода "НСтр" вложенными методами
[warning] 593-593: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L593
Нужно добавить удаление временного файла после использования
[notice] 549-549: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L549
Метод "ПодробноеПредставлениеОшибки" устарел. Следует использовать одноименный метод объекта типа МенеджерОбработкиОшибокsrc/cf/CommonModules/пбп_СтандартныеПодсистемыСлужебныйПовтИсп/Ext/Module.bsl
[warning] 34-34: src/cf/CommonModules/пбп_СтандартныеПодсистемыСлужебныйПовтИсп/Ext/Module.bsl#L34
Добавьте описание возвращаемого значения функции
🔇 Additional comments (9)
.bsl-language-server.json (1)
13-13
: LGTM! The addition is consistent with the PR objectives.The new excluded word "ВыполнитьПодключениеКFTPСерверуДляИнтеграционногоПотока" (which translates to "PerformConnectionToFTPServerForIntegrationFlow") is appropriate and aligns with the PR's goal of adding FTP functions. It follows the existing pattern of excluded words, mixing Cyrillic and Latin characters in CamelCase.
To ensure comprehensive coverage, please verify if there are any other FTP-related terms that should be excluded. You can use the following script to search for potential candidates:
This will help identify any other FTP-related terms that might need to be added to the
excludeWords
list for consistency.✅ Verification successful
All FTP-related terms are now excluded consistently.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Search for FTP-related terms in the codebase that might need exclusion # Test: Search for FTP-related terms in .bsl files rg --type bsl -i '\bftp\b' -C 2Length of output: 61
Script:
#!/bin/bash # Description: Search for FTP-related terms in the codebase that might need exclusion # Test: Search for FTP-related terms in .bsl files rg -i '\bftp\b' -C 2 -g '*.bsl'Length of output: 8646
src/cf/CommonModules/пбп_СтандартныеПодсистемыСлужебныйПовтИсп/Ext/Module.bsl (2)
33-39
: Implementation looks good, follows existing patterns.The new function
ИменаПодсистем()
is correctly implemented and follows the existing pattern in the file for method redirection. It properly uses theПолучитьМодуль()
function to get the required module and then calls the corresponding method on it.🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[warning] 34-34: src/cf/CommonModules/пбп_СтандартныеПодсистемыСлужебныйПовтИсп/Ext/Module.bsl#L34
Добавьте описание возвращаемого значения функции
33-39
: Verify the impact and usage of the new function.The addition of
ИменаПодсистем()
expands the module's functionality. To ensure this change aligns with the module's purpose and doesn't introduce unintended side effects:
- Confirm that this addition is related to the FTP functions mentioned in the PR description.
- Verify that any code calling this new function is prepared to handle its return value correctly.
- Check if there are any performance implications, especially if this function might be called frequently.
To help with verification, you can run the following script to find potential usages of this new function:
This will help identify any immediate impacts on other parts of the codebase.
✅ Verification successful
Usage of
ИменаПодсистем()
verified successfully.
- Found usage in
src/cf/CommonModules/пбп_ОбщегоНазначенияСервер/Ext/Module.bsl
where the function's return value is properly handled.🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Search for potential usages of ИменаПодсистем() in the codebase rg --type bsl "ИменаПодсистем\(\)" -g '!**/пбп_СтандартныеПодсистемыСлужебныйПовтИсп/**'Length of output: 118
Script:
#!/bin/bash # Search for potential usages of ИменаПодсистем() in .bsl files, excluding specific directory rg "ИменаПодсистем\(\)" -g '*.bsl' -g '!**/пбп_СтандартныеПодсистемыСлужебныйПовтИсп/**'Length of output: 333
Script:
#!/bin/bash # Retrieve lines around the usage of ИменаПодсистем() to understand its context rg "ИменаПодсистем\(\)" -g '*.bsl' -A 3 -B 3Length of output: 2334
🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[warning] 34-34: src/cf/CommonModules/пбп_СтандартныеПодсистемыСлужебныйПовтИсп/Ext/Module.bsl#L34
Добавьте описание возвращаемого значения функцииsrc/cf/CommonModules/пбп_СтандартныеПодсистемыПовтИсп/Ext/Module.bsl (2)
40-47
: Documentation is clear and accurateThe comments for the
ИменаПодсистем()
function effectively describe its purpose, return value, and usage, making it easy for other developers to understand.
48-55
: Function implementation is correctThe
ИменаПодсистем()
function correctly initializes the correspondence, populates it by callingВставитьИменаПодчиненныхПодсистем
, and returns a newФиксированноеСоответствие
. The logic is sound and follows best practices.src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl (4)
483-488
: LGTMThe function
ПараметрыСообщенияFTP
correctly defines the structure for FTP message parameters. The implementation is clear and follows best practices.
508-545
: Inconsistent use of 'Логин' and 'ИмяПользователя' in connection parametersThere is inconsistency in using
Логин
andИмяПользователя
withinПараметрыСоединения
. This may lead to confusion or errors when establishing the FTP connection. Please ensure consistent naming throughout the code to maintain clarity.
548-549
: Avoid initializing parameters of 'НСтр' with nested method callsInitializing the parameters of the
НСтр
method with nested methods likeСтрШаблон
decreases code readability. Refactoring can enhance the clarity of the code.🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[warning] 548-548: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L548
Уберите инициализацию параметров метода "НСтр" вложенными методами
[notice] 549-549: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L549
Метод "ПодробноеПредставлениеОшибки" устарел. Следует использовать одноименный метод объекта типа МенеджерОбработкиОшибок
549-549
: Use updated error handling methodsThe method
ПодробноеПредставлениеОшибки
is deprecated. It's recommended to use the same method from theМенеджерОбработкиОшибок
object for improved error handling.🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[notice] 549-549: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L549
Метод "ПодробноеПредставлениеОшибки" устарел. Следует использовать одноименный метод объекта типа МенеджерОбработкиОшибок
|
||
Для Каждого ТекущаяПодсистема Из РодительскаяПодсистема.Подсистемы Цикл | ||
|
||
Если ТекущаяПодсистема.ВключатьВКомандныйИнтерфейс Тогда | ||
Продолжить; | ||
КонецЕсли; | ||
|
||
ИмяТекущейПодсистемы = ИмяРодительскойПодсистемы + ТекущаяПодсистема.Имя; | ||
Имена.Вставить(ИмяТекущейПодсистемы, Истина); | ||
|
||
Если ТекущаяПодсистема.Подсистемы.Количество() = 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.
Potential issue with subsystem name concatenation
In line 69, when assembling ИмяТекущейПодсистемы
, the parent subsystem name and the current subsystem name are concatenated without a separator. This may result in names like "ParentSubsystemChildSubsystem"
instead of "ParentSubsystem.ChildSubsystem"
. However, in line 76, a dot is appended when passing the name to the recursive call, which can cause inconsistencies in the subsystem names.
To ensure consistent and correctly formatted subsystem names, consider modifying the concatenation to include a separator when the ИмяРодительскойПодсистемы
is not empty. Here's a suggested fix:
- ИмяТекущейПодсистемы = ИмяРодительскойПодсистемы + ТекущаяПодсистема.Имя;
+ Если ПустаяСтрока(ИмяРодительскойПодсистемы) Тогда
+ ИмяТекущейПодсистемы = ТекущаяПодсистема.Имя;
+ Иначе
+ ИмяТекущейПодсистемы = ИмяРодительскойПодсистемы + "." + ТекущаяПодсистема.Имя;
+ КонецЕсли;
This adjustment will produce subsystem names like "ParentSubsystem.ChildSubsystem"
, ensuring consistency throughout.
📝 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.
Процедура ВставитьИменаПодчиненныхПодсистем(Имена, РодительскаяПодсистема, ИмяРодительскойПодсистемы = "") | |
Для Каждого ТекущаяПодсистема Из РодительскаяПодсистема.Подсистемы Цикл | |
Если ТекущаяПодсистема.ВключатьВКомандныйИнтерфейс Тогда | |
Продолжить; | |
КонецЕсли; | |
ИмяТекущейПодсистемы = ИмяРодительскойПодсистемы + ТекущаяПодсистема.Имя; | |
Имена.Вставить(ИмяТекущейПодсистемы, Истина); | |
Если ТекущаяПодсистема.Подсистемы.Количество() = 0 Тогда | |
Продолжить; | |
КонецЕсли; | |
ВставитьИменаПодчиненныхПодсистем(Имена, ТекущаяПодсистема, ИмяТекущейПодсистемы + "."); | |
КонецЦикла; | |
КонецПроцедуры | |
Процедура ВставитьИменаПодчиненныхПодсистем(Имена, РодительскаяПодсистема, ИмяРодительскойПодсистемы = "") | |
Для Каждого ТекущаяПодсистема Из РодительскаяПодсистема.Подсистемы Цикл | |
Если ТекущаяПодсистема.ВключатьВКомандныйИнтерфейс Тогда | |
Продолжить; | |
КонецЕсли; | |
Если ПустаяСтрока(ИмяРодительскойПодсистемы) Тогда | |
ИмяТекущейПодсистемы = ТекущаяПодсистема.Имя; | |
Иначе | |
ИмяТекущейПодсистемы = ИмяРодительскойПодсистемы + "." + ТекущаяПодсистема.Имя; | |
КонецЕсли; | |
Имена.Вставить(ИмяТекущейПодсистемы, Истина); | |
Если ТекущаяПодсистема.Подсистемы.Количество() = 0 Тогда | |
Продолжить; | |
КонецЕсли; | |
ВставитьИменаПодчиненныхПодсистем(Имена, ТекущаяПодсистема, ИмяТекущейПодсистемы + "."); | |
КонецЦикла; | |
КонецПроцедуры |
ФайлыНаРесурсе = FTPСоединение.НайтиФайлы(КаталогПоиска); | ||
Для Каждого ФайлНаСервере Из ФайлыНаРесурсе Цикл | ||
Если ПоТочномуСовпадению Тогда | ||
Если ВРег(ФайлНаСервере) = ВРег(ИмяФайла) Тогда | ||
Результат = Истина; | ||
Прервать; | ||
КонецЕсли; | ||
Иначе | ||
Если СтрНайти(ВРег(ФайлНаСервере), ВРег(ИмяФайла), НаправлениеПоиска.СНачала) > 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.
Optimize file existence check to improve performance
Currently, the method retrieves the entire list of files from the directory and iterates over them to find the desired file. This approach can lead to performance issues if the directory contains a large number of files.
Consider using a method that checks for the existence of a specific file directly, if available in the FTPСоединение
class, such as a СуществуетФайл
method. This would improve performance by avoiding unnecessary retrieval and iteration over all files.
НовыйФайл = ПолучитьИмяВременногоФайла(ПараметрыСообщения.Расширение); | ||
ПараметрыСообщения.Данные.Записать(НовыйФайл); | ||
ПараметрыСообщения.Путь = НовыйФайл; | ||
КонецЕсли; |
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.
Ensure temporary files are deleted after use to prevent resource leaks
Currently, the temporary file НовыйФайл
may not be deleted if an exception occurs, potentially leading to resource leaks. Consider adding deletion of the temporary file in the exception handling block to ensure it is always cleaned up.
Apply this diff to ensure the temporary file is deleted even when an exception occurs:
Попытка
Если ПустаяСтрока(ПараметрыСообщения.Путь) Тогда
НовыйФайл = ПолучитьИмяВременногоФайла(ПараметрыСообщения.Расширение);
ПараметрыСообщения.Данные.Записать(НовыйФайл);
ПараметрыСообщения.Путь = НовыйФайл;
КонецЕсли;
...
УдалитьФайлы(НовыйФайл);
Исключение
+ Если ФайлСуществует(НовыйФайл) Тогда
+ УдалитьФайлы(НовыйФайл);
+ КонецЕсли;
ПолноеОписаниеОшибки = СтрШаблон("ru = '%1%2'",
ЗаголовокОшибки, ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
СообщениеОбОшибке = НСтр(ПолноеОписаниеОшибки);
КонецПопытки;
Committable suggestion was skipped due to low confidence.
🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[warning] 593-593: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L593
Нужно добавить удаление временного файла после использования
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (1)
- src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl (2 hunks)
🧰 Additional context used
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl
[warning] 614-614: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L614
Вместо синхронного методаУдалитьФайлы
необходимо использоватьНачатьУдалениеФайлов
🔇 Additional comments (4)
src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl (4)
508-545
: Inconsistent use of 'ИмяПользователя' and 'Логин' in FTP connection parametersThere is an inconsistency in the parameter names used for the username. In
ПолучитьПараметрыПодключенияFTPSFTP
, the username is stored inПараметрыСоединения.ИмяПользователя
(line 508), but when creating theFTPСоединение
, you are usingПараметрыСоединения.Логин
(line 545).To maintain consistency and avoid confusion, use the same property name throughout the code. Consider standardizing on either
ИмяПользователя
orЛогин
.
549-549
: Use updated error handling methodsThe method
ОбработкаОшибок.ПодробноеПредставлениеОшибки
is deprecated. It's recommended to use theПодробноеПредставлениеОшибки
method from theМенеджерОбработкиОшибок
object.Also applies to: 567-567, 617-617
682-699
: Optimize file existence check to improve performanceThe method
ПроверитьФайлЕстьНаFTP
retrieves the entire list of files and iterates over them to find the desired file. This can lead to performance issues if the directory contains a large number of files.Consider using a method that checks for the existence of a specific file directly, if available in the
FTPСоединение
class, such as aСуществуетФайл
method. This would improve performance by avoiding unnecessary iteration.
793-798
: Inconsistent use of 'Логин' and 'ИмяПользователя' in connection parametersIn the function
ПараметрыСоединенияFTP
, the structure uses the keyЛогин
, but elsewhere in the codeИмяПользователя
is used for the username. For consistency and to avoid confusion, it's recommended to use the same key throughout the codebase.
СообщениеОбОшибке = НСтр(ПолноеОписаниеОшибки); | ||
КонецЕсли; | ||
|
||
УдалитьФайлы(НовыйФайл); |
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
Use asynchronous file deletion to prevent blocking operations
Consider using НачатьУдалениеФайлов
instead of the synchronous method УдалитьФайлы
to delete files asynchronously. This will prevent blocking the main thread and improve performance.
Apply this diff to make the change:
- УдалитьФайлы(НовыйФайл);
+ НачатьУдалениеФайлов(НовыйФайл);
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
УдалитьФайлы(НовыйФайл); | |
НачатьУдалениеФайлов(НовыйФайл); |
🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[warning] 614-614: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L614
Вместо синхронного методаУдалитьФайлы
необходимо использоватьНачатьУдалениеФайлов
Если ПустаяСтрока(ПараметрыСообщения.Путь) Тогда | ||
// BSLLS:MissingTemporaryFileDeletion-off | ||
// Необходимо пропустить проверку, так как файл удаляется позже | ||
НовыйФайл = ПолучитьИмяВременногоФайла(ПараметрыСообщения.Расширение); | ||
// BSLLS:MissingTemporaryFileDeletion-on | ||
ПараметрыСообщения.Данные.Записать(НовыйФайл); | ||
ПараметрыСообщения.Путь = НовыйФайл; | ||
КонецЕсли; | ||
|
||
НовоеИмяФайлаНаСервере = СтрШаблон("%1.%2", ПараметрыСообщения.ИмяФайла, ПараметрыСообщения.Расширение); | ||
ПодключениеКFTP.Записать(ПараметрыСообщения.Путь, НовоеИмяФайлаНаСервере); | ||
|
||
// Повторно проверяем наличие записанного файла | ||
КаталогИсходящие = ПодключениеКFTP.ТекущийКаталог(); | ||
|
||
Если Не ПроверитьФайлЕстьНаFTP(ПодключениеКFTP, НовоеИмяФайлаНаСервере, КаталогИсходящие) Тогда | ||
ПолноеОписаниеОшибки = СтрШаблон("ru = '%1%2'", | ||
ЗаголовокОшибки, "подробности уточните у администратора системы"); | ||
СообщениеОбОшибке = НСтр(ПолноеОписаниеОшибки); | ||
КонецЕсли; | ||
|
||
УдалитьФайлы(НовыйФайл); | ||
Исключение | ||
ПолноеОписаниеОшибки = СтрШаблон("ru = '%1%2'", | ||
ЗаголовокОшибки, ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); | ||
СообщениеОбОшибке = НСтр(ПолноеОписаниеОшибки); | ||
КонецПопытки; |
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.
Ensure temporary files are deleted after exceptions to prevent resource leaks
If an exception occurs after creating the temporary file НовыйФайл
, it may not be deleted, potentially leading to resource leaks. To ensure the temporary file is always cleaned up, add deletion of the file in the exception handling block.
Apply this diff to ensure the temporary file is deleted even when an exception occurs:
УдалитьФайлы(НовыйФайл);
Исключение
+ Если ФайлСуществует(НовыйФайл) Тогда
+ УдалитьФайлы(НовыйФайл);
+ КонецЕсли;
ПолноеОписаниеОшибки = СтрШаблон("ru = '%1%2'",
ЗаголовокОшибки, ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
СообщениеОбОшибке = НСтр(ПолноеОписаниеОшибки);
КонецПопытки;
📝 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.
Если ПустаяСтрока(ПараметрыСообщения.Путь) Тогда | |
// BSLLS:MissingTemporaryFileDeletion-off | |
// Необходимо пропустить проверку, так как файл удаляется позже | |
НовыйФайл = ПолучитьИмяВременногоФайла(ПараметрыСообщения.Расширение); | |
// BSLLS:MissingTemporaryFileDeletion-on | |
ПараметрыСообщения.Данные.Записать(НовыйФайл); | |
ПараметрыСообщения.Путь = НовыйФайл; | |
КонецЕсли; | |
НовоеИмяФайлаНаСервере = СтрШаблон("%1.%2", ПараметрыСообщения.ИмяФайла, ПараметрыСообщения.Расширение); | |
ПодключениеКFTP.Записать(ПараметрыСообщения.Путь, НовоеИмяФайлаНаСервере); | |
// Повторно проверяем наличие записанного файла | |
КаталогИсходящие = ПодключениеКFTP.ТекущийКаталог(); | |
Если Не ПроверитьФайлЕстьНаFTP(ПодключениеКFTP, НовоеИмяФайлаНаСервере, КаталогИсходящие) Тогда | |
ПолноеОписаниеОшибки = СтрШаблон("ru = '%1%2'", | |
ЗаголовокОшибки, "подробности уточните у администратора системы"); | |
СообщениеОбОшибке = НСтр(ПолноеОписаниеОшибки); | |
КонецЕсли; | |
УдалитьФайлы(НовыйФайл); | |
Исключение | |
ПолноеОписаниеОшибки = СтрШаблон("ru = '%1%2'", | |
ЗаголовокОшибки, ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); | |
СообщениеОбОшибке = НСтр(ПолноеОписаниеОшибки); | |
КонецПопытки; | |
Если ПустаяСтрока(ПараметрыСообщения.Путь) Тогда | |
// BSLLS:MissingTemporaryFileDeletion-off | |
// Необходимо пропустить проверку, так как файл удаляется позже | |
НовыйФайл = ПолучитьИмяВременногоФайла(ПараметрыСообщения.Расширение); | |
// BSLLS:MissingTemporaryFileDeletion-on | |
ПараметрыСообщения.Данные.Записать(НовыйФайл); | |
ПараметрыСообщения.Путь = НовыйФайл; | |
КонецЕсли; | |
НовоеИмяФайлаНаСервере = СтрШаблон("%1.%2", ПараметрыСообщения.ИмяФайла, ПараметрыСообщения.Расширение); | |
ПодключениеКFTP.Записать(ПараметрыСообщения.Путь, НовоеИмяФайлаНаСервере); | |
// Повторно проверяем наличие записанного файла | |
КаталогИсходящие = ПодключениеКFTP.ТекущийКаталог(); | |
Если Не ПроверитьФайлЕстьНаFTP(ПодключениеКFTP, НовоеИмяФайлаНаСервере, КаталогИсходящие) Тогда | |
ПолноеОписаниеОшибки = СтрШаблон("ru = '%1%2'", | |
ЗаголовокОшибки, "подробности уточните у администратора системы"); | |
СообщениеОбОшибке = НСтр(ПолноеОписаниеОшибки); | |
КонецЕсли; | |
УдалитьФайлы(НовыйФайл); | |
Исключение | |
Если ФайлСуществует(НовыйФайл) Тогда | |
УдалитьФайлы(НовыйФайл); | |
КонецЕсли; | |
ПолноеОписаниеОшибки = СтрШаблон("ru = '%1%2'", | |
ЗаголовокОшибки, ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); | |
СообщениеОбОшибке = НСтр(ПолноеОписаниеОшибки); | |
КонецПопытки; |
🧰 Tools
🪛 GitHub Check: 1C: Project SubSystems Library Sonarqube Results
[warning] 614-614: src/cf/CommonModules/пбп_ИнтеграцииСервер/Ext/Module.bsl#L614
Вместо синхронного методаУдалитьФайлы
необходимо использоватьНачатьУдалениеФайлов
#100
Summary by CodeRabbit
New Features
Bug Fixes