From 1a4bb03f45689928eff7a2d726a0fc9b85c44a10 Mon Sep 17 00:00:00 2001
From: DenisUshakov <59319861+DenisUshakov@users.noreply.github.com>
Date: Wed, 3 Apr 2024 11:51:40 +0300
Subject: [PATCH 1/2] newasynchmethods (#32)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* Переделаны синхронные вызовы на асинхронные
---
.../Ext/Form/Module.bsl" | 29 ++++++++++---------
tools/syntax-check-exception-file.txt | 5 ----
2 files changed, 16 insertions(+), 18 deletions(-)
diff --git "a/src/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/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 22e8e36b..61d4f3e5 100644
--- "a/src/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/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"
@@ -904,7 +904,7 @@
КонецПроцедуры
&НаКлиенте
-Функция ПолучитьМодульИзИсходников(ПолноеИмяФайла)
+Асинх Функция ПолучитьМодульИзИсходников(ПолноеИмяФайла)
СмещениеИмениВПути = 3;
@@ -912,7 +912,7 @@
ИмяМодуля = Путь[Путь.Количество() - СмещениеИмениВПути];
Текст = Новый ТекстовыйДокумент();
- Текст.Прочитать(ПолноеИмяФайла);
+ Ждать Текст.ПрочитатьАсинх(ПолноеИмяФайла);
ТекстМодуля = Текст.ПолучитьТекст();
Возврат Новый Структура("Имя, Текст", ИмяМодуля, ТекстМодуля);
@@ -945,12 +945,12 @@
КонецФункции
&НаКлиенте
-Процедура ВопросЗагрузкиОбщихМодулейЗавершение(Ответ, ДопПараметры) Экспорт
+Асинх Процедура ВопросЗагрузкиОбщихМодулейЗавершение(Ответ, ДопПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
Состояние("Загрузка общих модулей...");
- Файлы = НайтиФайлы(ДопПараметры.КаталогМодулей, "Ext" + РазделительПути + "*.bsl", Истина);
+ Файлы = Ждать НайтиФайлыАсинх(ДопПараметры.КаталогМодулей, "Ext" + РазделительПути + "*.bsl", Истина);
Для Каждого Файл Из Файлы Цикл
ОбщийМодуль = ПолучитьМодульИзИсходников(Файл.ПолноеИмя);
@@ -963,7 +963,7 @@
КонецПроцедуры
&НаКлиенте
-Функция ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Глобальный)
+Асинх Функция ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Глобальный)
ЗагруженоФункций = 0;
@@ -978,8 +978,9 @@
ФайлНаДиске = Новый Файл(ФайлМодуля);
- Если ФайлНаДиске.Существует() Тогда
- ОбщийМодуль = ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
+ Существует = Ждать ФайлНаДиске.СуществуетАсинх();
+ Если Существует Тогда
+ ОбщийМодуль = Ждать ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
ЗагруженоФункций = View().parseCommonModule(ОбщийМодуль.Имя, ОбщийМодуль.Текст, Глобальный);
КонецЕсли;
@@ -988,7 +989,7 @@
КонецФункции
&НаКлиенте
-Функция ЗагрузитьМодульМенеджераИлиОбъектаПоИмени(КаталогИсходногоКода, СтруктураВыгрузки)
+Асинх Функция ЗагрузитьМодульМенеджераИлиОбъектаПоИмени(КаталогИсходногоКода, СтруктураВыгрузки)
ЗагруженоФункций = 0;
ТипМодуля = СтруктураВыгрузки.ТипМодуля;
@@ -1000,7 +1001,8 @@
ФайлНаДиске = Новый Файл(ФайлМодуля);
- Если ФайлНаДиске.Существует() Тогда
+ Существует = Ждать ФайлНаДиске.СуществуетАсинх();
+ Если Существует Тогда
Модуль = ПолучитьМодульИзИсходников(ФайлНаДиске.ПолноеИмя);
ИмяКоллекции = ПолучитьИмяКоллекцииМетаданныхПоТипу(СтруктураВыгрузки.ТипМетаданных);
АдресЗагрузки = СтрШаблон("%1.items.%2.%3", ИмяКоллекции, СтруктураВыгрузки.ИмяОбъектаМетаданных, ТипМодуля);
@@ -1012,7 +1014,7 @@
КонецФункции
&НаКлиенте
-Процедура ЗагрузитьГлобальныеМодули()
+Асинх Процедура ЗагрузитьГлобальныеМодули()
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
ЕстьГлобальныеМодули = (ГлобальныйМодули <> Неопределено И 0 < ГлобальныйМодули.Количество());
@@ -1022,7 +1024,8 @@
КаталогМодулей = КаталогИсходногоКода + "CommonModules";
КаталогНаДиске = Новый Файл(КаталогМодулей);
- Если КаталогНаДиске.Существует() Тогда
+ Существует = Ждать КаталогНаДиске.СуществуетАсинх();
+ Если Существует Тогда
Индекс = 0;
@@ -1037,7 +1040,7 @@
КонецПроцедуры
&НаКлиенте
-Процедура ЗагрузитьСтруктуруОбщегоМодуляПоЗапросу(ЧастиЗапроса)
+Асинх Процедура ЗагрузитьСтруктуруОбщегоМодуляПоЗапросу(ЧастиЗапроса)
КаталогИсходногоКода = ПолучитьКаталогИсходногоКода();
КоличествоЧастейЗапроса = 2;
@@ -1046,7 +1049,7 @@
ИмяМодуля = ЧастиЗапроса[1];
- ЗагруженоФункций = ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Ложь);
+ ЗагруженоФункций = Ждать ЗагрузитьОбщийМодульПоИмени(КаталогИсходногоКода, ИмяМодуля, Ложь);
Если 0 < ЗагруженоФункций Тогда
View().triggerSuggestions();
КонецЕсли;
diff --git a/tools/syntax-check-exception-file.txt b/tools/syntax-check-exception-file.txt
index df623551..f722d942 100644
--- a/tools/syntax-check-exception-file.txt
+++ b/tools/syntax-check-exception-file.txt
@@ -1,10 +1,5 @@
Справочник.__ИсторияИнтеграции.Форма.ФормаСписка.Форма Возможно ошибочный метод: "ДобавитьЗадание"
Справочник.__ИсторияИнтеграции.Форма.ФормаЭлемента.Форма Использование синхронного вызова: "ИсходныйПоток"
-Справочник.__ПользовательскиеФункции.Форма.ФормаЭлемента.Форма Использование синхронного вызова: "Прочитать"
-Справочник.__ПользовательскиеФункции.Форма.ФормаЭлемента.Форма Использование синхронного вызова: "НайтиФайлы"
-Справочник.__ПользовательскиеФункции.Форма.ФормаЭлемента.Форма Использование синхронного вызова: "Существует"
-Справочник.__ПользовательскиеФункции.Форма.ФормаЭлемента.Форма Использование синхронного вызова: "Существует"
-Справочник.__ПользовательскиеФункции.Форма.ФормаЭлемента.Форма Использование синхронного вызова: "Существует"
Документ.ДемоРаботаСФормами.Форма.ФормаДокумента.Форма Не обнаружено ссылок на процедуру: "ПодсказатьКогдаОбед"
Документ.ДемоРаботаСФормами.Форма.ФормаДокумента.Форма Не обнаружено ссылок на процедуру: "ПоказатьОтца"
Документ.ДемоРаботаСФормами.Форма.ФормаДокумента.Форма Не обнаружено ссылок на процедуру: "СкрытьОтца"
\ No newline at end of file
From 0b203c1e16ce4e20e6db943fecc55e0d997c394c Mon Sep 17 00:00:00 2001
From: DenisUshakov <59319861+DenisUshakov@users.noreply.github.com>
Date: Thu, 4 Apr 2024 18:58:25 +0300
Subject: [PATCH 2/2] selectingdirectory (#34)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* Удален реквизит объекта, добавлен реквизит формы, добавлена логика разделеного хранения директории
---
...0\275\320\272\321\206\320\270\320\270.xml" | 48 -----------
.../Ext/Form.xml" | 27 ++++++
.../Ext/Form/Module.bsl" | 71 +++++++++++++++-
.../Ext/Module.bsl" | 85 ++++++++++++++++++-
4 files changed, 181 insertions(+), 50 deletions(-)
diff --git "a/src/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.xml" "b/src/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.xml"
index 443dd733..07b60aa1 100644
--- "a/src/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.xml"
+++ "b/src/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.xml"
@@ -533,54 +533,6 @@
Use
-
-
- КаталогИсходногоКодаКонфигурации
-
-
- ru
- Каталог исходного кода конфигурации
-
-
- en
- Configuration source code directory
-
-
-
-
- xs:string
-
- 0
- Variable
-
-
- false
-
-
-
- false
-
- false
- false
-
-
- false
-
- DontCheck
- Items
-
-
- Auto
- Auto
-
-
- Auto
-
- DontIndex
- Use
- Use
-
-
diff --git "a/src/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.xml" "b/src/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.xml"
index edd89132..c23e71f2 100644
--- "a/src/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.xml"
+++ "b/src/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.xml"
@@ -10,6 +10,7 @@
ПередЗаписью
ПриСозданииНаСервере
ПередЗаписьюНаСервере
+ ПриЗаписиНаСервере
@@ -71,6 +72,16 @@
КонтекстПриИзменении
+
+ КаталогИсходногоКодаКонфигурации
+ true
+ true
+
+
+
+ КаталогИсходногоКодаКонфигурацииНачалоВыбора
+
+
@@ -866,6 +877,22 @@
xs:boolean
+
+
+
+ ru
+ Каталог исходного кода конфигурации
+
+
+
+ xs:string
+
+ 0
+ Variable
+
+
+ true
+
diff --git "a/src/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/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 61d4f3e5..92106fba 100644
--- "a/src/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/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"
@@ -72,6 +72,12 @@
КонецЕсли;
КонецЕсли;
+ // Получение каталога исходного кода конфигурации
+ Каталог = ПолучитьКаталогИсходногоКодаКонфигурации();
+ Если ЗначениеЗаполнено(Каталог) Тогда
+ КаталогИсходногоКодаКонфигурации = Каталог;
+ КонецЕсли;
+
ПолучитьНазваниеПодпрограммыСПараметрамиСервер();
УправлениеЭлементамиФормы();
@@ -129,6 +135,22 @@
КонецПроцедуры
+&НаСервере
+Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
+
+ Если Отказ Тогда
+ Возврат;
+ КонецЕсли;
+
+ КаталогИсходногоКода = ПолучитьКаталогИсходногоКодаКонфигурации();
+
+ Если ЗначениеЗаполнено(КаталогИсходногоКодаКонфигурации)
+ И КаталогИсходногоКода <> КаталогИсходногоКодаКонфигурации Тогда
+ СохранитьКаталогИсходногоКодаКонфигурации(КаталогИсходногоКодаКонфигурации);
+ КонецЕсли;
+
+КонецПроцедуры
+
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
@@ -147,6 +169,22 @@
КонецПроцедуры
+&НаКлиенте
+Асинх Процедура КаталогИсходногоКодаКонфигурацииНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
+
+ Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
+ Диалог.МножественныйВыбор = Ложь;
+
+ Результат = Ждать Диалог.ВыбратьАсинх();
+ Если Результат = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+
+ Модифицированность = Истина;
+ КаталогИсходногоКодаКонфигурации = Результат[0];
+
+КонецПроцедуры
+
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыПараметрыФункции
@@ -555,6 +593,37 @@
КонецПроцедуры
+&НаСервере
+Функция ПолучитьКаталогИсходногоКодаКонфигурации()
+
+ // ++ Обход ошибки отстутствия модуля БСП, не переносить
+ ОбщегоНазначения = __ВспомогательныйМодульНеПереносить;
+ // -- Обход ошибки отстутствия модуля БСП, не переносить
+
+ Результат = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(КлючОбъекта(),
+ "__ПользовательскиеФункции_КаталогИсхКода", "");
+
+ Возврат Результат;
+
+КонецФункции
+
+&НаСервере
+Процедура СохранитьКаталогИсходногоКодаКонфигурации(Каталог)
+
+ // ++ Обход ошибки отстутствия модуля БСП, не переносить
+ ОбщегоНазначения = __ВспомогательныйМодульНеПереносить;
+ // -- Обход ошибки отстутствия модуля БСП, не переносить
+
+ ОбщегоНазначения.ХранилищеОбщихНастроекСохранить(КлючОбъекта(),
+ "__ПользовательскиеФункции_КаталогИсхКода", Каталог);
+
+КонецПроцедуры
+
+&НаСервере
+Функция КлючОбъекта()
+ Возврат "Справочник.__ПользовательскиеФункции.Форма.ФормаЭлемента";
+КонецФункции
+
#Область ОбработчикиСобытийПоляРедактора
&НаКлиенте
@@ -935,7 +1004,7 @@
&НаКлиенте
Функция ПолучитьКаталогИсходногоКода()
- КаталогИсходногоКода = Объект.КаталогИсходногоКодаКонфигурации;
+ КаталогИсходногоКода = КаталогИсходногоКодаКонфигурации;
Если ЗначениеЗаполнено(КаталогИсходногоКода) Тогда
КаталогИсходногоКода = НормализоватьПуть(КаталогИсходногоКода);
КонецЕсли;
diff --git "a/src/CommonModules/__\320\222\321\201\320\277\320\276\320\274\320\276\320\263\320\260\321\202\320\265\320\273\321\214\320\275\321\213\320\271\320\234\320\276\320\264\321\203\320\273\321\214\320\235\320\265\320\237\320\265\321\200\320\265\320\275\320\276\321\201\320\270\321\202\321\214/Ext/Module.bsl" "b/src/CommonModules/__\320\222\321\201\320\277\320\276\320\274\320\276\320\263\320\260\321\202\320\265\320\273\321\214\320\275\321\213\320\271\320\234\320\276\320\264\321\203\320\273\321\214\320\235\320\265\320\237\320\265\321\200\320\265\320\275\320\276\321\201\320\270\321\202\321\214/Ext/Module.bsl"
index 2b6fc51e..577acef0 100644
--- "a/src/CommonModules/__\320\222\321\201\320\277\320\276\320\274\320\276\320\263\320\260\321\202\320\265\320\273\321\214\320\275\321\213\320\271\320\234\320\276\320\264\321\203\320\273\321\214\320\235\320\265\320\237\320\265\321\200\320\265\320\275\320\276\321\201\320\270\321\202\321\214/Ext/Module.bsl"
+++ "b/src/CommonModules/__\320\222\321\201\320\277\320\276\320\274\320\276\320\263\320\260\321\202\320\265\320\273\321\214\320\275\321\213\320\271\320\234\320\276\320\264\321\203\320\273\321\214\320\235\320\265\320\237\320\265\321\200\320\265\320\275\320\276\321\201\320\270\321\202\321\214/Ext/Module.bsl"
@@ -73,4 +73,87 @@
Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
-КонецПроцедуры
\ No newline at end of file
+КонецПроцедуры
+
+Функция ХранилищеОбщихНастроекЗагрузить(КлючОбъекта, КлючНастроек, ЗначениеПоУмолчанию = Неопределено,
+ ОписаниеНастроек = Неопределено, ИмяПользователя = Неопределено) Экспорт
+
+ Возврат ХранилищеЗагрузить(ХранилищеОбщихНастроек,
+ КлючОбъекта,
+ КлючНастроек,
+ ЗначениеПоУмолчанию,
+ ОписаниеНастроек,
+ ИмяПользователя);
+
+КонецФункции
+
+Процедура ХранилищеОбщихНастроекСохранить(КлючОбъекта, КлючНастроек, Настройки,
+ ОписаниеНастроек = Неопределено,
+ ИмяПользователя = Неопределено,
+ ОбновитьПовторноИспользуемыеЗначения = Ложь) Экспорт
+
+ ХранилищеСохранить(ХранилищеОбщихНастроек,
+ КлючОбъекта,
+ КлючНастроек,
+ Настройки,
+ ОписаниеНастроек,
+ ИмяПользователя,
+ ОбновитьПовторноИспользуемыеЗначения);
+
+КонецПроцедуры
+
+Функция СократитьСтрокуКонтрольнойСуммой(Строка, МаксимальнаяДлина) Экспорт
+
+ МинимальнаяДлина = 32;
+ Результат = Строка;
+ Если СтрДлина(Строка) > МаксимальнаяДлина Тогда
+ Результат = Лев(Строка, МаксимальнаяДлина - МинимальнаяДлина);
+ ХешированиеДанных = Новый ХешированиеДанных(ХешФункция.MD5);
+ ХешированиеДанных.Добавить(Сред(Строка, МаксимальнаяДлина - МинимальнаяДлина + 1));
+ Результат = Результат + СтрЗаменить(ХешированиеДанных.ХешСумма, " ", "");
+ КонецЕсли;
+ Возврат Результат;
+
+КонецФункции
+
+#Область ХранилищеНастроек
+
+Процедура ХранилищеСохранить(МенеджерХранилища, КлючОбъекта, КлючНастроек, Настройки,
+ ОписаниеНастроек, ИмяПользователя, ОбновитьПовторноИспользуемыеЗначения)
+
+ Если Не ПравоДоступа("СохранениеДанныхПользователя", Метаданные) Тогда
+ Возврат;
+ КонецЕсли;
+
+ МенеджерХранилища.Сохранить(КлючОбъекта, КлючНастроек(КлючНастроек), Настройки,
+ ОписаниеНастроек, ИмяПользователя);
+
+ Если ОбновитьПовторноИспользуемыеЗначения Тогда
+ ОбновитьПовторноИспользуемыеЗначения();
+ КонецЕсли;
+
+КонецПроцедуры
+
+Функция ХранилищеЗагрузить(МенеджерХранилища, КлючОбъекта, КлючНастроек, ЗначениеПоУмолчанию,
+ ОписаниеНастроек, ИмяПользователя)
+
+ Результат = Неопределено;
+
+ Если ПравоДоступа("СохранениеДанныхПользователя", Метаданные) Тогда
+ Результат = МенеджерХранилища.Загрузить(КлючОбъекта, КлючНастроек(КлючНастроек),
+ ОписаниеНастроек, ИмяПользователя);
+ КонецЕсли;
+
+ Если Результат = Неопределено Тогда
+ Результат = ЗначениеПоУмолчанию;
+ КонецЕсли;
+
+ Возврат Результат;
+
+КонецФункции
+
+Функция КлючНастроек(Знач Строка)
+ Возврат СократитьСтрокуКонтрольнойСуммой(Строка, 128);
+КонецФункции
+
+#КонецОбласти
\ No newline at end of file