Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Parameters and variables in custom func #67

Merged
merged 5 commits into from
May 7, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,42 @@
<WindowOpeningMode>LockWholeInterface</WindowOpeningMode>
<AutoTitle>false</AutoTitle>
<Customizable>false</Customizable>
<CommandBarLocation>Top</CommandBarLocation>
<VerticalScroll>useIfNecessary</VerticalScroll>
<CommandSet>
<ExcludedCommand>Abort</ExcludedCommand>
<ExcludedCommand>Cancel</ExcludedCommand>
<ExcludedCommand>Ignore</ExcludedCommand>
<ExcludedCommand>No</ExcludedCommand>
<ExcludedCommand>OK</ExcludedCommand>
<ExcludedCommand>RestoreValues</ExcludedCommand>
<ExcludedCommand>Retry</ExcludedCommand>
<ExcludedCommand>SaveValues</ExcludedCommand>
<ExcludedCommand>Yes</ExcludedCommand>
</CommandSet>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<Autofill>false</Autofill>
<ChildItems>
<Button name="КомандаОК" id="15">
<Type>CommandBarButton</Type>
<DefaultButton>true</DefaultButton>
<CommandName>Form.Command.КомандаОК</CommandName>
<ExtendedTooltip name="КомандаОКРасширеннаяПодсказка" id="25"/>
</Button>
<Button name="ФормаЗакрыть" id="31">
<Type>CommandBarButton</Type>
<CommandName>Form.StandardCommand.Close</CommandName>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Отмена</v8:content>
</v8:item>
</Title>
<ExtendedTooltip name="ФормаЗакрытьРасширеннаяПодсказка" id="32"/>
</Button>
</ChildItems>
</AutoCommandBar>
<Events>
<Event name="ChoiceProcessing">ОбработкаВыбора</Event>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
Expand Down Expand Up @@ -84,39 +115,6 @@
</InputField>
</ChildItems>
</UsualGroup>
<CommandBar name="ГруппаДействияФормы" id="14">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа действия формы</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Group actions forms</v8:content>
</v8:item>
</Title>
<HorizontalLocation>Right</HorizontalLocation>
<ExtendedTooltip name="ГруппаДействияФормыРасширеннаяПодсказка" id="24"/>
<ChildItems>
<Button name="КомандаОК" id="15">
<Type>CommandBarButton</Type>
<DefaultButton>true</DefaultButton>
<CommandName>Form.Command.КомандаОК</CommandName>
<ExtendedTooltip name="КомандаОКРасширеннаяПодсказка" id="25"/>
</Button>
<Button name="Закрыть" id="16">
<Type>CommandBarButton</Type>
<Representation>PictureAndText</Representation>
<CommandName>Form.StandardCommand.Close</CommandName>
<ExtendedTooltip name="ЗакрытьРасширеннаяПодсказка" id="26"/>
</Button>
<Button name="Справка" id="17">
<Type>CommandBarButton</Type>
<CommandName>Form.StandardCommand.Help</CommandName>
<ExtendedTooltip name="СправкаРасширеннаяПодсказка" id="27"/>
</Button>
</ChildItems>
</CommandBar>
</ChildItems>
<Attributes>
<Attribute name="ЛогическоеВыражение" id="2">
Expand Down Expand Up @@ -195,21 +193,6 @@
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="СписокПеременных" id="6">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Список переменных</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Variables List</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:ValueListType</v8:Type>
</Type>
</Attribute>
<Attribute name="НадписьСинтаксис" id="7">
<Title>
<v8:item>
Expand Down Expand Up @@ -244,6 +227,21 @@
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="АдресЗначений" id="9">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Адрес значений</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
</Attributes>
<Commands>
<Command name="КомандаОК" id="1">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,8 @@

Параметры.Свойство("Режим", Режим);

Если Параметры.Свойство("Переменные") Тогда
Для Каждого ТекущаяПеременна Из Параметры.Переменные Цикл
СписокПеременных.Добавить(ТекущаяПеременна.Значение);
КонецЦикла;
Если Параметры.Свойство("ЗначенияЗаполнения") Тогда
АдресЗначений = ПоместитьВоВременноеХранилище(Параметры.ЗначенияЗаполнения, УникальныйИдентификатор);
КонецЕсли;

НадписьСинтаксис = НСтр("ru = '?(<ЛогическоеВыражение>,<ВыражениеЕслиИстина>,<ВыражениеЕслиЛожь>)';
Expand Down Expand Up @@ -90,7 +88,7 @@
Процедура КомандаОК(Команда)

ОбновитьВыражениеРезультат();
Закрыть(ВыражениеРезультат);
ОповеститьОВыборе(Новый Структура("Поле", ВыражениеРезультат));

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

Expand All @@ -103,7 +101,7 @@
&НаКлиенте
Процедура ОбновитьВыражениеРезультат()

ВыражениеРезультат = СтрШаблон("?(%1, %2, %3);", ЛогическоеВыражение, ВыражениеИстина, ВыражениеЛожь);
ВыражениеРезультат = СтрШаблон("?(%1, %2, %3)", ЛогическоеВыражение, ВыражениеИстина, ВыражениеЛожь);

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

Expand All @@ -116,28 +114,22 @@

ПараметрыФормы.Вставить("Режим", Режим);

Если СписокПеременных.Количество() Тогда
ПараметрыФормы.Вставить("Переменные", СписокПеременных.ВыгрузитьЗначения());
КонецЕсли;
Если Не ПустаяСтрока(АдресЗначений) Тогда
ПараметрыФормы.Вставить("АдресЗначений", АдресЗначений);
КонецЕсли;
ПараметрыФормы.Вставить("ИмяПриемника", ИмяПриемника);

ОткрытьФорму("ОбщаяФорма.__ФормаВыбораПоля",
ПараметрыФормы, ЭтотОбъект,,,,
Новый ОписаниеОповещения("ВыборПоляЗавершение", ЭтотОбъект, Новый Структура("ИмяПриемника", ИмяПриемника)),
РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
ОткрытьФорму("ОбщаяФорма.__ФормаВыбораПоля", ПараметрыФормы, ЭтотОбъект);

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

// Обработчик оповещения "ВыборПоляЗавершение".
//
// Параметры:
// РезСтруктура - КодВозвратаДиалога.
// ДополнительныеДанные - Структура.
//
&НаКлиенте
Процедура ВыборПоляЗавершение(Результат, ДополнительныеДанные) Экспорт

Если ТипЗнч(Результат) = Тип("Структура") Тогда
Элементы[ДополнительныеДанные.ИмяПриемника].ВыделенныйТекст = Результат.Имя;
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)

Если ИсточникВыбора.ИмяФормы = "ОбщаяФорма.__ФормаВыбораПоля" Тогда
Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда
Элементы[ВыбранноеЗначение.ИмяПриемника].ВыделенныйТекст = ВыбранноеЗначение.Поле;
КонецЕсли;
ОбновитьВыражениеРезультат();
КонецЕсли;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,16 @@
Или ИсточникВыбора.ИмяФормы = "Справочник.__ПользовательскиеФункции.Форма.ФормаМассива" Тогда
текДанные = Элементы.ПараметрыФункции.ТекущиеДанные;
текДанные.АдресЗначения = ВыбранноеЗначение.Адрес;
ИначеЕсли ИсточникВыбора.ИмяФормы = "ОбщаяФорма.__ФормаВыбораПоля" Тогда
Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда

Check warning on line 155 in src/cf/Catalogs/__ПользовательскиеФункции/Forms/ФормаЭлемента/Ext/Form/Module.bsl

View check run for this annotation

sonar.openbsl.ru qa-bot / 1C: Project SubSystems Library Sonarqube Results

src/cf/Catalogs/__ПользовательскиеФункции/Forms/ФормаЭлемента/Ext/Form/Module.bsl#L155

Синтаксическая конструкция "Если...Тогда...ИначеЕсли..." содержит повторяющиеся блоки кода
Copy link

Choose a reason for hiding this comment

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

Consider refactoring to avoid duplicate code blocks in conditional structures.

- Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда
+ Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") И (ИсточникВыбора.ИмяФормы = "ОбщаяФорма.__ФормаВыбораПоля" Или ИсточникВыбора.ИмяФормы = "Справочник.__ПользовательскиеФункции.Форма.УсловныйОператор") Тогда

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.

Suggested change
Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда
Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") И (ИсточникВыбора.ИмяФормы = "ОбщаяФорма.__ФормаВыбораПоля" Или ИсточникВыбора.ИмяФормы = "Справочник.__ПользовательскиеФункции.Форма.УсловныйОператор") Тогда

Модифицированность = Истина;
View().selectedText(ВыбранноеЗначение.Поле);
КонецЕсли;
ИначеЕсли ИсточникВыбора.ИмяФормы = "Справочник.__ПользовательскиеФункции.Форма.УсловныйОператор" Тогда
Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда
Модифицированность = Истина;
View().selectedText(ВыбранноеЗначение.Поле);
КонецЕсли;
Comment on lines +155 to +163
Copy link

Choose a reason for hiding this comment

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

Refactor to avoid duplicate code blocks in conditional structures.

- Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда
+ Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") И (ИсточникВыбора.ИмяФормы = "ОбщаяФорма.__ФормаВыбораПоля" Или ИсточникВыбора.ИмяФормы = "Справочник.__ПользовательскиеФункции.Форма.УсловныйОператор") Тогда

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.

Suggested change
Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда
Модифицированность = Истина;
View().selectedText(ВыбранноеЗначение.Поле);
КонецЕсли;
ИначеЕсли ИсточникВыбора.ИмяФормы = "Справочник.__ПользовательскиеФункции.Форма.УсловныйОператор" Тогда
Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда
Модифицированность = Истина;
View().selectedText(ВыбранноеЗначение.Поле);
КонецЕсли;
Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") И (ИсточникВыбора.ИмяФормы = "ОбщаяФорма.__ФормаВыбораПоля" Или ИсточникВыбора.ИмяФормы = "Справочник.__ПользовательскиеФункции.Форма.УсловныйОператор") Тогда
Модифицированность = Истина;
View().selectedText(ВыбранноеЗначение.Поле);
КонецЕсли;

КонецЕсли;

КонецПроцедуры
Expand Down Expand Up @@ -542,67 +552,20 @@

ПараметрыФормы = Новый Структура;

МассивИменПеременных = Новый Массив;

Для Каждого ТекСтрока Из Объект.Переменные Цикл
МассивИменПеременных.Добавить(ТекСтрока.Имя);
КонецЦикла;
ДополнитьПараметрыОткрытияФормы(ПараметрыФормы);

ПараметрыФормы.Вставить("Переменные",МассивИменПеременных);

ОткрытьФорму("ОбщаяФорма.__ФормаВыбораПоля", ПараметрыФормы, ЭтотОбъект,,,,
Новый ОписаниеОповещения("ОткрытьФормуВыбораПоляЗавершение", ЭтотОбъект),
РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
ОткрытьФорму("ОбщаяФорма.__ФормаВыбораПоля", ПараметрыФормы, ЭтотОбъект);

КонецПроцедуры // ОткрытьФормуВыбораПоля()

// Оработчик оповещения "ОткрытьФормуВыбораПоляЗавершение".
//
// Параметры:
// РезСтруктура - Структура.
// Параметры - Структура.
//
&НаКлиенте
Процедура ОткрытьФормуВыбораПоляЗавершение(Результат, Параметры) Экспорт

Если ТипЗнч(Результат) = Тип("Структура") Тогда
Объект.КодПодпрограммы = СтрШаблон("%1 %2", Объект.КодПодпрограммы, Результат.Имя);
УстановитьИсполняемыйКод();
Модифицированность = Истина;
КонецЕсли;

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

&НаКлиенте
Процедура ОткрытьКонструкторУсловногоВыражения()

ПараметрыФормы = Новый Структура;
СписокПеременных = Новый СписокЗначений;

Для Каждого Элемент Из Объект.Переменные Цикл
СписокПеременных.Добавить(Элемент.Имя);
КонецЦикла;
ДополнитьПараметрыОткрытияФормы(ПараметрыФормы);

ПараметрыФормы.Вставить("Переменные", СписокПеременных);

ОткрытьФорму(КлючОбъекта("УсловныйОператор"), ПараметрыФормы, ЭтотОбъект,,,,
Новый ОписаниеОповещения("ОткрытьКонструкторУсловногоВыраженияЗавершение", ЭтотОбъект));

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

// Процедура обработчик оповещения "ОткрытьКонструкторУсловногоВыраженияЗавершение".
//
// Параметры:
// РезВыражение - Строка.
// Параметры - Структура.
//
&НаКлиенте
Процедура ОткрытьКонструкторУсловногоВыраженияЗавершение(Результат, Параметры) Экспорт

Если ТипЗнч(Результат) = Тип("Строка") Тогда
Объект.КодПодпрограммы = СтрШаблон("%1 %2", Объект.КодПодпрограммы, Результат);
УстановитьИсполняемыйКод();
КонецЕсли;
ОткрытьФорму(КлючОбъекта("УсловныйОператор"), ПараметрыФормы, ЭтотОбъект);

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

Expand Down Expand Up @@ -631,6 +594,27 @@
Возврат "Справочник.__ПользовательскиеФункции.Форма." + ИмяФормы;
КонецФункции

&НаКлиенте
Процедура ДополнитьПараметрыОткрытияФормы(ПараметрыОткрытия)

ЗначенияЗаполнения = Новый Структура;

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

Check notice on line 606 in src/cf/Catalogs/__ПользовательскиеФункции/Forms/ФормаЭлемента/Ext/Form/Module.bsl

View check run for this annotation

sonar.openbsl.ru qa-bot / 1C: Project SubSystems Library Sonarqube Results

src/cf/Catalogs/__ПользовательскиеФункции/Forms/ФормаЭлемента/Ext/Form/Module.bsl#L606

Справа от ',' не хватает пробела
Copy link

Choose a reason for hiding this comment

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

Add a space after the comma for better readability.

- МассивИменПеременных.Добавить(ТекСтрока.Имя);
+ МассивИменПеременных.Добавить(ТекСтрока.Имя); 

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.

Suggested change
ЗначенияЗаполнения.Вставить("Переменные",МассивИменПеременных);
ЗначенияЗаполнения.Вставить("Переменные", МассивИменПеременных);


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

ПараметрыОткрытия.Вставить("ЗначенияЗаполнения", ЗначенияЗаполнения);

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

#Область ОбработчикиСобытийПоляРедактора

&НаКлиенте
Expand Down
Loading
Loading