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

Added universal func for execute custom functions #66

Merged
merged 4 commits into from
May 3, 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
170 changes: 12 additions & 158 deletions src/Catalogs/__ПользовательскиеФункции.xml
Original file line number Diff line number Diff line change
Expand Up @@ -393,54 +393,6 @@
<DataHistory>Use</DataHistory>
</Properties>
</Attribute>
<Attribute uuid="55633158-5ec1-443f-bce2-095b9fb272e9">
<Properties>
<Name>Описание</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Описание</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Description</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
<PasswordMode>false</PasswordMode>
<Format/>
<EditFormat/>
<ToolTip/>
<MarkNegatives>false</MarkNegatives>
<Mask/>
<MultiLine>false</MultiLine>
<ExtendedEdit>false</ExtendedEdit>
<MinValue xsi:nil="true"/>
<MaxValue xsi:nil="true"/>
<FillFromFillingValue>false</FillFromFillingValue>
<FillValue xsi:nil="true"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Use>ForItem</Use>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<DataHistory>Use</DataHistory>
</Properties>
</Attribute>
<Attribute uuid="cac666e3-1c3c-4135-bb7c-e9c8838a9d34">
<Properties>
<Name>ТипВозвращаемогоЗначения</Name>
Expand Down Expand Up @@ -632,47 +584,6 @@
<DataHistory>Use</DataHistory>
</Properties>
</Attribute>
<Attribute uuid="5b112e4b-dce5-4c96-86d3-b0bc7bf96726">
<Properties>
<Name>ТипПараметра</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Тип параметра</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Parameter Type</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>v8:ValueStorage</v8:Type>
</Type>
<PasswordMode>false</PasswordMode>
<Format/>
<EditFormat/>
<ToolTip/>
<MarkNegatives>false</MarkNegatives>
<Mask/>
<MultiLine>false</MultiLine>
<ExtendedEdit>false</ExtendedEdit>
<MinValue xsi:nil="true"/>
<MaxValue xsi:nil="true"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<DataHistory>Use</DataHistory>
</Properties>
</Attribute>
<Attribute uuid="ed036b65-226b-42e4-ae09-bf1436fa0120">
<Properties>
<Name>Наименование</Name>
Expand Down Expand Up @@ -718,50 +629,39 @@
<DataHistory>Use</DataHistory>
</Properties>
</Attribute>
<Attribute uuid="8e72b20d-8eae-4026-88be-7ac8447469d7">
<Attribute uuid="50282414-75c3-4d5b-a39b-1afa2cca73c3">
<Properties>
<Name>ЗначениеПоУмолчанию</Name>
<Name>Тип</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Значение по умолчанию</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Default Value</v8:content>
<v8:content>Тип</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Comment>Тип</Comment>
<Type>
<v8:Type>xs:boolean</v8:Type>
<v8:Type>xs:string</v8:Type>
<v8:Type>xs:dateTime</v8:Type>
<v8:Type>xs:decimal</v8:Type>
<v8:TypeSet>cfg:AnyRef</v8:TypeSet>
<v8:NumberQualifiers>
<v8:Digits>10</v8:Digits>
<v8:FractionDigits>0</v8:FractionDigits>
<v8:AllowedSign>Any</v8:AllowedSign>
</v8:NumberQualifiers>
<v8:StringQualifiers>
<v8:Length>10</v8:Length>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
<v8:DateQualifiers>
<v8:DateFractions>Date</v8:DateFractions>
</v8:DateQualifiers>
</Type>
<PasswordMode>false</PasswordMode>
<Format/>
<EditFormat/>
<ToolTip/>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Тип параметра</v8:content>
</v8:item>
</ToolTip>
<MarkNegatives>false</MarkNegatives>
<Mask/>
<MultiLine>false</MultiLine>
<ExtendedEdit>false</ExtendedEdit>
<MinValue xsi:nil="true"/>
<MaxValue xsi:nil="true"/>
<FillChecking>DontCheck</FillChecking>
<FillChecking>ShowError</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
Expand Down Expand Up @@ -816,52 +716,6 @@
<DataHistory>Use</DataHistory>
</Properties>
</Attribute>
<Attribute uuid="50282414-75c3-4d5b-a39b-1afa2cca73c3">
<Properties>
<Name>Тип</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Тип</v8:content>
</v8:item>
</Synonym>
<Comment>Тип</Comment>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
<PasswordMode>false</PasswordMode>
<Format/>
<EditFormat/>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Тип параметра</v8:content>
</v8:item>
</ToolTip>
<MarkNegatives>false</MarkNegatives>
<Mask/>
<MultiLine>false</MultiLine>
<ExtendedEdit>false</ExtendedEdit>
<MinValue xsi:nil="true"/>
<MaxValue xsi:nil="true"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<DataHistory>Use</DataHistory>
</Properties>
</Attribute>
</ChildObjects>
</TabularSection>
<TabularSection uuid="ad25fde7-2eab-4cf5-a3b9-174008de7522">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,23 +60,13 @@

#Область СлужебныеПроцедурыИФункции

&НаСервереБезКонтекста
Процедура ОчиститьНеиспользуемыеНастройки(Адрес)
УдалитьИзВременногоХранилища(Адрес);
КонецПроцедуры

&НаСервере
Функция АдресМассиваВХранилище()

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

Возврат Адрес;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,26 +80,15 @@

#Область СлужебныеПроцедурыИФункции

&НаСервереБезКонтекста
Процедура ОчиститьНеиспользуемыеНастройки(Адрес)
УдалитьИзВременногоХранилища(Адрес);
КонецПроцедуры

&НаСервере
Функция АдресСтруктурыВХранилище()

Адрес = "";

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

Возврат Адрес;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,22 +107,12 @@

#Область СлужебныеПроцедурыИФункции

&НаСервереБезКонтекста
Процедура ОчиститьНеиспользуемыеНастройки(Адрес)
УдалитьИзВременногоХранилища(Адрес);
КонецПроцедуры

&НаСервере
Функция АдресТаблицыВХранилище()

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

Возврат Адрес;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@
СохранитьКаталогИсходногоКодаКонфигурации(КаталогИсходногоКодаКонфигурации);
КонецЕсли;

СохранитьПараметрыФункции();
СохранитьПараметрыФункции(Отказ);

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

Expand Down Expand Up @@ -244,6 +244,8 @@
ТекДанные.ТипВФорме = ВыбранныйЭлемент.Представление;
// Доработать, отражение количество элементов в коллекции, условное оформление - цвет текста, запрет изменения
ТекДанные.ЗначениеВФорме = ВыбранныйЭлемент.Представление;
ПустаяКоллекция = Новый(Тип(ВыбранныйЭлемент.Значение));
ТекДанные.АдресЗначения = ПоместитьВоВременноеХранилище(ПустаяКоллекция, Новый УникальныйИдентификатор);
Иначе
ИнициализацияТипаИЗначенияПараметра(ТекДанные, ВыбранныйЭлемент);
КонецЕсли;
Expand Down Expand Up @@ -502,37 +504,17 @@
&НаСервере
Процедура ВыполнитьКодСервер()

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

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

ТабПараметров = Новый ТаблицаЗначений;
ТабПараметров.Колонки.Добавить("Номер");
ТабПараметров.Колонки.Добавить("Параметр");
ТабПараметров.Колонки.Добавить("Значение");

ЗначенияПараметровФункции = ПолучитьПараметрыФункции();

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

// Чтобы текст функции не изменился сформируем его копию.
ТекстФункции = Строка(Объект.КодПодпрограммы);

Попытка

Результат = __ОбщегоНазначенияСервер.ВыполнитьПользовательскуюФункциюСПараметрами(ТекстФункции,
ТабПараметров, СтрПеременные);
Результат = __ОбщегоНазначенияСервер.ВыполнитьПользовательскуюФункциюСПараметрами(Объект.Ссылка, ПараметрыФункции);
__ОбщегоНазначенияСлужебный.СообщитьПользователю(Строка(Результат));
Исключение

Expand Down Expand Up @@ -2056,11 +2038,11 @@
КонецПроцедуры

&НаСервере
Процедура СохранитьПараметрыФункции()
Процедура СохранитьПараметрыФункции(Отказ = Ложь)

НастройкиПараметров = ПолучитьПараметрыФункции();

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