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 @@
__СправочникиПриКопировании
__СтроковыеФункцииКлиентСервер
__ТипСоответствияОбъектовИБПереопределяемый
+ __ВспомогательныйМодульНеПереноситьКлиентСервер
__ДокументыОбработкаЗаполнения
__ДокументыОбработкаПроведения
__ДокументыПередЗаписью