diff --git "a/src/ChartsOfCharacteristicTypes/__\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/ManagerModule.bsl" "b/src/ChartsOfCharacteristicTypes/__\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/ManagerModule.bsl" index a664721b..1de4d1cf 100644 --- "a/src/ChartsOfCharacteristicTypes/__\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/ManagerModule.bsl" +++ "b/src/ChartsOfCharacteristicTypes/__\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/ManagerModule.bsl" @@ -25,146 +25,58 @@ #Область ПрограммныйИнтерфейс -// Возвращает значение ПВХ по имени. +// Возвращает значение ПВХ по идентификатору. // // Параметры: -// Имя - Строка - Имя переменной ПВХ. +// Идентификатор - Строка - Идентификатор переменной ПВХ. // // Возвращаемое значение: // ПроизвольныйТип - Значение переменной ПВХ. // -Функция ПолучитьЗначение(Имя) Экспорт +Функция ПолучитьЗначение(Идентификатор) Экспорт - // ++ Обход ошибки отстутствия модуля БСП, не переносить - ОбщегоНазначения = Неопределено; - // -- Обход ошибки отстутствия модуля БСП, не переносить - - УстановитьПривилегированныйРежим(Истина); - - Значение = Неопределено; - - Если ПланыВидовХарактеристик.__ПредопределенныеЗначения[Имя].СписокЗначений Тогда - Значение = ОбщегоНазначения.ВыгрузитьКолонку( - ПланыВидовХарактеристик.__ПредопределенныеЗначения[Имя].ЗначенияЭлементов, "Значение", Истина); - ИначеЕсли ПланыВидовХарактеристик.__ПредопределенныеЗначения[Имя].Пароль Тогда - Значение = ПолучитьПарольПоИмени(Имя); - Иначе - Значение = ПланыВидовХарактеристик.__ПредопределенныеЗначения[Имя].Значение; - КонецЕсли; - - УстановитьПривилегированныйРежим(Ложь); + Значение = __ПредопределенныеЗначения.ЗначенияПредопределенныхЭлементов(Идентификатор); Возврат Значение; КонецФункции -// Возвращает соответствие предопределенных элементов ПВХ по имени. +// Возвращает соответствие предопределенных элементов ПВХ по Идентификаторам. // // Параметры: -// Имя - Строка - Имена переменных ПВХ, перечисленные через запятую. +// Идентификаторы - Строка - Идентификаторы переменных ПВХ, перечисленные через запятую. // ВРазрезеКлючей - Булево - Признак получения данных в виде соответствия, где Ключ - Имя переменной. // // Возвращаемое значение: // - Соответствие - Соответствие имен и значений переменных ПВХ. // - Массив - Массив значений переменных ПВХ. // -Функция ПолучитьЗначения(Имена, ВРазрезеКлючей = Ложь) Экспорт +Функция ПолучитьЗначения(Идентификаторы, ВРазрезеКлючей = Ложь) Экспорт // ++ Обход ошибки отстутствия модуля БСП, не переносить - ОбщегоНазначения = Неопределено; ОбщегоНазначенияКлиентСервер = Неопределено; СтроковыеФункцииКлиентСервер = Неопределено; // -- Обход ошибки отстутствия модуля БСП, не переносить - УстановитьПривилегированныйРежим(Истина); - Если ВРазрезеКлючей Тогда Значения = Новый Соответствие; Иначе Значения = Новый Массив; КонецЕсли; - МассивИмен = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Имена); - МассивИмен = ОбщегоНазначенияКлиентСервер.СвернутьМассив(МассивИмен); + МассивИдентификаторов = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Идентификаторы); + МассивИдентификаторов = ОбщегоНазначенияКлиентСервер.СвернутьМассив(МассивИдентификаторов); - Если Не МассивИмен.Количество() Тогда + Если Не ЗначениеЗаполнено(МассивИдентификаторов) Тогда Возврат Значения; КонецЕсли; - Запрос = Новый Запрос; - Запрос.Текст = "ВЫБРАТЬ - | ПредопределенныеЗначения.Ссылка КАК ПредопределенноеЗначение, - | ПредопределенныеЗначения.ИмяПредопределенныхДанных КАК Имя - |ПОМЕСТИТЬ ПредопределенныеЗначения - |ИЗ - | ПланВидовХарактеристик.__ПредопределенныеЗначения КАК ПредопределенныеЗначения - |ГДЕ - | ПредопределенныеЗначения.ИмяПредопределенныхДанных В(&МассивИмен) - |; - | - |//////////////////////////////////////////////////////////////////////////////// - |ВЫБРАТЬ - | ПредопределенныеЗначения.Имя КАК Имя, - | __ПредопределенныеЗначения.Значение КАК Значение, - | ПУСТАЯТАБЛИЦА.( КАК Значение) КАК ЗначенияЭлементов, - | __ПредопределенныеЗначения.Пароль КАК Пароль, - | ЛОЖЬ КАК СписокЗначений - |ИЗ - | ПредопределенныеЗначения КАК ПредопределенныеЗначения - | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.__ПредопределенныеЗначения КАК __ПредопределенныеЗначения - | ПО ПредопределенныеЗначения.ПредопределенноеЗначение = __ПредопределенныеЗначения.Ссылка - | И (НЕ __ПредопределенныеЗначения.СписокЗначений) - | - |ОБЪЕДИНИТЬ ВСЕ - | - |ВЫБРАТЬ - | ПредопределенныеЗначения.Имя, - | НЕОПРЕДЕЛЕНО, - | __ПредопределенныеЗначения.ЗначенияЭлементов.( - | Значение - | ), - | ЛОЖЬ, - | ИСТИНА - |ИЗ - | ПредопределенныеЗначения КАК ПредопределенныеЗначения - | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.__ПредопределенныеЗначения КАК __ПредопределенныеЗначения - | ПО ПредопределенныеЗначения.ПредопределенноеЗначение = __ПредопределенныеЗначения.Ссылка - | И (__ПредопределенныеЗначения.СписокЗначений)"; - - Запрос.УстановитьПараметр("МассивИмен", МассивИмен); - РезультатЗапроса = Запрос.Выполнить(); - - Выборка = РезультатЗапроса.Выбрать(); - Пока Выборка.Следующий() Цикл - - Значение = Неопределено; - - Если Выборка.Пароль Тогда - Значение = ПолучитьПарольПоИмени(Выборка.Имя); - ИначеЕсли Выборка.СписокЗначений Тогда - Значение = ОбщегоНазначения.ВыгрузитьКолонку(Выборка.ЗначенияЭлементов.Выгрузить(), "Значение", Истина); - Иначе - Значение = Выборка.Значение; - КонецЕсли; - - Если ВРазрезеКлючей Тогда - Значения.Вставить(Выборка.Имя, Значение); - Иначе - Если ТипЗнч(Значение) = Тип("Массив") Тогда - ОбщегоНазначенияКлиентСервер.ДополнитьМассив(Значения, Значение); - Иначе - Значения.Добавить(Значение); - КонецЕсли; - КонецЕсли; - - КонецЦикла; + Значения = __ПредопределенныеЗначения.ЗначенияПредопределенныхЭлементов(МассивИдентификаторов,, Истина, ВРазрезеКлючей); Если Не ВРазрезеКлючей Тогда Значения = ОбщегоНазначенияКлиентСервер.СвернутьМассив(Значения); КонецЕсли; - УстановитьПривилегированныйРежим(Ложь); - Возврат Значения; КонецФункции @@ -173,11 +85,11 @@ #Область СлужебныеПроцедурыИФункции -Функция ПолучитьПарольПоИмени(Имя) +Функция ПолучитьПарольПоИмени(Имя) // не используется, см. __ПредопределенныеЗначения.ПолучитьПарольПоИдентификатору() // ++ Обход ошибки отстутствия модуля БСП, не переносить - ОбщегоНазначения = Неопределено; - ОбщегоНазначенияКлиентСервер = Неопределено; + ОбщегоНазначения = __ВспомогательныйМодульНеПереносить; + ОбщегоНазначенияКлиентСервер = __ВспомогательныйМодульНеПереноситьКлиентСервер; // -- Обход ошибки отстутствия модуля БСП, не переносить Значение = Неопределено; diff --git "a/src/ChartsOfCharacteristicTypes/__\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/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/ChartsOfCharacteristicTypes/__\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/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 390d6e36..4ed76e8f 100644 --- "a/src/ChartsOfCharacteristicTypes/__\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/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/ChartsOfCharacteristicTypes/__\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/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" @@ -34,7 +34,7 @@ Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) // ++ Обход ошибки отстутствия модуля БСП, не переносить - ОбщегоНазначения = Неопределено; + ОбщегоНазначения = __ВспомогательныйМодульНеПереносить; // -- Обход ошибки отстутствия модуля БСП, не переносить ДанныеХранилища = Неопределено; @@ -183,7 +183,7 @@ Процедура УправлениеФормой() // ++ Обход ошибки отстутствия модуля БСП, не переносить - ОбщегоНазначенияКлиентСервер = Неопределено; + ОбщегоНазначенияКлиентСервер = __ВспомогательныйМодульНеПереноситьКлиентСервер; // -- Обход ошибки отстутствия модуля БСП, не переносить ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( @@ -209,8 +209,8 @@ Процедура УстановитьНаличиеПароля(ДанныеХранилища = Неопределено); // ++ Обход ошибки отстутствия модуля БСП, не переносить - ОбщегоНазначения = Неопределено; - ОбщегоНазначенияКлиентСервер = Неопределено; + ОбщегоНазначения = __ВспомогательныйМодульНеПереносить; + ОбщегоНазначенияКлиентСервер = __ВспомогательныйМодульНеПереноситьКлиентСервер; // -- Обход ошибки отстутствия модуля БСП, не переносить Если НЕ Объект.Пароль Тогда @@ -253,7 +253,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..d0aad848 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,38 @@ Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")"; -КонецПроцедуры \ No newline at end of file +КонецПроцедуры + +Процедура ЗаписатьДанныеВБезопасноеХранилище(Владелец, Данные, Ключ = "Пароль") Экспорт + Возврат; +КонецПроцедуры + +Функция ПрочитатьДанныеИзБезопасногоХранилища(Владелец, Ключи = "Пароль", ОбщиеДанные = Неопределено) Экспорт + + // ++ Обход ошибки отстутствия модуля БСП, не переносить + ОбщегоНазначенияКлиентСервер = __ВспомогательныйМодульНеПереноситьКлиентСервер; + // -- Обход ошибки отстутствия модуля БСП, не переносить + + Владельцы = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Владелец); + ДанныеВладельца = ПрочитатьДанныеВладельцевИзБезопасногоХранилища(Владельцы, Ключи, ОбщиеДанные); + + Результат = ДанныеВладельца[Владелец]; + + Возврат Результат; + +КонецФункции + +Функция ПрочитатьДанныеВладельцевИзБезопасногоХранилища(Владельцы, Ключи = "Пароль", ОбщиеДанные = Неопределено) Экспорт + + Результат = ДанныеИзБезопасногоХранилища(Владельцы, Ключи, ОбщиеДанные); + + Возврат Результат; + +КонецФункции + +Функция ДанныеИзБезопасногоХранилища(Владельцы, Ключи, ОбщиеДанные) + + Результат = Новый Соответствие(); + + Возврат Результат; +КонецФункции \ No newline at end of file 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\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.xml" "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\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.xml" new file mode 100644 index 00000000..692810e3 --- /dev/null +++ "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\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.xml" @@ -0,0 +1,23 @@ + + + + + __ВспомогательныйМодульНеПереноситьКлиентСервер + + + ru + Вспомогательный модуль (не переносить) клиент сервер + + + Клиентские и серверные процедуры общего назначения + false + true + true + true + true + false + false + DontUse + + + \ No newline at end of file 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\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/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\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" new file mode 100644 index 00000000..219f7bab --- /dev/null +++ "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\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" @@ -0,0 +1,59 @@ + +Функция СвойствоСтруктуры(Структура, Ключ, ЗначениеПоУмолчанию = Неопределено) Экспорт + + Если Структура = Неопределено Тогда + Возврат ЗначениеПоУмолчанию; + КонецЕсли; + + Результат = ЗначениеПоУмолчанию; + Если Структура.Свойство(Ключ, Результат) Тогда + Возврат Результат; + Иначе + Возврат ЗначениеПоУмолчанию; + КонецЕсли; + +КонецФункции + +Процедура УстановитьСвойствоЭлементаФормы(ЭлементыФормы, ИмяЭлемента, ИмяСвойства, Значение) Экспорт + + ЭлементФормы = ЭлементыФормы.Найти(ИмяЭлемента); + Если ЭлементФормы <> Неопределено И ЭлементФормы[ИмяСвойства] <> Значение Тогда + ЭлементФормы[ИмяСвойства] = Значение; + КонецЕсли; + +КонецПроцедуры + +Функция ЗначениеВМассиве(Знач Значение) Экспорт + + Результат = Новый Массив; + Результат.Добавить(Значение); + Возврат Результат; + +КонецФункции + +Процедура ДополнитьМассив(МассивПриемник, МассивИсточник, ТолькоУникальныеЗначения = Ложь) Экспорт + + Если ТолькоУникальныеЗначения Тогда + + УникальныеЗначения = Новый Соответствие; + + Для Каждого Значение Из МассивПриемник Цикл + УникальныеЗначения.Вставить(Значение, Истина); + КонецЦикла; + + Для Каждого Значение Из МассивИсточник Цикл + Если УникальныеЗначения[Значение] = Неопределено Тогда + МассивПриемник.Добавить(Значение); + УникальныеЗначения.Вставить(Значение, Истина); + КонецЕсли; + КонецЦикла; + + Иначе + + Для Каждого Значение Из МассивИсточник Цикл + МассивПриемник.Добавить(Значение); + КонецЦикла; + + КонецЕсли; + +КонецПроцедуры \ No newline at end of file diff --git "a/src/CommonModules/__\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/Module.bsl" "b/src/CommonModules/__\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/Module.bsl" index d50e778b..14d6ea01 100644 --- "a/src/CommonModules/__\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/Module.bsl" +++ "b/src/CommonModules/__\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/Module.bsl" @@ -29,52 +29,77 @@ ТЗПредопределенныхЗначенийКСозданию = ПредопределенныеЗначенияКСозданию(ТЗПредопределенныхЗначений); - Пока ТЗПредопределенныхЗначенийКСозданию.Следующий() Цикл - - СоздатьПредопределенноеЗначение(ТЗПредопределенныхЗначенийКСозданию, ПланыВидовХарактеристик.__ПредопределенныеЗначения); + Для Каждого СтрокаТаблицы Из ТЗПредопределенныхЗначенийКСозданию Цикл + + СоздатьПредопределенноеЗначение(СтрокаТаблицы, ПланыВидовХарактеристик.__ПредопределенныеЗначения); КонецЦикла; КонецПроцедуры -Функция ЗначениеПредопределенногоЭлемента(Идентификатор) Экспорт - - Результат = Неопределено; - - Запрос = Новый Запрос; - Запрос.Текст = - "ВЫБРАТЬ - | __ПредопределенныеЗначения.Значение КАК Значение, - | __ПредопределенныеЗначения.СписокЗначений КАК СписокЗначений, - | __ПредопределенныеЗначения.ЗначенияЭлементов.( - | Значение КАК Значение - | ) КАК ЗначенияЭлементов - |ИЗ - | %1 КАК __ПредопределенныеЗначения - |ГДЕ - | __ПредопределенныеЗначения.ИдентификаторНастройки = &ИдентификаторНастройки"; +// Функция - Значения предопределенных элементов по идентификаторам, работает в режиме одиночного и множественного выбора +// +// Параметры: +// СписокИдентификаторов - Строка - для одиночного выбора +// - Массив - для множественного выбора +// ПутьПоиска - Строка - таблица из которой получаем значения по идентификатору +// МножественныйВыбор - Булево - Ложь - вернется одно значение произвольного типа, +// Истина - вернется массив или соответствие в разрезе ключей со значениями +// ВРазрезеКлючей - Булево - Ложь - вернется массив значений без учета идентификаторов, +// Истина - вернется соответствие со значениями в разрезе ключей +// +// Возвращаемое значение: +// Массив - содержит значения предопределенных элементов +// Соответствие из КлючИЗначение - список идентификаторов и значений элементов: +// * Ключ - Строка - ИдентификаторНастройки; +// * Значение - Произвольный - значение элемента +// +Функция ЗначенияПредопределенныхЭлементов(СписокИдентификаторов, ПутьПоиска = "ПланВидовХарактеристик.__ПредопределенныеЗначения", МножественныйВыбор = Ложь, ВРазрезеКлючей = Ложь) Экспорт - Запрос.УстановитьПараметр("ИдентификаторНастройки", Идентификатор); + Если МножественныйВыбор Тогда + Если ВРазрезеКлючей Тогда + Значения = Новый Соответствие; + Иначе + Значения = Новый Массив; + КонецЕсли; + Иначе + Значения = Неопределено; + КонецЕсли; - РезультатЗапроса = Запрос.Выполнить(); + ДанныеПредЗнач = ПолучитьДанныеПредопределенныхЗначений(СписокИдентификаторов, ПутьПоиска, МножественныйВыбор); + ВыборкаСписок = ДанныеПредЗнач.ВыборкаСписок; + ВыборкаЗначения = ДанныеПредЗнач.ВыборкаЗначения; - ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); + // список значений + Пока ВыборкаСписок.Следующий() Цикл + ВыборкаДетальныеЗаписи = ВыборкаСписок.Выбрать(); + Значение = Новый Массив; + Пока ВыборкаДетальныеЗаписи.Следующий() Цикл + Значение.Добавить(ВыборкаДетальныеЗаписи.Значение); + КонецЦикла; + Если МножественныйВыбор Тогда + ДополнитьЗначенияПредопределенных(Значения, Значение, ВыборкаСписок.Идентификатор); + Иначе + Значения = Значение; + КонецЕсли; + КонецЦикла; - Пока ВыборкаДетальныеЗаписи.Следующий() Цикл - - Если ВыборкаДетальныеЗаписи.СписокЗначений Тогда - - Результат = ВыборкаДетальныеЗаписи.ЗначенияЭлементов.Выгрузить().ВыгрузитьКолонку("Значение"); - + // значение и пароль + Пока ВыборкаЗначения.Следующий() Цикл + Если ВыборкаЗначения.Пароль Тогда + УИД = ВыборкаЗначения.Ссылка.УникальныйИдентификатор(); + Значение = ПолучитьПарольПоИдентификатору(УИД); Иначе - - Результат = ВыборкаДетальныеЗаписи.Значение; - + Значение = ВыборкаЗначения.Значение; + КонецЕсли; + Если МножественныйВыбор Тогда + ДополнитьЗначенияПредопределенных(Значения, Значение, ВыборкаЗначения.Идентификатор); + Иначе + Значения = Значение; КонецЕсли; - КонецЦикла; - Возврат Результат; + Возврат Значения; КонецФункции @@ -83,49 +108,52 @@ #Область СлужебныеПроцедурыИФункции Функция ПредопределенныеЗначенияКСозданию(ТЗПредопределенныхЗначений, ПутьПоиска = "ПланВидовХарактеристик.__ПредопределенныеЗначения") Экспорт + + ИдентификаторыНастроек = ТЗПредопределенныхЗначений.ВыгрузитьКолонку("ИдентификаторНастройки"); Запрос = Новый Запрос; ТекстЗапроса = "ВЫБРАТЬ - | ТЗ.Наименование КАК Наименование, - | ТЗ.ИдентификаторНастройки КАК ИдентификаторНастройки - |ПОМЕСТИТЬ ВТ - |ИЗ - | &ТЗ КАК ТЗ - |; - | - |//////////////////////////////////////////////////////////////////////////////// - |ВЫБРАТЬ - | ВТ.Наименование КАК Наименование, - | ВТ.ИдентификаторНастройки КАК ИдентификаторНастройки + | __ПредопределенныеЗначения.ИдентификаторНастройки КАК ИдентификаторНастройки |ИЗ - | ВТ КАК ВТ - | ЛЕВОЕ СОЕДИНЕНИЕ %1 КАК __ПредопределенныеЗначения - | ПО ВТ.ИдентификаторНастройки = __ПредопределенныеЗначения.ИдентификаторНастройки + | %1 КАК __ПредопределенныеЗначения |ГДЕ - | __ПредопределенныеЗначения.Ссылка ЕСТЬ NULL"; - + | __ПредопределенныеЗначения.ИдентификаторНастройки В (&СписокИдентификаторов)"; + Запрос.Текст = СтрШаблон(ТекстЗапроса, ПутьПоиска); - Запрос.УстановитьПараметр("ТЗ", ТЗПредопределенныхЗначений); + Запрос.УстановитьПараметр("СписокИдентификаторов", ИдентификаторыНастроек); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); - Возврат ВыборкаДетальныеЗаписи; + СтрокиДляУдаления = Новый Массив; + Для Каждого Строка Из ТЗПредопределенныхЗначений Цикл + ВыборкаДетальныеЗаписи.Сбросить(); + Если ВыборкаДетальныеЗаписи.НайтиСледующий(Строка.ИдентификаторНастройки, "ИдентификаторНастройки") Тогда + СтрокиДляУдаления.Добавить(Строка); + КонецЕсли; + КонецЦикла; + + Для Каждого Строка Из СтрокиДляУдаления Цикл + ТЗПредопределенныхЗначений.Удалить(Строка); + КонецЦикла; + + Возврат ТЗПредопределенныхЗначений; КонецФункции -Процедура СоздатьПредопределенноеЗначение(Выборка, МенеджерОбъекта) Экспорт +Процедура СоздатьПредопределенноеЗначение(СтрокаТаблицы, МенеджерОбъекта) Экспорт // ++ Обход ошибки отстутствия модуля БСП, не переносить ОбщегоНазначения = Неопределено; // -- Обход ошибки отстутствия модуля БСП, не переносить НовыйПредопределенныйЭлемент = МенеджерОбъекта.СоздатьЭлемент(); - - ЗаполнитьЗначенияСвойств(НовыйПредопределенныйЭлемент, Выборка); + ЗаполнитьЗначенияСвойств(НовыйПредопределенныйЭлемент, СтрокаТаблицы); + // инициализация значения по умолчанию + НовыйПредопределенныйЭлемент.Значение = СтрокаТаблицы.ТипЗначения.ПривестиЗначение(); Попытка; НовыйПредопределенныйЭлемент.Записать(); @@ -135,4 +163,129 @@ КонецПроцедуры +Функция ПолучитьДанныеПредопределенныхЗначений(Идентификаторы, ПутьПоиска, МножественныйВыбор = Ложь) + + ДанныеПредЗнач = Новый Структура; + + ТекстЗапроса = + "ВЫБРАТЬ + | __ПредопределенныеЗначения.Ссылка КАК Ссылка, + | __ПредопределенныеЗначения.СписокЗначений КАК СписокЗначений, + | __ПредопределенныеЗначения.Пароль КАК Пароль, + | __ПредопределенныеЗначения.Значение КАК Значение, + | __ПредопределенныеЗначения.ИдентификаторНастройки КАК Идентификатор + |ПОМЕСТИТЬ Предопределенные + |ИЗ + | %1 КАК __ПредопределенныеЗначения + |ГДЕ + | __ПредопределенныеЗначения.ИдентификаторНастройки В(&Идентификаторы) + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ПредопределенныеЗначения.Ссылка КАК Ссылка, + | ПредопределенныеЗначения.СписокЗначений КАК СписокЗначений, + | ПредопределенныеЗначения.Пароль КАК Пароль, + | ВЫБОР + | КОГДА ПредопределенныеЗначения.СписокЗначений + | ТОГДА __ПредопределенныеЗначенияЗначенияЭлементов.Значение + | КОГДА НЕ ПредопределенныеЗначения.Пароль + | ТОГДА ПредопределенныеЗначения.Значение + | ИНАЧЕ """" + | КОНЕЦ КАК Значение, + | ПредопределенныеЗначения.Идентификатор КАК Идентификатор + |ПОМЕСТИТЬ ЗначенияПредопределенных + |ИЗ + | Предопределенные КАК ПредопределенныеЗначения + | ЛЕВОЕ СОЕДИНЕНИЕ %1.ЗначенияЭлементов КАК __ПредопределенныеЗначенияЗначенияЭлементов + | ПО ПредопределенныеЗначения.Ссылка = __ПредопределенныеЗначенияЗначенияЭлементов.Ссылка + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ЗначенияПредопределенных.Значение КАК Значение, + | ЗначенияПредопределенных.Идентификатор КАК Идентификатор + |ИЗ + | ЗначенияПредопределенных КАК ЗначенияПредопределенных + |ГДЕ + | ЗначенияПредопределенных.СписокЗначений + |ИТОГИ ПО + | Идентификатор + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ЗначенияПредопределенных.Ссылка КАК Ссылка, + | ЗначенияПредопределенных.Пароль КАК Пароль, + | ЗначенияПредопределенных.Значение КАК Значение, + | ЗначенияПредопределенных.Идентификатор КАК Идентификатор + |ИЗ + | ЗначенияПредопределенных КАК ЗначенияПредопределенных + |ГДЕ + | НЕ ЗначенияПредопределенных.СписокЗначений"; + + ТекстЗапроса = СтрШаблон(ТекстЗапроса, ПутьПоиска); + Если Не МножественныйВыбор Тогда + Схема = Новый СхемаЗапроса; + Схема.УстановитьТекстЗапроса(ТекстЗапроса); + ОператорВыбрать = Схема.ПакетЗапросов[0].Операторы[0]; + ВыражениеОтбора = + Новый ВыражениеСхемыЗапроса("__ПредопределенныеЗначения.ИдентификаторНастройки = &Идентификаторы"); + + ОператорВыбрать.КоличествоПолучаемыхЗаписей = 1; + ОператорВыбрать.Отбор.Установить(0, ВыражениеОтбора); + ТекстЗапроса = Схема.ПолучитьТекстЗапроса(); + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.Текст = ТекстЗапроса; + + Запрос.УстановитьПараметр("Идентификаторы", Идентификаторы); + + УстановитьПривилегированныйРежим(Истина); + РезультатыЗапроса = Запрос.ВыполнитьПакет(); + ДанныеПредЗнач.Вставить("ВыборкаСписок", РезультатыЗапроса[2].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам)); + ДанныеПредЗнач.Вставить("ВыборкаЗначения", РезультатыЗапроса[3].Выбрать()); + УстановитьПривилегированныйРежим(Ложь); + + Возврат ДанныеПредЗнач; + +КонецФункции + +Процедура ДополнитьЗначенияПредопределенных(Приемник, Значение, Идентификатор = "") + + // ++ Обход ошибки отстутствия модуля БСП, не переносить + ОбщегоНазначенияКлиентСервер = __ВспомогательныйМодульНеПереноситьКлиентСервер; + // -- Обход ошибки отстутствия модуля БСП, не переносить + + Если ТипЗнч(Приемник) = Тип("Соответствие") Тогда + Приемник.Вставить(Идентификатор, Значение); + Иначе + Если ТипЗнч(Значение) = Тип("Массив") Тогда + ОбщегоНазначенияКлиентСервер.ДополнитьМассив(Приемник, Значение); + Иначе + Приемник.Добавить(Значение); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +Функция ПолучитьПарольПоИдентификатору(УИД) + + // ++ Обход ошибки отстутствия модуля БСП, не переносить + ОбщегоНазначения = __ВспомогательныйМодульНеПереносить; + ОбщегоНазначенияКлиентСервер = __ВспомогательныйМодульНеПереноситьКлиентСервер; + // -- Обход ошибки отстутствия модуля БСП, не переносить + + ДанныеХранилища = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(Строка(УИД)); + + Значение = ""; + Если ТипЗнч(ДанныеХранилища) = Тип("Структура") Тогда + Значение = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ДанныеХранилища, "bit_password", ""); + КонецЕсли; + + Возврат Значение; + +КонецФункции + #КонецОбласти \ No newline at end of file diff --git "a/src/CommonModules/__\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Ext/Module.bsl" "b/src/CommonModules/__\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Ext/Module.bsl" index 9bd9cbe6..e66d5d1b 100644 --- "a/src/CommonModules/__\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Ext/Module.bsl" +++ "b/src/CommonModules/__\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Ext/Module.bsl" @@ -4,15 +4,37 @@ Функция ПредопределенныеЗначения() Экспорт Результат = ТаблицаПредопределенных(); + + ОписаниеЧисло = Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(10,0)); //Добавление НоваяНастройка = Результат.Добавить(); НоваяНастройка.Наименование = "Количество дней хранения истории интеграции"; НоваяНастройка.ИдентификаторНастройки = "КолДнейХраненияИсторииИнтеграции"; + НоваяНастройка.Пароль = Ложь; + НоваяНастройка.СписокЗначений = Ложь; + НоваяНастройка.ТипЗначения = ОписаниеЧисло; НоваяНастройка = Результат.Добавить(); НоваяНастройка.Наименование = "Количество дней хранения ошибок истории интеграции"; НоваяНастройка.ИдентификаторНастройки = "КолДнейХраненияОшибокИсторииИнтеграции"; + НоваяНастройка.Пароль = Ложь; + НоваяНастройка.СписокЗначений = Ложь; + НоваяНастройка.ТипЗначения = ОписаниеЧисло; + + НоваяНастройка = Результат.Добавить(); + НоваяНастройка.Наименование = "Тест_бул"; + НоваяНастройка.ИдентификаторНастройки = "Тест_бул"; + НоваяНастройка.Пароль = Ложь; + НоваяНастройка.СписокЗначений = Ложь; + НоваяНастройка.ТипЗначения = Новый ОписаниеТипов("Булево"); + + НоваяНастройка = Результат.Добавить(); + НоваяНастройка.Наименование = "Тест_список"; + НоваяНастройка.ИдентификаторНастройки = "Тест_список"; + НоваяНастройка.Пароль = Ложь; + НоваяНастройка.СписокЗначений = Истина; + НоваяНастройка.ТипЗначения = Новый ОписаниеТипов("Строка"); //КонецДобавления Возврат Результат; @@ -28,9 +50,13 @@ Результат = Новый ТаблицаЗначений; ОписаниеСтрока = Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(150)); + ОписаниеБулево = Новый ОписаниеТипов("Булево"); Результат.Колонки.Добавить("ИдентификаторНастройки", ОписаниеСтрока); Результат.Колонки.Добавить("Наименование", ОписаниеСтрока); + Результат.Колонки.Добавить("Пароль", ОписаниеБулево); + Результат.Колонки.Добавить("СписокЗначений", ОписаниеБулево); + Результат.Колонки.Добавить("ТипЗначения", Новый ОписаниеТипов("ОписаниеТипов")); Возврат Результат; diff --git a/src/Configuration.xml b/src/Configuration.xml index c50ec3a5..6510147f 100644 --- a/src/Configuration.xml +++ b/src/Configuration.xml @@ -298,6 +298,7 @@ __СправочникиПриКопировании __СтроковыеФункцииКлиентСервер __ТипСоответствияОбъектовИБПереопределяемый + __ВспомогательныйМодульНеПереноситьКлиентСервер __ДокументыОбработкаЗаполнения __ДокументыОбработкаПроведения __ДокументыПередЗаписью