1
0
mirror of https://github.com/firstBitSportivnaya/PSSL.git synced 2024-11-24 08:42:27 +02:00

Добавлена функция получения списка значений ПВХ, Использование кешированных значений Соответствий объектов ИБ

This commit is contained in:
DevelopersUsername 2022-09-14 14:42:40 +03:00
parent 47f9ecee02
commit 1837ce4772
2 changed files with 137 additions and 12 deletions

View File

@ -25,15 +25,7 @@
Значение = ОбщегоНазначения.ВыгрузитьКолонку(
ПланыВидовХарактеристик.__ПредопределенныеЗначения[Имя].ЗначенияЭлементов, "Значение", Истина);
ИначеЕсли ПланыВидовХарактеристик.__ПредопределенныеЗначения[Имя].Пароль Тогда
ДанныеХранилища = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(
Строка(ПланыВидовХарактеристик.__ПредопределенныеЗначения[Имя].УникальныйИдентификатор()));
Если ТипЗнч(ДанныеХранилища) = Тип("Структура") Тогда
Значение = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ДанныеХранилища, "bit_password", "");
Иначе
Значение = "";
КонецЕсли;
Значение = ПолучитьПарольПоИмени(Имя);
Иначе
Значение = ПланыВидовХарактеристик.__ПредопределенныеЗначения[Имя].Значение;
КонецЕсли;
@ -44,10 +36,124 @@
КонецФункции
// Возвращает соответствие предопределенных элементов ПВХ по имени.
//
// Параметры:
// Имя - Строка - Имена переменных ПВХ, перечисленные через запятую.
//
// Возвращаемое значение:
// - Соответствие - Соответствие имен и значений переменных ПВХ.
//
Функция ПолучитьПредопределенныеЗначения(Имена) Экспорт
// ++ Обход ошибки отстутствия модуля БСП, не переносить
ОбщегоНазначения = Неопределено;
ОбщегоНазначенияКлиентСервер = Неопределено;
СтроковыеФункцииКлиентСервер = Неопределено;
// -- Обход ошибки отстутствия модуля БСП, не переносить
УстановитьПривилегированныйРежим(Истина);
СоответствиеЗначений = Новый Соответствие;
МассивИмен = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Имена);
МассивИмен = ОбщегоНазначенияКлиентСервер.СвернутьМассив(МассивИмен);
Если Не МассивИмен.Количество() Тогда
Возврат СоответствиеЗначений;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| __ПредопределенныеЗначения.Ссылка КАК ПредопределенноеЗначение,
| __ПредопределенныеЗначения.ИмяПредопределенныхДанных КАК Имя
|ПОМЕСТИТЬ ПредопределенныеЗначения
|ИЗ
| ПланВидовХарактеристик.__ПредопределенныеЗначения КАК __ПредопределенныеЗначения
|ГДЕ
| __ПредопределенныеЗначения.ИмяПредопределенныхДанных В(&МассивИмен)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПредопределенныеЗначения.Имя КАК Имя,
| __ПредопределенныеЗначения.Значение КАК Значение,
| ПУСТАЯТАБЛИЦА.( КАК Значение) КАК ЗначенияЭлементов,
| __ПредопределенныеЗначения.Пароль КАК Пароль,
| ЛОЖЬ КАК СписокЗначений
|ИЗ
| ПредопределенныеЗначения КАК ПредопределенныеЗначения
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.__ПредопределенныеЗначения КАК __ПредопределенныеЗначения
| ПО ПредопределенныеЗначения.ПредопределенноеЗначение = __ПредопределенныеЗначения.Ссылка
| И (НЕ __ПредопределенныеЗначения.СписокЗначений)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ПредопределенныеЗначения.Имя,
| НЕОПРЕДЕЛЕНО,
| __ПредопределенныеЗначения.ЗначенияЭлементов.(
| Значение
| ),
| ЛОЖЬ,
| ИСТИНА
|ИЗ
| ПредопределенныеЗначения КАК ПредопределенныеЗначения
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.__ПредопределенныеЗначения КАК __ПредопределенныеЗначения
| ПО ПредопределенныеЗначения.ПредопределенноеЗначение = __ПредопределенныеЗначения.Ссылка
| И (__ПредопределенныеЗначения.СписокЗначений)";
Запрос.УстановитьПараметр("МассивИмен", МассивИмен);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Значение = Неопределено;
Если Выборка.Пароль Тогда
Значение = ПолучитьПарольПоИмени(Выборка.Имя);
ИначеЕсли Выборка.СписокЗначений Тогда
Значение = ОбщегоНазначения.ВыгрузитьКолонку(Выборка.ЗначенияЭлементов.Выгрузить(), "Значение", Истина);
Иначе
Значение = Выборка.Значение;
КонецЕсли;
СоответствиеЗначений.Вставить(Выборка.Имя, Значение);
КонецЦикла;
УстановитьПривилегированныйРежим(Ложь);
Возврат СоответствиеЗначений;
КонецФункции
#КонецОбласти // ПрограммныйИнтерфейс
#Область СлужебныеПроцедурыИФункции
Функция ПолучитьПарольПоИмени(Имя)
// ++ Обход ошибки отстутствия модуля БСП, не переносить
ОбщегоНазначения = Неопределено;
ОбщегоНазначенияКлиентСервер = Неопределено;
// -- Обход ошибки отстутствия модуля БСП, не переносить
Значение = Неопределено;
ДанныеХранилища = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(
Строка(ПланыВидовХарактеристик.__ПредопределенныеЗначения[Имя].УникальныйИдентификатор()));
Если ТипЗнч(ДанныеХранилища) = Тип("Структура") Тогда
Значение = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ДанныеХранилища, "bit_password", "");
Иначе
Значение = "";
КонецЕсли;
Возврат Значение;
КонецФункции
#КонецОбласти // СлужебныеПроцедурыИФункции
#КонецЕсли

View File

@ -49,6 +49,20 @@
КонецФункции
// Возвращает соответствие предопределенных элементов ПВХ по имени.
//
// Параметры:
// Имя - Строка - Имена переменных ПВХ, перечисленные через запятую.
//
// Возвращаемое значение:
// - Соответствие - Соответствие имен и значений переменных ПВХ.
//
Функция ПолучитьПредопределенныеЗначения(Имена) Экспорт
Возврат ПланыВидовХарактеристик.__ПредопределенныеЗначения.ПолучитьЗначения(Имена);
КонецФункции
// Возвращает таблицу соответствий по отбору.
//
// Параметры:
@ -56,13 +70,18 @@
// Объект1 - ПроизвольныйТип - Объект1.
// Объект2 - ПроизвольныйТип - Объект2.
// Объект3 - ПроизвольныйТип - Объект3.
// ИспользоватьТолькоКэш - Булево - Признак получения данных из кэша.
//
// Возвращаемое значение:
// - ТаблицаЗначений - Таблица соответствий по отбору.
//
Функция ПолучитьСоответствиеОбъектовИБ(ТипСоответствия, Объект1 = Неопределено, Объект2 = Неопределено, Объект3 = Неопределено) Экспорт
//
Функция ПолучитьСоответствиеОбъектовИБ(ТипСоответствия, Объект1 = Неопределено, Объект2 = Неопределено, Объект3 = Неопределено, ИспользоватьКэш = Ложь) Экспорт
Возврат РегистрыСведений.__СоответствияОбъектовИБ.ПолучитьСоответствиеОбъектовИБ(ТипСоответствия, Объект1, Объект2, Объект3);
Если ИспользоватьКэш Тогда
Возврат __ОбщегоНазначенияПовтИсп.ПолучитьСоответствиеОбъектовИБ(ТипСоответствия, Объект1, Объект2, Объект3);
Иначе
Возврат РегистрыСведений.__СоответствияОбъектовИБ.ПолучитьСоответствиеОбъектовИБ(ТипСоответствия, Объект1, Объект2, Объект3);
КонецЕсли;
КонецФункции