-
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 7 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 |
---|---|---|
|
@@ -3,7 +3,21 @@ | |
## Описание подсистемы | ||
|
||
По стандартам разработки поиск ссылочных объектов в программном коде по наименованию, коду, гуиду и т.д. не рекомендуется. Для возможности получения ссылок из программного кода предлагается использовать элементы плана видов характеристик. Чтобы избежать необходимости реструктуризации при добавлении новых элементов в ПВХ, формирование иерархии и элементов делается программно и обновляется в пользовательском режиме. Получение элементов стандартизируется через общий модуль с возможностью кэширования. | ||
При коментировании или удалении из кода предопределенных элементов и последующем перезаполнении, элемент будет помечен на удаление, включая все его подчиненные элементы. | ||
При коментировании или удалении из кода предопределенных элементов и последующем перезаполнении, элемент будет помечен на удаление, включая все его подчиненные элементы. | ||
|
||
## Первоначальное заполнение | ||
|
||
Для того чтобы автоматизировать процесс первоначального заполнения предопределенных элементов, необходимо добавить в расширение общий модуль **ПодсистемыКонфигурацииПереопределяемый**. | ||
В процедуре ``ПриДобавленииПодсистем`` прописать вызов процедуры библиотеки ``пбп_ОбновлениеИнформационнойБазыПБП.ПриДобавленииПодсистем``. Затем выполнить первый запуск - будет выполнен обработчик первоначального заполнения предопределенных элементов. | ||
|
||
```1C (BSL) | ||
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. Чтобы подсветка синтаксиса работала нужно написать просто ```bsl |
||
&После("ПриДобавленииПодсистем") | ||
Процедура пбп_ПриДобавленииПодсистем(МодулиПодсистем) | ||
|
||
пбп_ОбновлениеИнформационнойБазыПБП.ПриДобавленииПодсистем(МодулиПодсистем); | ||
|
||
КонецПроцедуры | ||
``` | ||
|
||
## Добавление новых элементов | ||
|
||
|
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -20,19 +20,23 @@ | |||||||||||||||||||||||
|
||||||||||||||||||||||||
#Область ОбработчикиСобытийФормы | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
&НаКлиенте | ||||||||||||||||||||||||
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
Если ИмяСобытия = "ОбновитьСписокПредопределенных" Тогда | ||||||||||||||||||||||||
Элементы.Список.Обновить(); | ||||||||||||||||||||||||
КонецЕсли; | ||||||||||||||||||||||||
Comment on lines
+26
to
+28
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 Consider adding error handling for the list update While updating the list with Apply this diff to add basic error handling: Если ИмяСобытия = "ОбновитьСписокПредопределенных" Тогда
+ Попытка
Элементы.Список.Обновить();
+ Исключение
+ // Обработка ошибки обновления списка
+ Предупреждение("Ошибка обновления списка предопределенных значений.");
+ КонецПопытки;
КонецЕсли; 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||
|
||||||||||||||||||||||||
КонецПроцедуры | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
#КонецОбласти | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
#Область ОбработчикиКомандФормы | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
&НаСервереБезКонтекста | ||||||||||||||||||||||||
Процедура ЗаполнитьПредопределенныеНаСервере() | ||||||||||||||||||||||||
пбп_ПредопределенныеЗначения.ИнициализироватьПредопределенныеЗначения(Справочники.пбп_ИнтеграционныеПотоки); | ||||||||||||||||||||||||
КонецПроцедуры | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
&НаКлиенте | ||||||||||||||||||||||||
Процедура ЗаполнитьПредопределенные(Команда) | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
ЗаполнитьПредопределенныеНаСервере(); | ||||||||||||||||||||||||
пбп_ПредопределенныеЗначенияКлиент.СоздатьОбновитьПредопределенныеЗначения(ЭтотОбъект); | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
Элементы.Список.Обновить(); | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
Comment on lines
+39
to
42
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 Incomplete refactoring detected: Old server-side method still referenced. The method
🔗 Analysis chainVerify 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:
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 executedThe following scripts were executed for the analysis: Script: #!/bin/bash
# Description: Check for references to old method and locate new method implementation
# Search for any remaining references to ЗаполнитьПредопределенныеНаСервере
echo "Checking for references to ЗаполнитьПредопределенныеНаСервере:"
rg --type bsl "ЗаполнитьПредопределенныеНаСервере"
# Locate the implementation of СоздатьОбновитьПредопределенныеЗначения
echo "Locating implementation of СоздатьОбновитьПредопределенныеЗначения:"
rg --type bsl "Процедура СоздатьОбновитьПредопределенныеЗначения"
Length of output: 695 Script: #!/bin/bash
# Description: Check for references to ЗаполнитьПредопределенныеНаСервере and locate implementation of СоздатьОбновитьПредопределенныеЗначения in .bsl files
# Search for any remaining references to ЗаполнитьПредопределенныеНаСервере in .bsl files
echo "Checking for references to ЗаполнитьПредопределенныеНаСервере in .bsl files:"
rg --glob '*.bsl' "ЗаполнитьПредопределенныеНаСервере"
# Locate the implementation of СоздатьОбновитьПредопределенныеЗначения in .bsl files
echo "Locating implementation of СоздатьОбновитьПредопределенныеЗначения in .bsl files:"
rg --glob '*.bsl' "Процедура СоздатьОбновитьПредопределенныеЗначения"
Length of output: 1138 |
||||||||||||||||||||||||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда | ||
|
||
#Область ОбработчикиСобытий | ||
|
||
Процедура ПередЗаписью(Отказ) | ||
|
||
Если ОбменДанными.Загрузка Тогда | ||
Возврат; | ||
КонецЕсли; | ||
|
||
ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый()); | ||
|
||
КонецПроцедуры | ||
|
||
Процедура ПриЗаписи(Отказ) | ||
|
||
Если ОбменДанными.Загрузка Тогда | ||
Возврат; | ||
КонецЕсли; | ||
|
||
Если Не пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда | ||
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: - Если Не пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда
+ Если Не ДополнительныеСвойства.СуществуетСвойство("ЭтоНовый") Тогда |
||
пбп_ОбщегоНазначенияСервер.ОбработатьСуществующийПредопределенныйЭлемент(ЭтотОбъект); | ||
КонецЕсли; | ||
|
||
КонецПроцедуры | ||
|
||
#КонецОбласти | ||
|
||
#КонецЕсли |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -20,19 +20,23 @@ | |
|
||
#Область ОбработчикиСобытийФормы | ||
|
||
&НаКлиенте | ||
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) | ||
|
||
Если ИмяСобытия = "ОбновитьСписокПредопределенных" Тогда | ||
Элементы.Список.Обновить(); | ||
КонецЕсли; | ||
|
||
КонецПроцедуры | ||
Comment on lines
+24
to
+30
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 Use constants for event names to improve maintainability In the procedure You can define the event name as a constant at the module level: Перем ИмяСобытияОбновитьСписокПредопределенных;
&НаКлиенте
Процедура ПриОткрытии()
ИмяСобытияОбновитьСписокПредопределенных = "ОбновитьСписокПредопределенных";
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = ИмяСобытияОбновитьСписокПредопределенных Тогда
Элементы.Список.Обновить();
КонецЕсли;
КонецПроцедуры This approach improves readability and makes it easier to manage event names throughout the codebase. |
||
|
||
#КонецОбласти | ||
|
||
#Область ОбработчикиКомандФормы | ||
|
||
&НаСервереБезКонтекста | ||
Процедура ЗаполнитьПредопределенныеНаСервере() | ||
пбп_ПредопределенныеЗначения.ИнициализироватьПредопределенныеЗначения(Справочники.пбп_ИнтегрируемыеСистемы); | ||
КонецПроцедуры | ||
|
||
&НаКлиенте | ||
Процедура ЗаполнитьПредопределенные(Команда) | ||
|
||
ЗаполнитьПредопределенныеНаСервере(); | ||
пбп_ПредопределенныеЗначенияКлиент.СоздатьОбновитьПредопределенныеЗначения(ЭтотОбъект); | ||
|
||
Элементы.Список.Обновить(); | ||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
| ||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда | ||
|
||
#Область ОбработчикиСобытий | ||
|
||
Процедура ПередЗаписью(Отказ) | ||
|
||
Если ОбменДанными.Загрузка Тогда | ||
Возврат; | ||
КонецЕсли; | ||
|
||
ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый()); | ||
|
||
КонецПроцедуры | ||
|
||
Процедура ПриЗаписи(Отказ) | ||
|
||
Если ОбменДанными.Загрузка Тогда | ||
Возврат; | ||
КонецЕсли; | ||
|
||
Если Не пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда | ||
пбп_ОбщегоНазначенияСервер.ОбработатьСуществующийПредопределенныйЭлемент(ЭтотОбъект); | ||
КонецЕсли; | ||
|
||
КонецПроцедуры | ||
|
||
#КонецОбласти | ||
|
||
#КонецЕсли |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,30 @@ | ||
| ||
| ||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда | ||
|
||
#Область ОбработчикиСобытий | ||
|
||
Процедура ПередЗаписью(Отказ) | ||
|
||
Если ОбменДанными.Загрузка Тогда | ||
Возврат; | ||
КонецЕсли; | ||
|
||
ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый()); | ||
|
||
КонецПроцедуры | ||
|
||
Процедура ПриЗаписи(Отказ) | ||
|
||
Если ОбменДанными.Загрузка Тогда | ||
Возврат; | ||
КонецЕсли; | ||
|
||
Если Не пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда | ||
пбп_ОбщегоНазначенияСервер.ОбработатьСуществующийПредопределенныйЭлемент(ЭтотОбъект); | ||
КонецЕсли; | ||
|
||
КонецПроцедуры | ||
|
||
#КонецОбласти | ||
|
||
#КонецЕсли |
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>true</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> | ||
Comment on lines
+4
to
+22
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 Issues Identified in Form Definitions:
🔗 Analysis chainProperties are well-defined, but consider the following points:
Overall, the properties are appropriately set for a common form. The inclusion of help in contents and support for both platform and mobile applications is noteworthy. To verify the naming convention consistency, run the following script: 🏁 Scripts executedThe following scripts were executed for the analysis: Script: #!/bin/bash
# Description: Check for consistency in form naming conventions
# Test: Search for other form definitions with the "пбп_" prefix
echo "Forms with 'пбп_' prefix:"
rg --type xml '<Name>пбп_.*</Name>' src/cf/CommonForms
Length of output: 351 Script: #!/bin/bash
# Description: Check for empty Comment, ExtendedPresentation, or Explanation elements
echo "Forms with empty Comment, ExtendedPresentation, or Explanation elements:"
rg --type xml '<(Comment|ExtendedPresentation|Explanation)/>' src/cf/CommonForms
Length of output: 718 Script: #!/bin/bash
# Description: Check forms with UseStandardCommands set to false
echo "Forms with UseStandardCommands set to false:"
rg --type xml '<UseStandardCommands>false</UseStandardCommands>' src/cf/CommonForms
Length of output: 409 |
||
</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.
...необходимо модифицировать/добавить в расширение общий модуль....
Если кто-то работает без расширений