From 22f1ce2997c7d72e0ba10eeba2d49b17ae7d85d8 Mon Sep 17 00:00:00 2001 From: Denis Date: Mon, 6 May 2024 16:01:16 +0300 Subject: [PATCH 1/5] Changed substitution of parameters and variables in the code console. Changed forms --- .../Ext/Form.xml" | 96 +++++----- .../Ext/Form/Module.bsl" | 38 ++-- .../Ext/Form/Module.bsl" | 86 ++++----- .../Ext/Form.xml" | 170 ++++++++++-------- .../Ext/Form/Module.bsl" | 142 ++++++++------- .../Ext/Module.bsl" | 19 +- ...0\273\320\270\320\265\320\275\321\202.xml" | 23 +++ .../Ext/Module.bsl" | 58 ++++++ ...0\273\320\270\320\265\320\275\321\202.xml" | 23 +++ .../Ext/Module.bsl" | 47 +++++ src/cf/Configuration.xml | 2 + 11 files changed, 426 insertions(+), 278 deletions(-) create mode 100644 "src/cf/CommonModules/__\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\232\320\273\320\270\320\265\320\275\321\202.xml" create mode 100644 "src/cf/CommonModules/__\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" create mode 100644 "src/cf/CommonModules/__\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202.xml" create mode 100644 "src/cf/CommonModules/__\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" diff --git "a/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\243\321\201\320\273\320\276\320\262\320\275\321\213\320\271\320\236\320\277\320\265\321\200\320\260\321\202\320\276\321\200/Ext/Form.xml" "b/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\243\321\201\320\273\320\276\320\262\320\275\321\213\320\271\320\236\320\277\320\265\321\200\320\260\321\202\320\276\321\200/Ext/Form.xml" index 13941cbe..a4f67955 100644 --- "a/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\243\321\201\320\273\320\276\320\262\320\275\321\213\320\271\320\236\320\277\320\265\321\200\320\260\321\202\320\276\321\200/Ext/Form.xml" +++ "b/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\243\321\201\320\273\320\276\320\262\320\275\321\213\320\271\320\236\320\277\320\265\321\200\320\260\321\202\320\276\321\200/Ext/Form.xml" @@ -14,11 +14,42 @@ LockWholeInterface false false + Top useIfNecessary + + Abort + Cancel + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + - false + + + + + ОбработкаВыбора ПриСозданииНаСервере @@ -84,39 +115,6 @@ - - - <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> - - Right - - - - - - - @@ -195,21 +193,6 @@ - - - <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> - - - v8:ValueListType - - <v8:item> @@ -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> + + + xs:string + + 0 + Variable + + + diff --git "a/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\243\321\201\320\273\320\276\320\262\320\275\321\213\320\271\320\236\320\277\320\265\321\200\320\260\321\202\320\276\321\200/Ext/Form/Module.bsl" "b/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\243\321\201\320\273\320\276\320\262\320\275\321\213\320\271\320\236\320\277\320\265\321\200\320\260\321\202\320\276\321\200/Ext/Form/Module.bsl" index 641a622f..ffcfcbff 100644 --- "a/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\243\321\201\320\273\320\276\320\262\320\275\321\213\320\271\320\236\320\277\320\265\321\200\320\260\321\202\320\276\321\200/Ext/Form/Module.bsl" +++ "b/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\243\321\201\320\273\320\276\320\262\320\275\321\213\320\271\320\236\320\277\320\265\321\200\320\260\321\202\320\276\321\200/Ext/Form/Module.bsl" @@ -25,10 +25,8 @@ Параметры.Свойство("Режим", Режим); - Если Параметры.Свойство("Переменные") Тогда - Для Каждого ТекущаяПеременна Из Параметры.Переменные Цикл - СписокПеременных.Добавить(ТекущаяПеременна.Значение); - КонецЦикла; + Если Параметры.Свойство("ЗначенияЗаполнения") Тогда + АдресЗначений = ПоместитьВоВременноеХранилище(Параметры.ЗначенияЗаполнения, УникальныйИдентификатор); КонецЕсли; НадписьСинтаксис = НСтр("ru = '?(<ЛогическоеВыражение>,<ВыражениеЕслиИстина>,<ВыражениеЕслиЛожь>)'; @@ -90,7 +88,7 @@ Процедура КомандаОК(Команда) ОбновитьВыражениеРезультат(); - Закрыть(ВыражениеРезультат); + ОповеститьОВыборе(Новый Структура("Поле", ВыражениеРезультат)); КонецПроцедуры @@ -103,7 +101,7 @@ &НаКлиенте Процедура ОбновитьВыражениеРезультат() - ВыражениеРезультат = СтрШаблон("?(%1, %2, %3);", ЛогическоеВыражение, ВыражениеИстина, ВыражениеЛожь); + ВыражениеРезультат = СтрШаблон("?(%1, %2, %3)", ЛогическоеВыражение, ВыражениеИстина, ВыражениеЛожь); КонецПроцедуры @@ -116,28 +114,22 @@ ПараметрыФормы.Вставить("Режим", Режим); - Если СписокПеременных.Количество() Тогда - ПараметрыФормы.Вставить("Переменные", СписокПеременных.ВыгрузитьЗначения()); - КонецЕсли; + Если Не ПустаяСтрока(АдресЗначений) Тогда + ПараметрыФормы.Вставить("АдресЗначений", АдресЗначений); + КонецЕсли; + ПараметрыФормы.Вставить("ИмяПриемника", ИмяПриемника); - ОткрытьФорму("ОбщаяФорма.__ФормаВыбораПоля", - ПараметрыФормы, ЭтотОбъект,,,, - Новый ОписаниеОповещения("ВыборПоляЗавершение", ЭтотОбъект, Новый Структура("ИмяПриемника", ИмяПриемника)), - РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс); + ОткрытьФорму("ОбщаяФорма.__ФормаВыбораПоля", ПараметрыФормы, ЭтотОбъект); КонецПроцедуры -// Обработчик оповещения "ВыборПоляЗавершение". -// -// Параметры: -// РезСтруктура - КодВозвратаДиалога. -// ДополнительныеДанные - Структура. -// &НаКлиенте -Процедура ВыборПоляЗавершение(Результат, ДополнительныеДанные) Экспорт - - Если ТипЗнч(Результат) = Тип("Структура") Тогда - Элементы[ДополнительныеДанные.ИмяПриемника].ВыделенныйТекст = Результат.Имя; +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ИсточникВыбора.ИмяФормы = "ОбщаяФорма.__ФормаВыбораПоля" Тогда + Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда + Элементы[ВыбранноеЗначение.ИмяПриемника].ВыделенныйТекст = ВыбранноеЗначение.Поле; + КонецЕсли; ОбновитьВыражениеРезультат(); КонецЕсли; diff --git "a/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" "b/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" index 70d7b084..11073f2c 100644 --- "a/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" +++ "b/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" @@ -151,6 +151,16 @@ Или ИсточникВыбора.ИмяФормы = "Справочник.__ПользовательскиеФункции.Форма.ФормаМассива" Тогда текДанные = Элементы.ПараметрыФункции.ТекущиеДанные; текДанные.АдресЗначения = ВыбранноеЗначение.Адрес; + ИначеЕсли ИсточникВыбора.ИмяФормы = "ОбщаяФорма.__ФормаВыбораПоля" Тогда + Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда + Модифицированность = Истина; + View().selectedText(ВыбранноеЗначение.Поле); + КонецЕсли; + ИначеЕсли ИсточникВыбора.ИмяФормы = "Справочник.__ПользовательскиеФункции.Форма.УсловныйОператор" Тогда + Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда + Модифицированность = Истина; + View().selectedText(ВыбранноеЗначение.Поле); + КонецЕсли; КонецЕсли; КонецПроцедуры @@ -542,67 +552,20 @@ ПараметрыФормы = Новый Структура; - МассивИменПеременных = Новый Массив; - - Для Каждого ТекСтрока Из Объект.Переменные Цикл - МассивИменПеременных.Добавить(ТекСтрока.Имя); - КонецЦикла; + ДополнитьПараметрыОткрытияФормы(ПараметрыФормы); - ПараметрыФормы.Вставить("Переменные",МассивИменПеременных); - - ОткрытьФорму("ОбщаяФорма.__ФормаВыбораПоля", ПараметрыФормы, ЭтотОбъект,,,, - Новый ОписаниеОповещения("ОткрытьФормуВыбораПоляЗавершение", ЭтотОбъект), - РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс); + ОткрытьФорму("ОбщаяФорма.__ФормаВыбораПоля", ПараметрыФормы, ЭтотОбъект); КонецПроцедуры // ОткрытьФормуВыбораПоля() -// Оработчик оповещения "ОткрытьФормуВыбораПоляЗавершение". -// -// Параметры: -// РезСтруктура - Структура. -// Параметры - Структура. -// -&НаКлиенте -Процедура ОткрытьФормуВыбораПоляЗавершение(Результат, Параметры) Экспорт - - Если ТипЗнч(Результат) = Тип("Структура") Тогда - Объект.КодПодпрограммы = СтрШаблон("%1 %2", Объект.КодПодпрограммы, Результат.Имя); - УстановитьИсполняемыйКод(); - Модифицированность = Истина; - КонецЕсли; - -КонецПроцедуры - &НаКлиенте Процедура ОткрытьКонструкторУсловногоВыражения() ПараметрыФормы = Новый Структура; - СписокПеременных = Новый СписокЗначений; - Для Каждого Элемент Из Объект.Переменные Цикл - СписокПеременных.Добавить(Элемент.Имя); - КонецЦикла; + ДополнитьПараметрыОткрытияФормы(ПараметрыФормы); - ПараметрыФормы.Вставить("Переменные", СписокПеременных); - - ОткрытьФорму(КлючОбъекта("УсловныйОператор"), ПараметрыФормы, ЭтотОбъект,,,, - Новый ОписаниеОповещения("ОткрытьКонструкторУсловногоВыраженияЗавершение", ЭтотОбъект)); - -КонецПроцедуры - -// Процедура обработчик оповещения "ОткрытьКонструкторУсловногоВыраженияЗавершение". -// -// Параметры: -// РезВыражение - Строка. -// Параметры - Структура. -// -&НаКлиенте -Процедура ОткрытьКонструкторУсловногоВыраженияЗавершение(Результат, Параметры) Экспорт - - Если ТипЗнч(Результат) = Тип("Строка") Тогда - Объект.КодПодпрограммы = СтрШаблон("%1 %2", Объект.КодПодпрограммы, Результат); - УстановитьИсполняемыйКод(); - КонецЕсли; + ОткрытьФорму(КлючОбъекта("УсловныйОператор"), ПараметрыФормы, ЭтотОбъект); КонецПроцедуры @@ -631,6 +594,27 @@ Возврат "Справочник.__ПользовательскиеФункции.Форма." + ИмяФормы; КонецФункции +&НаКлиенте +Процедура ДополнитьПараметрыОткрытияФормы(ПараметрыОткрытия) + + ЗначенияЗаполнения = Новый Структура; + + МассивИменПеременных = Новый Массив; + Для Каждого ТекСтрока Из Объект.Переменные Цикл + МассивИменПеременных.Добавить(ТекСтрока.Имя); + КонецЦикла; + ЗначенияЗаполнения.Вставить("Переменные",МассивИменПеременных); + + МассивИменПараметров = Новый Массив; + Для Каждого ТекСтрока Из Объект.ПараметрыФункции Цикл + МассивИменПараметров.Добавить(ТекСтрока.Наименование); + КонецЦикла; + ЗначенияЗаполнения.Вставить("Параметры", МассивИменПараметров); + + ПараметрыОткрытия.Вставить("ЗначенияЗаполнения", ЗначенияЗаполнения); + +КонецПроцедуры + #Область ОбработчикиСобытийПоляРедактора &НаКлиенте diff --git "a/src/cf/CommonForms/__\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\273\321\217/Ext/Form.xml" "b/src/cf/CommonForms/__\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\273\321\217/Ext/Form.xml" index 9bf4864d..247bb12a 100644 --- "a/src/cf/CommonForms/__\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\273\321\217/Ext/Form.xml" +++ "b/src/cf/CommonForms/__\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\273\321\217/Ext/Form.xml" @@ -10,11 +10,69 @@ Field Selection + LockOwnerWindow false false useIfNecessary + + Abort + Cancel + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + - false + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Команды свернуть развернуть</v8:content> + </v8:item> + + + + ru + Команды свернуть развернуть + + + Compact + + + + + + + ПриСозданииНаСервере @@ -102,54 +160,6 @@ - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Действия формы</v8:content> - </v8:item> - <v8:item> - <v8:lang>en</v8:lang> - <v8:content>Form Actions</v8:content> - </v8:item> - - Right - - - - - - - - @@ -271,49 +281,49 @@ - + <v8:item> <v8:lang>ru</v8:lang> - <v8:content>Переменные</v8:content> + <v8:content>Описание справочники</v8:content> </v8:item> <v8:item> <v8:lang>en</v8:lang> - <v8:content>Variables</v8:content> + <v8:content>Description Catalogs</v8:content> </v8:item> - v8:ValueListType + v8:TypeDescription - + <v8:item> <v8:lang>ru</v8:lang> - <v8:content>Описание справочники</v8:content> + <v8:content>Описание документы</v8:content> </v8:item> <v8:item> <v8:lang>en</v8:lang> - <v8:content>Description Catalogs</v8:content> + <v8:content>Description Documents</v8:content> </v8:item> v8:TypeDescription - + <v8:item> <v8:lang>ru</v8:lang> - <v8:content>Описание документы</v8:content> - </v8:item> - <v8:item> - <v8:lang>en</v8:lang> - <v8:content>Description Documents</v8:content> + <v8:content>Имя приемника</v8:content> </v8:item> - v8:TypeDescription + xs:string + + 0 + Variable + @@ -338,33 +348,43 @@ КомандаОК DontUse - + <v8:item> <v8:lang>ru</v8:lang> - <v8:content>Обновить</v8:content> - </v8:item> - <v8:item> - <v8:lang>en</v8:lang> - <v8:content>Refresh</v8:content> + <v8:content>Свернуть строки</v8:content> </v8:item> ru - Обновить + Свернуть строки + + + StdPicture.CollapseAll + true + + СвернутьСтроки + + + <v8:item> - <v8:lang>en</v8:lang> - <v8:content>Refresh</v8:content> + <v8:lang>ru</v8:lang> + <v8:content>Развернуть строки</v8:content> + </v8:item> + + + + ru + Развернуть строки - StdPicture.Refresh + StdPicture.ExpandAll true - КомандаОбновить - DontUse + РазвернутьСтроки \ No newline at end of file diff --git "a/src/cf/CommonForms/__\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\273\321\217/Ext/Form/Module.bsl" "b/src/cf/CommonForms/__\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\273\321\217/Ext/Form/Module.bsl" index 4fcf09d5..0dd7e6d8 100644 --- "a/src/cf/CommonForms/__\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\273\321\217/Ext/Form/Module.bsl" +++ "b/src/cf/CommonForms/__\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\273\321\217/Ext/Form/Module.bsl" @@ -25,17 +25,21 @@ Параметры.Свойство("Режим", Режим); - Если Параметры.Свойство("Переменные") Тогда - Для Каждого Имя Из Параметры.Переменные Цикл - Переменные.Добавить(Имя); - КонецЦикла; - КонецЕсли; + Параметры.Свойство("ИмяПриемника", ИмяПриемника); + + ЗначенияЗаполнения = Неопределено; + Если Параметры.Свойство("АдресЗначений") Тогда + ЗначенияЗаполнения = ПолучитьИзВременногоХранилища(Параметры.АдресЗначений); + КонецЕсли; + Если Параметры.Свойство("ЗначенияЗаполнения") Тогда + ЗначенияЗаполнения = Параметры.ЗначенияЗаполнения; + КонецЕсли; + + ЗаполнитьДерево(ЗначенияЗаполнения); ОписаниеСправочники = Справочники.ТипВсеСсылки(); ОписаниеДокументы = Документы.ТипВсеСсылки(); - ОбновитьДерево(); - Если Не Поля.ПолучитьЭлементы().Количество() Тогда __ОбщегоНазначенияСлужебный.СообщитьПользователю(НСтр("ru='Нет полей для выбора.';en='No fields to select.'"),,,, Отказ); КонецЕсли; @@ -49,9 +53,9 @@ &НаКлиенте Процедура ПоляВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) - Результат = СформироватьРезСтруктуру(Элементы.Поля.ТекущаяСтрока); - Если ТипЗнч(Результат) = Тип("Структура") Тогда - Закрыть(Результат); + ВыбраннаяСтрока = Элементы.Поля.ТекущиеДанные; + Если ВыбраннаяСтрока.Доступно Тогда + ВыбратьПолеИЗакрыть(ВыбраннаяСтрока.Имя); КонецЕсли; КонецПроцедуры @@ -71,23 +75,36 @@ КонецПроцедуры -#КонецОбласти - -#Область ОбработчикиКомандФормы +&НаКлиенте +Процедура РазвернутьСтроки(Команда) + + __СтандартныеПодсистемыСлужебныйКлиент.РазвернутьУзлыДерева(ЭтотОбъект, "Поля"); + +КонецПроцедуры &НаКлиенте -Процедура КомандаОК(Команда) +Процедура СвернутьСтроки(Команда) - ТекущаяСтрока = Элементы.Поля.ТекущаяСтрока; - Результат = СформироватьРезСтруктуру(ТекущаяСтрока); - Закрыть(Результат); + ВсеСтроки = Элементы.Поля; + Для Каждого ДанныеСтроки Из Поля.ПолучитьЭлементы() Цикл + ВсеСтроки.Свернуть(ДанныеСтроки.ПолучитьИдентификатор()); + КонецЦикла; КонецПроцедуры +#КонецОбласти + +#Область ОбработчикиКомандФормы + &НаКлиенте -Процедура КомандаОбновить(Команда) +Процедура КомандаОК(Команда) - ОбновитьДерево(); + ВыбраннаяСтрока = Элементы.Поля.ТекущиеДанные; + Если ВыбраннаяСтрока.Доступно Тогда + ВыбратьПолеИЗакрыть(ВыбраннаяСтрока.Имя); + КонецЕсли; + + __ОбщегоНазначенияСлужебныйКлиент.СообщитьПользователю(НСтр("ru = 'Выбрано недоступное поле!'")); КонецПроцедуры @@ -95,23 +112,13 @@ #Область СлужебныеПроцедурыИФункции -&НаСервере -Процедура ОбновитьДерево() +&НаКлиенте +Процедура ВыбратьПолеИЗакрыть(ИмяПоля) - ДанныеДерева = Поля.ПолучитьЭлементы(); - ДанныеДерева.Очистить(); - - Если Переменные.Количество() Тогда - - ЭлементВерх = ДанныеДерева.Добавить(); - ЗаполнитьЭлементДерева(ЭлементВерх, "Переменные",,,,, БиблиотекаКартинок.__Реквизиты); - - Коллекция = ЭлементВерх.ПолучитьЭлементы(); - - Для Каждого ТекущаяПеременная Из Переменные Цикл - ЗаполнитьЭлементДерева(Коллекция.Добавить(), ТекущаяПеременная.Значение,,, Истина, Истина); - КонецЦикла; - КонецЕсли; + ПараметрыВыбора = Новый Структура; + ПараметрыВыбора.Вставить("Поле", ИмяПоля); + ПараметрыВыбора.Вставить("ИмяПриемника", ИмяПриемника); + ОповеститьОВыборе(ПараметрыВыбора); КонецПроцедуры @@ -153,43 +160,6 @@ КонецПроцедуры -&НаСервере -Функция СобратьИмена(СтрокаСтарт) - - Результат = ""; - Если СтрокаСтарт <> Неопределено Тогда - - Результат = СтрокаСтарт.Имя; - - СтрокаРодитель = СтрокаСтарт.ПолучитьРодителя(); - Если СтрокаРодитель <> Неопределено Тогда - Результат = СобратьИмена(СтрокаРодитель) + "." + Результат; - КонецЕсли; - КонецЕсли; - - Возврат Результат; - -КонецФункции - -&НаСервере -Функция СформироватьРезСтруктуру(ИдСтроки) - - Результат = Неопределено; - - Если ТипЗнч(ИдСтроки) = Тип("Число") Тогда - - ТекущаяСтрока = Поля.НайтиПоИдентификатору(ИдСтроки); - - Если Не ТекущаяСтрока = Неопределено И ТекущаяСтрока.Доступно Тогда - Результат = Новый Структура("Имя"); - Результат.Имя = СобратьИмена(ТекущаяСтрока); - КонецЕсли; - КонецЕсли; - - Возврат Результат; - -КонецФункции - &НаСервере Процедура РазвернутьПодчиненные(ИдСтроки) @@ -266,4 +236,32 @@ КонецПроцедуры +// Процедура заполняет дерево формы "Поля" +// +// Параметры: +// ЗначенияЗаполнения - Структура - переданные значения +// * Ключ - Строка - Имя класса (переменные, параметры и т.д.) +// * Значение - Массив из Строка - Имена выбираемых полей. +// +&НаСервере +Процедура ЗаполнитьДерево(ЗначенияЗаполнения = Неопределено) + + Если ЗначенияЗаполнения = Неопределено Тогда + Возврат; + КонецЕсли; + + ДанныеДерева = Поля.ПолучитьЭлементы(); + Для Каждого Пара Из ЗначенияЗаполнения Цикл + ЭлементВерх = ДанныеДерева.Добавить(); + ЗаполнитьЭлементДерева(ЭлементВерх, Пара.Ключ,,,,, БиблиотекаКартинок.__Реквизиты); + + Коллекция = ЭлементВерх.ПолучитьЭлементы(); + + Для Каждого ТекущаяПеременная Из Пара.Значение Цикл + ЗаполнитьЭлементДерева(Коллекция.Добавить(), ТекущаяПеременная,,, Истина, Истина); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + #КонецОбласти diff --git "a/src/cf/CommonModules/__\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" "b/src/cf/CommonModules/__\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" index a4d28425..4546c4fe 100644 --- "a/src/cf/CommonModules/__\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" +++ "b/src/cf/CommonModules/__\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" @@ -1869,6 +1869,7 @@ Продолжить; КонецЕсли; Переменные.Вставить(ВыборкаПерем.Имя, ВыборкаПерем.Значение); + ЗаменаПодстроки(ТекстФункции, ВыборкаПерем.Имя, "Переменные."); КонецЦикла; Параметры = ПодставитьПараметрыВФункцию(ТекстФункции, Параметры, ВыборкаТЧ, Отказ); @@ -2393,7 +2394,7 @@ // Функция ПодставитьПараметрыВФункцию(Текст, Параметры, Выборка, Отказ = Ложь) - Парам = Новый Структура; + ВозвращаемыеПараметры = Новый Структура; Пока Выборка.Следующий() Цикл Значение = Неопределено; Если Параметры.Свойство(Выборка.Наименование, Значение) Тогда @@ -2414,11 +2415,11 @@ Продолжить; КонецЕсли; - Парам.Вставить(Выборка.Наименование, Значение); - ЗаменаПодстроки(Текст, Выборка.Наименование); + ВозвращаемыеПараметры.Вставить(Выборка.Наименование, Значение); + ЗаменаПодстроки(Текст, Выборка.Наименование, "Параметры."); КонецЦикла; - Возврат Парам; + Возврат ВозвращаемыеПараметры; КонецФункции @@ -2429,9 +2430,8 @@ // Текст - Строка - Исходный текст // Ключ - Строка - По ключу осуществляется поиск и замена // -Процедура ЗаменаПодстроки(Текст, Ключ) +Процедура ЗаменаПодстроки(Текст, Ключ, Префикс) - Префикс = "Параметры."; Позиция = СтрНайти(Текст, Ключ); Пока Позиция > 0 Цикл @@ -2441,11 +2441,13 @@ СимволПосле = Сред(Текст, Позиция + СтрДлина(Ключ), 1); КодПосле = КодСимвола(НРег(СимволПосле)); + ДлинаПрефикса = 0; Если ЭтоДопустимыйСимвол(КодДо) И ЭтоДопустимыйСимвол(КодПосле) Тогда Текст = СтрЗаменить(Текст, СимволДо + Ключ + СимволПосле, СимволДо + Префикс + Ключ + СимволПосле); + ДлинаПрефикса = СтрДлина(Префикс) КонецЕсли; - Позиция = СтрНайти(Текст, Ключ, НаправлениеПоиска.СНачала, Позиция + СтрДлина(Префикс) + 1); + Позиция = СтрНайти(Текст, Ключ, НаправлениеПоиска.СНачала, Позиция + ДлинаПрефикса + 1); КонецЦикла; @@ -2464,7 +2466,8 @@ Если КодСимвола >= 48 И КодСимвола <= 57 // Цифры Или КодСимвола >= 97 И КодСимвола <= 122 // (en) буквы - Или КодСимвола > 127 Тогда // региональные коды + Или КодСимвола > 127 // региональные коды + Или КодСимвола = 46 Или КодСимвола = 34 Тогда // точка(.), кавычка(") Возврат Ложь; КонецЕсли; diff --git "a/src/cf/CommonModules/__\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\232\320\273\320\270\320\265\320\275\321\202.xml" "b/src/cf/CommonModules/__\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\232\320\273\320\270\320\265\320\275\321\202.xml" new file mode 100644 index 00000000..633afe76 --- /dev/null +++ "b/src/cf/CommonModules/__\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\232\320\273\320\270\320\265\320\275\321\202.xml" @@ -0,0 +1,23 @@ + + + + + __СтандартныеПодсистемыКлиент + + + ru + Стандартные подсистемы клиент + + + + false + true + false + false + true + false + false + DontUse + + + \ No newline at end of file diff --git "a/src/cf/CommonModules/__\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" "b/src/cf/CommonModules/__\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" new file mode 100644 index 00000000..e7ec1cdd --- /dev/null +++ "b/src/cf/CommonModules/__\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" @@ -0,0 +1,58 @@ +// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, +// включая доработку типовых конфигураций. +// +// Copyright First BIT company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// URL: https://github.com/firstBitSportivnaya/PSSL/ +// + +#Область ПрограммныйИнтерфейс + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +#Область МетодыАналогиБСП + +// Аналог метода БСП. Разворачивает узлы указанного дерева на форме. +// +// Параметры: +// Форма - ФормаКлиентскогоПриложения - форма, на которой размещен элемент управления с деревом значений. +// ИмяЭлементаФормы - Строка - имя элемента с таблицей формы (деревом значений) и связанного с ней +// реквизита формы (должны совпадать). +// ИдентификаторСтрокиДерева - Произвольный - идентификатор строки дерева, которую требуется развернуть. +// Если указано "*", то будут развернуты все узлы верхнего уровня. +// Если указано Неопределено, то строки дерева развернуты не будут. +// Значение по умолчанию: "*". +// РазвернутьСПодчиненными - Булево - если Истина, то следует раскрыть также и все подчиненные узлы. +// По умолчанию Ложь. +// +Процедура РазвернутьУзлыДерева(Форма, ИмяЭлементаФормы, ИдентификаторСтрокиДерева = "*", РазвернутьСПодчиненными = Ложь) Экспорт + + ТаблицаЭлемент = Форма.Элементы[ИмяЭлементаФормы]; + Если ИдентификаторСтрокиДерева = "*" Тогда + Узлы = Форма[ИмяЭлементаФормы].ПолучитьЭлементы(); + Для Каждого Узел Из Узлы Цикл + ТаблицаЭлемент.Развернуть(Узел.ПолучитьИдентификатор(), РазвернутьСПодчиненными); + КонецЦикла; + Иначе + ТаблицаЭлемент.Развернуть(ИдентификаторСтрокиДерева, РазвернутьСПодчиненными); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти diff --git "a/src/cf/CommonModules/__\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202.xml" "b/src/cf/CommonModules/__\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202.xml" new file mode 100644 index 00000000..f9ad0a01 --- /dev/null +++ "b/src/cf/CommonModules/__\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202.xml" @@ -0,0 +1,23 @@ + + + + + __СтандартныеПодсистемыСлужебныйКлиент + + + ru + Стандартные подсистемы служебный клиент + + + + false + true + false + false + true + false + false + DontUse + + + \ No newline at end of file diff --git "a/src/cf/CommonModules/__\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" "b/src/cf/CommonModules/__\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" new file mode 100644 index 00000000..8f1900a8 --- /dev/null +++ "b/src/cf/CommonModules/__\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" @@ -0,0 +1,47 @@ +// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, +// включая доработку типовых конфигураций. +// +// Copyright First BIT company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// URL: https://github.com/firstBitSportivnaya/PSSL/ +// + +#Область ПрограммныйИнтерфейс + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ПереадресацияМетодов + +// См. __СтандартныеПодсистемыКлиент.РазвернутьУзлыДерева. +Процедура РазвернутьУзлыДерева(Форма, ИмяЭлементаФормы, ИдентификаторСтрокиДерева = "*", РазвернутьСПодчиненными = Ложь) Экспорт + + Модуль = ПолучитьМодуль(); + Модуль.РазвернутьУзлыДерева(Форма, ИмяЭлементаФормы, ИдентификаторСтрокиДерева, РазвернутьСПодчиненными); + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ПолучитьМодуль() + Возврат __ОбщегоНазначенияКлиент.ОбщийМодуль("СтандартныеПодсистемыКлиент", "__СтандартныеПодсистемыКлиент"); +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git a/src/cf/Configuration.xml b/src/cf/Configuration.xml index 71663b86..ed6a8524 100644 --- a/src/cf/Configuration.xml +++ b/src/cf/Configuration.xml @@ -311,7 +311,9 @@ __СправочникиПередЗаписью __СправочникиПриЗаписи __СправочникиПриКопировании + __СтандартныеПодсистемыКлиент __СтандартныеПодсистемыПовтИсп + __СтандартныеПодсистемыСлужебныйКлиент __СтандартныеПодсистемыСлужебныйПовтИсп __СтроковыеФункцииКлиентСервер __СтроковыеФункцииСлужебныйКлиентСервер From 2eb33ec9817fbab78f64c6ca9cbec8a008a87df7 Mon Sep 17 00:00:00 2001 From: Denis Date: Mon, 6 May 2024 16:32:34 +0300 Subject: [PATCH 2/5] Code smells fixed --- .../Ext/Form/Module.bsl" | 2 +- .../Ext/Module.bsl" | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git "a/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" "b/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" index 11073f2c..bb378d19 100644 --- "a/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" +++ "b/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" @@ -603,7 +603,7 @@ Для Каждого ТекСтрока Из Объект.Переменные Цикл МассивИменПеременных.Добавить(ТекСтрока.Имя); КонецЦикла; - ЗначенияЗаполнения.Вставить("Переменные",МассивИменПеременных); + ЗначенияЗаполнения.Вставить("Переменные", МассивИменПеременных); МассивИменПараметров = Новый Массив; Для Каждого ТекСтрока Из Объект.ПараметрыФункции Цикл diff --git "a/src/cf/CommonModules/__\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" "b/src/cf/CommonModules/__\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" index 4546c4fe..5c05a405 100644 --- "a/src/cf/CommonModules/__\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" +++ "b/src/cf/CommonModules/__\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" @@ -2429,6 +2429,7 @@ // Параметры: // Текст - Строка - Исходный текст // Ключ - Строка - По ключу осуществляется поиск и замена +// Префикс - Строка - Для инициализации параметров и переменных при выполнении пользовательской функции // Процедура ЗаменаПодстроки(Текст, Ключ, Префикс) @@ -2444,7 +2445,7 @@ ДлинаПрефикса = 0; Если ЭтоДопустимыйСимвол(КодДо) И ЭтоДопустимыйСимвол(КодПосле) Тогда Текст = СтрЗаменить(Текст, СимволДо + Ключ + СимволПосле, СимволДо + Префикс + Ключ + СимволПосле); - ДлинаПрефикса = СтрДлина(Префикс) + ДлинаПрефикса = СтрДлина(Префикс); КонецЕсли; Позиция = СтрНайти(Текст, Ключ, НаправлениеПоиска.СНачала, Позиция + ДлинаПрефикса + 1); From fc0f070fa236ca3f88862d5a68443acf98de1e23 Mon Sep 17 00:00:00 2001 From: Denis Date: Mon, 6 May 2024 17:36:46 +0300 Subject: [PATCH 3/5] Code smells and bugs fixed --- .../Ext/Form.xml" | 11 +++++++++++ .../Ext/Form.xml" | 11 +++++++++++ .../Ext/Form.xml" | 11 +++++++++++ .../Ext/Form/Module.bsl" | 2 +- .../Ext/Form/Module.bsl" | 13 +++++++++++-- 5 files changed, 45 insertions(+), 3 deletions(-) diff --git "a/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\234\320\260\321\201\321\201\320\270\320\262\320\260/Ext/Form.xml" "b/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\234\320\260\321\201\321\201\320\270\320\262\320\260/Ext/Form.xml" index e47022d9..52ceb54c 100644 --- "a/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\234\320\260\321\201\321\201\320\270\320\262\320\260/Ext/Form.xml" +++ "b/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\234\320\260\321\201\321\201\320\270\320\262\320\260/Ext/Form.xml" @@ -16,6 +16,17 @@ Form.Command.СохранитьРезультат + diff --git "a/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\321\213/Ext/Form.xml" "b/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\321\213/Ext/Form.xml" index 555c1d51..56f07be1 100644 --- "a/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\321\213/Ext/Form.xml" +++ "b/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\321\213/Ext/Form.xml" @@ -16,6 +16,17 @@ Form.Command.СохранитьРезультат + diff --git "a/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271/Ext/Form.xml" "b/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271/Ext/Form.xml" index ea340f49..3c346160 100644 --- "a/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271/Ext/Form.xml" +++ "b/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271/Ext/Form.xml" @@ -16,6 +16,17 @@ Form.Command.СохранитьРезультат + diff --git "a/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271/Ext/Form/Module.bsl" "b/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271/Ext/Form/Module.bsl" index 1e189a10..e7292faa 100644 --- "a/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271/Ext/Form/Module.bsl" +++ "b/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\242\320\260\320\261\320\273\320\270\321\206\321\213\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271/Ext/Form/Module.bsl" @@ -25,7 +25,7 @@ Если Параметры.Свойство("АдресЗначения", АдресЗначения) Тогда Таблица = ПолучитьИзВременногоХранилища(АдресЗначения); - Если Таблица <> Неопределено Тогда + Если ТипЗнч(Таблица) = Тип("ТаблицаЗначений") И ЗначениеЗаполнено(Таблица.Колонки) Тогда Для Каждого Колонка Из Таблица.Колонки Цикл // Заполняем таблицу колонок нСтрока = КолонкиТаблицыЗначений.Добавить(); diff --git "a/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" "b/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" index bb378d19..c5caa535 100644 --- "a/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" +++ "b/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" @@ -254,8 +254,7 @@ ТекДанные.ТипВФорме = ВыбранныйЭлемент.Представление; // Доработать, отражение количество элементов в коллекции, условное оформление - цвет текста, запрет изменения ТекДанные.ЗначениеВФорме = ВыбранныйЭлемент.Представление; - ПустаяКоллекция = Новый(Тип(ВыбранныйЭлемент.Значение)); - ТекДанные.АдресЗначения = ПоместитьВоВременноеХранилище(ПустаяКоллекция, Новый УникальныйИдентификатор); + ТекДанные.АдресЗначения = СоздатьКоллекциюИПоместитьВХранилище(ВыбранныйЭлемент.Значение); Иначе ИнициализацияТипаИЗначенияПараметра(ТекДанные, ВыбранныйЭлемент); КонецЕсли; @@ -2069,6 +2068,16 @@ КонецФункции +&НаСервереБезКонтекста +Функция СоздатьКоллекциюИПоместитьВХранилище(Знач Значение) + + ПустаяКоллекция = Новый(Тип(Значение)); + АдресЗначения = ПоместитьВоВременноеХранилище(ПустаяКоллекция, Новый УникальныйИдентификатор); + + Возврат АдресЗначения; + +КонецФункции + #КонецОбласти #КонецОбласти From 42a466a173ebf5f66453784c403f4d00ad417791 Mon Sep 17 00:00:00 2001 From: Denis Date: Tue, 7 May 2024 13:02:12 +0300 Subject: [PATCH 4/5] Added types for context and fixed bugs --- .../Ext/ManagerModule.bsl" | 47 +++++++++++++++++-- .../Ext/Form/Module.bsl" | 22 +++++---- 2 files changed, 54 insertions(+), 15 deletions(-) diff --git "a/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Ext/ManagerModule.bsl" "b/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Ext/ManagerModule.bsl" index 6b82d7ca..6c78c1de 100644 --- "a/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Ext/ManagerModule.bsl" +++ "b/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Ext/ManagerModule.bsl" @@ -55,6 +55,8 @@ СписокТипов.Добавить("Массив", НСтр("ru = 'Массив'")); СписокТипов.Добавить("Структура", НСтр("ru = 'Структура'")); + СписокДобавленныхТипов = СписокТипов.Скопировать(); + Для каждого Стр Из НеПримитивныеТипы Цикл ЗначениеТипа = XMLТип(Стр.Значение).ИмяТипа; ПредставлениеТипа = Строка(Стр.Значение); @@ -381,8 +383,9 @@ // Процедура ЗаполнитьПараметры(Объект) Экспорт + Объект.ПараметрыФункции.Очистить(); + Если Объект.Контекст = Перечисления.__КонтекстыВыполненияПользовательскихФункций.ЗагрузкаЭксель Тогда - Объект.ПараметрыФункции.Очистить(); ДобавитьПараметрыЗагрузкаЭксель(Объект); КонецЕсли; @@ -396,26 +399,60 @@ // // Параметры: // ИмяПараметра - Строка. +// ТипПараметра - Строка - Подставляемый тип в строковом, по умолчанию остается пустой // -Процедура НайтиДобавитьПараметр(Объект, ИмяПараметра) +Процедура НайтиДобавитьПараметр(Объект, ИмяПараметра, ТипПараметра = Неопределено) + + ТипСтрокой = ТипСтрокой(ТипПараметра); ДанныеПоиска = Объект.ПараметрыФункции.НайтиСтроки( Новый Структура("Наименование", ИмяПараметра)); - Если Не ДанныеПоиска.Количество() Тогда + Если Не ЗначениеЗаполнено(ДанныеПоиска) Тогда НоваяСтрока = Объект.ПараметрыФункции.Добавить(); НоваяСтрока.Наименование = ИмяПараметра; + НоваяСтрока.Идентификатор = Новый УникальныйИдентификатор; + НоваяСтрока.Тип = ТипСтрокой; КонецЕсли; КонецПроцедуры +Функция ТипСтрокой(Тип) + + Если Тип = Неопределено Тогда + Возврат ""; + КонецЕсли; + + СписокДобавленныхТипов = Новый СписокЗначений; + Справочники.__ПользовательскиеФункции.СформироватьСписокТипов(СписокДобавленныхТипов); + + ТипСтрокой = Строка(Тип); + + ТипНайден = Ложь; + Для Каждого ЭлементСписка Из СписокДобавленныхТипов Цикл + Если ЭлементСписка.Представление = ТипСтрокой Тогда + ТипНайден = Истина; + Прервать; + КонецЕсли; + КонецЦикла; + + Если Не ТипНайден Тогда + ТипСтрокой = XMLТип(Тип).ИмяТипа; + КонецЕсли; + + Возврат ТипСтрокой; + +КонецФункции + // Добавляет параметры, необходимые для контекста ЗагрузкаЭксель. // Процедура ДобавитьПараметрыЗагрузкаЭксель(Объект) + ТипСтруктура = Тип("Структура"); + ТипСтрока = Тип("Строка"); НайтиДобавитьПараметр(Объект, "СтрокаЗагрузки"); - НайтиДобавитьПараметр(Объект, "ДанныеЗагрузки"); - НайтиДобавитьПараметр(Объект, "СтрокаПравил"); + НайтиДобавитьПараметр(Объект, "ДанныеЗагрузки", ТипСтруктура); + НайтиДобавитьПараметр(Объект, "СтрокаПравил", ТипСтрока); КонецПроцедуры diff --git "a/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" "b/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" index c5caa535..8675f561 100644 --- "a/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" +++ "b/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" @@ -434,6 +434,7 @@ Процедура ДобавитьПараметры() Справочники.__ПользовательскиеФункции.ЗаполнитьПараметры(Объект); + ПрочитатьТипыИЗначенияПараметров(Объект); ПолучитьНазваниеПодпрограммыСПараметрамиСервер(Истина); КонецПроцедуры // ДобавитьПараметры() @@ -476,15 +477,15 @@ СтруктураОтбора.Вставить("Идентификатор", ТекущийПараметр.Идентификатор); АктивныеСтроки = Объект.ПараметрыФункции.НайтиСтроки(СтруктураОтбора); - Если ЗначениеЗаполнено(АктивныеСтроки) Тогда + Если ЗначениеЗаполнено(АктивныеСтроки) И ЗначениеЗаполнено(ТекущийПараметр.Тип) Тогда Представление = Строка(Тип(ТекущийПараметр.Тип)); АктивныеСтроки[0].ТипВФорме = Представление; // Доработать, отражение количество элементов в коллекции, условное оформление - цвет текста, запрет изменения - АктивныеСтроки[0].ЗначениеВФорме = Представление; + НастройкаПараметра = Неопределено; Если ПрочитатьЗначения Тогда НастройкаПараметра = НастройкиПараметров.Получить(ТекущийПараметр.Идентификатор); - ЗначениеПараметраФункции(АктивныеСтроки[0], НастройкаПараметра); КонецЕсли; + ЗначениеПараметраФункции(АктивныеСтроки[0], НастройкаПараметра); КонецЕсли; КонецЦикла; @@ -493,19 +494,19 @@ &НаСервере Процедура ЗначениеПараметраФункции(СтрокаТаблицы, Настройка) - Если Настройка = Неопределено Тогда - Возврат; - КонецЕсли; - Если СтрокаТаблицы.Тип = "ТаблицаЗначений" Или СтрокаТаблицы.Тип = "Структура" Или СтрокаТаблицы.Тип = "Массив" Тогда - Если ТипЗнч(Настройка.Значение) <> Тип("Строка") Тогда + Если Настройка <> Неопределено И ТипЗнч(Настройка.Значение) <> Тип("Строка") Тогда СтрокаТаблицы.АдресЗначения = ПоместитьВоВременноеХранилище(Настройка.Значение, Новый УникальныйИдентификатор); КонецЕсли; СтрокаТаблицы.ЗначениеВФорме = СтрокаТаблицы.ТипВФорме; Иначе - СтрокаТаблицы.ЗначениеВФорме = Настройка.Значение; + Массив = Новый Массив; + Массив.Добавить(Тип(СтрокаТаблицы.Тип)); + Описание = Новый ОписаниеТипов(Массив); + Значение = Описание.ПривестиЗначение(Тип(СтрокаТаблицы.Тип)); + СтрокаТаблицы.ЗначениеВФорме = ?(Настройка <> Неопределено, Настройка.Значение, Значение); КонецЕсли; КонецПроцедуры @@ -1988,7 +1989,8 @@ &НаСервереБезКонтекста Функция ТипСтрока(Знач Значение) - СписокДобавленныхТипов = Справочники.__ПользовательскиеФункции.СформироватьСписокТипов(); + СписокДобавленныхТипов = Новый СписокЗначений; + Справочники.__ПользовательскиеФункции.СформироватьСписокТипов(СписокДобавленныхТипов); ТипСтрока = Строка(Тип(Значение)); Если Значение = "СписокЗначений" Тогда From bfd46a40efc14a3e9a37b483b8d6d9133a00903a Mon Sep 17 00:00:00 2001 From: Denis Date: Tue, 7 May 2024 13:09:43 +0300 Subject: [PATCH 5/5] Fixed code smells --- .../Ext/ManagerModule.bsl" | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git "a/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Ext/ManagerModule.bsl" "b/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Ext/ManagerModule.bsl" index 6c78c1de..c1e643db 100644 --- "a/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Ext/ManagerModule.bsl" +++ "b/src/cf/Catalogs/__\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Ext/ManagerModule.bsl" @@ -398,8 +398,9 @@ // Выполняет добавляет параметр при отсутствии. // // Параметры: -// ИмяПараметра - Строка. -// ТипПараметра - Строка - Подставляемый тип в строковом, по умолчанию остается пустой +// Объект - СправочникОбъект.__ПользовательскиеФункции - Изменяемый объект. +// ИмяПараметра - Строка - Имя добавляемого параметра. +// ТипПараметра - Строка - Подставляемый тип в строковом, по умолчанию остается пустой. // Процедура НайтиДобавитьПараметр(Объект, ИмяПараметра, ТипПараметра = Неопределено) @@ -424,7 +425,7 @@ КонецЕсли; СписокДобавленныхТипов = Новый СписокЗначений; - Справочники.__ПользовательскиеФункции.СформироватьСписокТипов(СписокДобавленныхТипов); + СформироватьСписокТипов(СписокДобавленныхТипов); ТипСтрокой = Строка(Тип); @@ -445,7 +446,10 @@ КонецФункции // Добавляет параметры, необходимые для контекста ЗагрузкаЭксель. -// +// +// Параметры: +// Объект - СправочникОбъект.__ПользовательскиеФункции - Изменяемый объект. +// Процедура ДобавитьПараметрыЗагрузкаЭксель(Объект) ТипСтруктура = Тип("Структура");