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 all commits
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 @@ -55,6 +55,8 @@
СписокТипов.Добавить("Массив", НСтр("ru = 'Массив'"));
СписокТипов.Добавить("Структура", НСтр("ru = 'Структура'"));

СписокДобавленныхТипов = СписокТипов.Скопировать();

Для каждого Стр Из НеПримитивныеТипы Цикл
ЗначениеТипа = XMLТип(Стр.Значение).ИмяТипа;
ПредставлениеТипа = Строка(Стр.Значение);
Expand Down Expand Up @@ -381,8 +383,9 @@
//
Процедура ЗаполнитьПараметры(Объект) Экспорт

Объект.ПараметрыФункции.Очистить();

Если Объект.Контекст = Перечисления.__КонтекстыВыполненияПользовательскихФункций.ЗагрузкаЭксель Тогда
Объект.ПараметрыФункции.Очистить();
ДобавитьПараметрыЗагрузкаЭксель(Объект);
КонецЕсли;

Expand All @@ -395,27 +398,65 @@
// Выполняет добавляет параметр при отсутствии.
//
// Параметры:
// ИмяПараметра - Строка.
// Объект - СправочникОбъект.__ПользовательскиеФункции - Изменяемый объект.
// ИмяПараметра - Строка - Имя добавляемого параметра.
// ТипПараметра - Строка - Подставляемый тип в строковом, по умолчанию остается пустой.
//
Процедура НайтиДобавитьПараметр(Объект, ИмяПараметра)
Процедура НайтиДобавитьПараметр(Объект, ИмяПараметра, ТипПараметра = Неопределено)
Copy link

Choose a reason for hiding this comment

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

Add descriptions for the parameters Объект and ИмяПараметра to improve code readability and maintainability.

- Процедура НайтиДобавитьПараметр(Объект, ИмяПараметра, ТипПараметра = Неопределено)
+ // Объект - ДанныеФормыСтруктура, СправочникОбъект.__ПользовательскиеФункции - the object to which the parameter is added.
+ // ИмяПараметра - Строка - the name of the parameter to add.
+ Процедура НайтиДобавитьПараметр(Объект, ИмяПараметра, ТипПараметра = Неопределено)

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
Процедура НайтиДобавитьПараметр(Объект, ИмяПараметра, ТипПараметра = Неопределено)
// Объект - ДанныеФормыСтруктура, СправочникОбъект.__ПользовательскиеФункции - the object to which the parameter is added.
// ИмяПараметра - Строка - the name of the parameter to add.
Процедура НайтиДобавитьПараметр(Объект, ИмяПараметра, ТипПараметра = Неопределено)


ТипСтрокой = ТипСтрокой(ТипПараметра);

ДанныеПоиска = Объект.ПараметрыФункции.НайтиСтроки(
Новый Структура("Наименование", ИмяПараметра));

Если Не ДанныеПоиска.Количество() Тогда
Если Не ЗначениеЗаполнено(ДанныеПоиска) Тогда
НоваяСтрока = Объект.ПараметрыФункции.Добавить();
НоваяСтрока.Наименование = ИмяПараметра;
НоваяСтрока.Идентификатор = Новый УникальныйИдентификатор;
НоваяСтрока.Тип = ТипСтрокой;
КонецЕсли;

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

Функция ТипСтрокой(Тип)

Если Тип = Неопределено Тогда
Возврат "";
КонецЕсли;

СписокДобавленныхТипов = Новый СписокЗначений;
СформироватьСписокТипов(СписокДобавленныхТипов);

ТипСтрокой = Строка(Тип);

ТипНайден = Ложь;
Для Каждого ЭлементСписка Из СписокДобавленныхТипов Цикл
Если ЭлементСписка.Представление = ТипСтрокой Тогда
ТипНайден = Истина;
Прервать;
КонецЕсли;
КонецЦикла;

Если Не ТипНайден Тогда
ТипСтрокой = XMLТип(Тип).ИмяТипа;
КонецЕсли;

Возврат ТипСтрокой;

КонецФункции

// Добавляет параметры, необходимые для контекста ЗагрузкаЭксель.
//
//
// Параметры:
// Объект - СправочникОбъект.__ПользовательскиеФункции - Изменяемый объект.
//
Процедура ДобавитьПараметрыЗагрузкаЭксель(Объект)

ТипСтруктура = Тип("Структура");
ТипСтрока = Тип("Строка");
НайтиДобавитьПараметр(Объект, "СтрокаЗагрузки");
НайтиДобавитьПараметр(Объект, "ДанныеЗагрузки");
НайтиДобавитьПараметр(Объект, "СтрокаПравил");
НайтиДобавитьПараметр(Объект, "ДанныеЗагрузки", ТипСтруктура);
НайтиДобавитьПараметр(Объект, "СтрокаПравил", ТипСтрока);

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

Expand Down
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 @@ -16,6 +16,17 @@
<CommandName>Form.Command.СохранитьРезультат</CommandName>
<ExtendedTooltip name="ФормаСохранитьРезультатРасширеннаяПодсказка" id="21"/>
</Button>
<Button name="ФормаЗакрыть" id="38">
<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="39"/>
</Button>
</ChildItems>
</AutoCommandBar>
<Events>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,17 @@
<CommandName>Form.Command.СохранитьРезультат</CommandName>
<ExtendedTooltip name="ФормаСохранитьРезультатРасширеннаяПодсказка" id="21"/>
</Button>
<Button name="ФормаЗакрыть" id="22">
<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="23"/>
</Button>
</ChildItems>
</AutoCommandBar>
<Events>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,17 @@
<CommandName>Form.Command.СохранитьРезультат</CommandName>
<ExtendedTooltip name="ФормаСохранитьРезультатРасширеннаяПодсказка" id="38"/>
</Button>
<Button name="ФормаЗакрыть" id="39">
<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="40"/>
</Button>
</ChildItems>
</AutoCommandBar>
<Events>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@

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