-
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
Feature/predefined id unique check 92 #118
Changes from 3 commits
d33632f
5b45f7d
a5569b1
00a86f6
86f9662
9f9300d
2bb7d32
4583ef8
675c1eb
dc2601e
223e7fe
7330b5b
3c8f9b0
020550e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда | ||
|
||
#Область ОбработчикиСобытий | ||
|
||
Процедура ПередЗаписью(Отказ) | ||
ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый()); | ||
КонецПроцедуры | ||
|
||
Процедура ПриЗаписи(Отказ) | ||
Если Не пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Suggestion: Use 'СуществуетСвойство' method for clarity For better readability and to directly check the existence of the Если Не ДополнительныеСвойства.СуществуетСвойство("ЭтоНовый") Тогда This makes the code more intuitive and eliminates the need for the external utility function. Apply this diff to implement the suggestion: - Если Не пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда
+ Если Не ДополнительныеСвойства.СуществуетСвойство("ЭтоНовый") Тогда |
||
РегистрыСведений.пбп_СостоянияПредопределенныхЭлементов.ОбновитьХешЭлемента(ЭтотОбъект.Ссылка, ЭтотОбъект.ЭтоГруппа); | ||
КонецЕсли; | ||
КонецПроцедуры | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 💡 Codebase verification Condition in The condition checking for the absence of the 🔗 Analysis chainVerify the condition in 'ПриЗаписи' procedure regarding 'ЭтоНовый' property In the Если Не пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда Since Run the following script to identify any modifications to 🏁 Scripts executedThe following scripts were executed for the analysis: Script: #!/bin/bash
# Description: Search for any modifications to 'ДополнительныеСвойства' in the object module
# Test: Find procedures that modify 'ДополнительныеСвойства'. Expect: Any procedures that might remove or alter 'ЭтоНовый'.
ast-grep --lang bsl --pattern $'Процедура $_($_)
$$$
ДополнительныеСвойства = $_
$$$
КонецПроцедуры' --json
Length of output: 1383 Script: #!/bin/bash
# Description: Search for any assignments to 'ДополнительныеСвойства' in the codebase
# Find any lines where 'ДополнительныеСвойства' is assigned a new value
rg --type bsl 'ДополнительныеСвойства\s*='
Length of output: 72 Script: #!/bin/bash
# Description: Define 'bsl' file type and search for assignments to 'ДополнительныеСвойства' in the codebase
# Add 'bsl' file type associated with .bsl extension
rg --type-add 'bsl:*.bsl' --type bsl 'ДополнительныеСвойства\s*='
Length of output: 694 |
||
|
||
#КонецОбласти | ||
|
||
#КонецЕсли |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
| ||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда | ||
|
||
#Область ОбработчикиСобытий | ||
|
||
Процедура ПередЗаписью(Отказ) | ||
ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый()); | ||
КонецПроцедуры | ||
|
||
Процедура ПриЗаписи(Отказ) | ||
Если Не пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда | ||
РегистрыСведений.пбп_СостоянияПредопределенныхЭлементов.ОбновитьХешЭлемента(ЭтотОбъект.Ссылка, ЭтотОбъект.ЭтоГруппа); | ||
КонецЕсли; | ||
КонецПроцедуры | ||
|
||
#КонецОбласти | ||
|
||
#КонецЕсли |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,20 @@ | ||
| ||
| ||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда | ||
|
||
#Область ОбработчикиСобытий | ||
|
||
Процедура ПередЗаписью(Отказ) | ||
ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый()); | ||
КонецПроцедуры | ||
|
||
Процедура ПриЗаписи(Отказ) | ||
Если Не пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда | ||
РегистрыСведений.пбп_СостоянияПредопределенныхЭлементов.ОбновитьХешЭлемента(ЭтотОбъект.Ссылка, ЭтотОбъект.ЭтоГруппа); | ||
КонецЕсли; | ||
КонецПроцедуры | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Verify the correct usage of 'СвойствоСтруктуры' function In the Consider modifying the code to correctly check for the property's existence: Перем ЗначениеЭтоНовый;
Если Не пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", ЗначениеЭтоНовый) Тогда
РегистрыСведений.пбп_СостоянияПредопределенныхЭлементов.ОбновитьХешЭлемента(ЭтотОбъект.Ссылка, ЭтотОбъект.ЭтоГруппа);
КонецЕсли; Alternatively, if you only need to check for the existence of the property, you might use: Если Не ДополнительныеСвойства.Содержит("ЭтоНовый") Тогда
РегистрыСведений.пбп_СостоянияПредопределенныхЭлементов.ОбновитьХешЭлемента(ЭтотОбъект.Ссылка, ЭтотОбъект.ЭтоГруппа);
КонецЕсли; |
||
|
||
#КонецОбласти | ||
|
||
#КонецЕсли | ||
|
||
Check notice on line 19 in src/cf/ChartsOfCharacteristicTypes/пбп_ПредопределенныеЗначения/Ext/ObjectModule.bsl sonar.openbsl.ru qa-bot / 1C: Project SubSystems Library Sonarqube Resultssrc/cf/ChartsOfCharacteristicTypes/пбп_ПредопределенныеЗначения/Ext/ObjectModule.bsl#L19
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.16"> | ||
<CommonForm uuid="166e97da-eea9-43e5-a47a-ee07fab3fd9c"> | ||
<Properties> | ||
<Name>пбп_ФормаРазрешенияКонфликтовПредопределенныхЭлементов</Name> | ||
<Synonym> | ||
<v8:item> | ||
<v8:lang>ru</v8:lang> | ||
<v8:content>Форма разрешения конфликтов предопределенных элементов</v8:content> | ||
</v8:item> | ||
</Synonym> | ||
<Comment/> | ||
<FormType>Managed</FormType> | ||
<IncludeHelpInContents>false</IncludeHelpInContents> | ||
<UsePurposes> | ||
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value> | ||
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value> | ||
</UsePurposes> | ||
<UseStandardCommands>false</UseStandardCommands> | ||
<ExtendedPresentation/> | ||
<Explanation/> | ||
</Properties> | ||
</CommonForm> | ||
</MetaDataObject> |
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
Incomplete refactoring detected: Old server-side method still referenced.
The method
ЗаполнитьПредопределенныеНаСервере
is still present inModule.bsl
, indicating that the refactoring to client-side processing may be incomplete. Additionally, there are multiple implementations ofСоздатьОбновитьПредопределенныеЗначения
, which could lead to maintenance challenges.ЗаполнитьПредопределенныеНаСервере
are removed or appropriately replaced.СоздатьОбновитьПредопределенныеЗначения
to consolidate and prevent redundancy.🔗 Analysis chain
Verify the completeness and security of the client-side implementation.
The change from server-side to client-side processing of predefined values is a significant alteration. While this can improve performance by reducing server calls, it's crucial to ensure that all scenarios are properly handled and that there are no security implications.
Please address the following points:
пбп_ПредопределенныеЗначенияКлиент.СоздатьОбновитьПредопределенныеЗначения(ЭтотОбъект)
covers all use cases previously handled byЗаполнитьПредопределенныеНаСервере()
.To assist in verifying the changes, you can run the following script to check for any remaining references to the old server-side method and to locate the implementation of the new client-side method:
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
Length of output: 695
Script:
Length of output: 1138