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 - ForItem - 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 + + + + КаталогИсходногоКодаКонфигурацииНачалоВыбора + + <v8:item> @@ -866,6 +877,22 @@ <v8:Type>xs:boolean</v8:Type> </Type> </Attribute> + <Attribute name="КаталогИсходногоКодаКонфигурации" id="20"> + <Title> + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Каталог исходного кода конфигурации</v8:content> + </v8:item> + + + 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