Skip to content

Commit

Permalink
1, 2 - создание/получение значение предопределенных элементов
Browse files Browse the repository at this point in the history
  • Loading branch information
denisushakov committed Apr 8, 2024
1 parent 897797c commit b80b703
Show file tree
Hide file tree
Showing 8 changed files with 370 additions and 162 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,146 +25,58 @@

#Область ПрограммныйИнтерфейс

// Возвращает значение ПВХ по имени.
// Возвращает значение ПВХ по идентификатору.
//
// Параметры:
// Имя - Строка - Имя переменной ПВХ.
// Идентификатор - Строка - Идентификатор переменной ПВХ.
//
// Возвращаемое значение:
// ПроизвольныйТип - Значение переменной ПВХ.
//
Функция ПолучитьЗначение(Имя) Экспорт
Функция ПолучитьЗначение(Идентификатор) Экспорт

// ++ Обход ошибки отстутствия модуля БСП, не переносить
ОбщегоНазначения = Неопределено;
// -- Обход ошибки отстутствия модуля БСП, не переносить

УстановитьПривилегированныйРежим(Истина);

Значение = Неопределено;

Если ПланыВидовХарактеристик.__ПредопределенныеЗначения[Имя].СписокЗначений Тогда
Значение = ОбщегоНазначения.ВыгрузитьКолонку(
ПланыВидовХарактеристик.__ПредопределенныеЗначения[Имя].ЗначенияЭлементов, "Значение", Истина);
ИначеЕсли ПланыВидовХарактеристик.__ПредопределенныеЗначения[Имя].Пароль Тогда
Значение = ПолучитьПарольПоИмени(Имя);
Иначе
Значение = ПланыВидовХарактеристик.__ПредопределенныеЗначения[Имя].Значение;
КонецЕсли;

УстановитьПривилегированныйРежим(Ложь);
Значение = __ПредопределенныеЗначения.ЗначенияПредопределенныхЭлементов(Идентификатор);

Возврат Значение;

КонецФункции

// Возвращает соответствие предопределенных элементов ПВХ по имени.
// Возвращает соответствие предопределенных элементов ПВХ по Идентификаторам.
//
// Параметры:
// Имя - Строка - Имена переменных ПВХ, перечисленные через запятую.
// Идентификаторы - Строка - Идентификаторы переменных ПВХ, перечисленные через запятую.
// ВРазрезеКлючей - Булево - Признак получения данных в виде соответствия, где Ключ - Имя переменной.
//
// Возвращаемое значение:
// - Соответствие - Соответствие имен и значений переменных ПВХ.
// - Массив - Массив значений переменных ПВХ.
//
Функция ПолучитьЗначения(Имена, ВРазрезеКлючей = Ложь) Экспорт
Функция ПолучитьЗначения(Идентификаторы, ВРазрезеКлючей = Ложь) Экспорт

// ++ Обход ошибки отстутствия модуля БСП, не переносить
ОбщегоНазначения = Неопределено;
ОбщегоНазначенияКлиентСервер = Неопределено;
СтроковыеФункцииКлиентСервер = Неопределено;
// -- Обход ошибки отстутствия модуля БСП, не переносить

УстановитьПривилегированныйРежим(Истина);

Если ВРазрезеКлючей Тогда
Значения = Новый Соответствие;
Иначе
Значения = Новый Массив;
КонецЕсли;

МассивИмен = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Имена);
МассивИмен = ОбщегоНазначенияКлиентСервер.СвернутьМассив(МассивИмен);
МассивИдентификаторов = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Идентификаторы);
МассивИдентификаторов = ОбщегоНазначенияКлиентСервер.СвернутьМассив(МассивИдентификаторов);

Если Не МассивИмен.Количество() Тогда
Если Не ЗначениеЗаполнено(МассивИдентификаторов) Тогда
Возврат Значения;
КонецЕсли;

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ПредопределенныеЗначения.Ссылка КАК ПредопределенноеЗначение,
| ПредопределенныеЗначения.ИмяПредопределенныхДанных КАК Имя
|ПОМЕСТИТЬ ПредопределенныеЗначения
|ИЗ
| ПланВидовХарактеристик.__ПредопределенныеЗначения КАК ПредопределенныеЗначения
|ГДЕ
| ПредопределенныеЗначения.ИмяПредопределенныхДанных В(&МассивИмен)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПредопределенныеЗначения.Имя КАК Имя,
| __ПредопределенныеЗначения.Значение КАК Значение,
| ПУСТАЯТАБЛИЦА.( КАК Значение) КАК ЗначенияЭлементов,
| __ПредопределенныеЗначения.Пароль КАК Пароль,
| ЛОЖЬ КАК СписокЗначений
|ИЗ
| ПредопределенныеЗначения КАК ПредопределенныеЗначения
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.__ПредопределенныеЗначения КАК __ПредопределенныеЗначения
| ПО ПредопределенныеЗначения.ПредопределенноеЗначение = __ПредопределенныеЗначения.Ссылка
| И (НЕ __ПредопределенныеЗначения.СписокЗначений)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ПредопределенныеЗначения.Имя,
| НЕОПРЕДЕЛЕНО,
| __ПредопределенныеЗначения.ЗначенияЭлементов.(
| Значение
| ),
| ЛОЖЬ,
| ИСТИНА
|ИЗ
| ПредопределенныеЗначения КАК ПредопределенныеЗначения
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.__ПредопределенныеЗначения КАК __ПредопределенныеЗначения
| ПО ПредопределенныеЗначения.ПредопределенноеЗначение = __ПредопределенныеЗначения.Ссылка
| И (__ПредопределенныеЗначения.СписокЗначений)";

Запрос.УстановитьПараметр("МассивИмен", МассивИмен);
РезультатЗапроса = Запрос.Выполнить();

Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл

Значение = Неопределено;

Если Выборка.Пароль Тогда
Значение = ПолучитьПарольПоИмени(Выборка.Имя);
ИначеЕсли Выборка.СписокЗначений Тогда
Значение = ОбщегоНазначения.ВыгрузитьКолонку(Выборка.ЗначенияЭлементов.Выгрузить(), "Значение", Истина);
Иначе
Значение = Выборка.Значение;
КонецЕсли;

Если ВРазрезеКлючей Тогда
Значения.Вставить(Выборка.Имя, Значение);
Иначе
Если ТипЗнч(Значение) = Тип("Массив") Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(Значения, Значение);
Иначе
Значения.Добавить(Значение);
КонецЕсли;
КонецЕсли;

КонецЦикла;
Значения = __ПредопределенныеЗначения.ЗначенияПредопределенныхЭлементов(МассивИдентификаторов,, Истина, ВРазрезеКлючей);

Если Не ВРазрезеКлючей Тогда
Значения = ОбщегоНазначенияКлиентСервер.СвернутьМассив(Значения);
КонецЕсли;

УстановитьПривилегированныйРежим(Ложь);

Возврат Значения;

КонецФункции
Expand All @@ -173,11 +85,11 @@

#Область СлужебныеПроцедурыИФункции

Функция ПолучитьПарольПоИмени(Имя)
Функция ПолучитьПарольПоИмени(Имя) // не используется, см. __ПредопределенныеЗначения.ПолучитьПарольПоИдентификатору()

// ++ Обход ошибки отстутствия модуля БСП, не переносить
ОбщегоНазначения = Неопределено;
ОбщегоНазначенияКлиентСервер = Неопределено;
ОбщегоНазначения = __ВспомогательныйМодульНеПереносить;
ОбщегоНазначенияКлиентСервер = __ВспомогательныйМодульНеПереноситьКлиентСервер;
// -- Обход ошибки отстутствия модуля БСП, не переносить

Значение = Неопределено;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

// ++ Обход ошибки отстутствия модуля БСП, не переносить
ОбщегоНазначения = Неопределено;
ОбщегоНазначения = __ВспомогательныйМодульНеПереносить;
// -- Обход ошибки отстутствия модуля БСП, не переносить

ДанныеХранилища = Неопределено;
Expand Down Expand Up @@ -183,7 +183,7 @@
Процедура УправлениеФормой()

// ++ Обход ошибки отстутствия модуля БСП, не переносить
ОбщегоНазначенияКлиентСервер = Неопределено;
ОбщегоНазначенияКлиентСервер = __ВспомогательныйМодульНеПереноситьКлиентСервер;
// -- Обход ошибки отстутствия модуля БСП, не переносить

ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Expand All @@ -209,8 +209,8 @@
Процедура УстановитьНаличиеПароля(ДанныеХранилища = Неопределено);

// ++ Обход ошибки отстутствия модуля БСП, не переносить
ОбщегоНазначения = Неопределено;
ОбщегоНазначенияКлиентСервер = Неопределено;
ОбщегоНазначения = __ВспомогательныйМодульНеПереносить;
ОбщегоНазначенияКлиентСервер = __ВспомогательныйМодульНеПереноситьКлиентСервер;
// -- Обход ошибки отстутствия модуля БСП, не переносить

Если НЕ Объект.Пароль Тогда
Expand Down Expand Up @@ -253,7 +253,7 @@
Процедура ВводСтрокиЗавершение(Результат, ДополнительныеПараметры) Экспорт

// ++ Обход ошибки отстутствия модуля БСП, не переносить
ОбщегоНазначенияКлиентСервер = Неопределено;
ОбщегоНазначенияКлиентСервер = __ВспомогательныйМодульНеПереноситьКлиентСервер;
// -- Обход ошибки отстутствия модуля БСП, не переносить

Если ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ДополнительныеПараметры, "ТолькоПросмотр", Ложь) Тогда
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,4 +73,38 @@

Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";

КонецПроцедуры
КонецПроцедуры

Процедура ЗаписатьДанныеВБезопасноеХранилище(Владелец, Данные, Ключ = "Пароль") Экспорт
Возврат;
КонецПроцедуры

Функция ПрочитатьДанныеИзБезопасногоХранилища(Владелец, Ключи = "Пароль", ОбщиеДанные = Неопределено) Экспорт

// ++ Обход ошибки отстутствия модуля БСП, не переносить
ОбщегоНазначенияКлиентСервер = __ВспомогательныйМодульНеПереноситьКлиентСервер;
// -- Обход ошибки отстутствия модуля БСП, не переносить

Владельцы = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Владелец);
ДанныеВладельца = ПрочитатьДанныеВладельцевИзБезопасногоХранилища(Владельцы, Ключи, ОбщиеДанные);

Результат = ДанныеВладельца[Владелец];

Возврат Результат;

КонецФункции

Функция ПрочитатьДанныеВладельцевИзБезопасногоХранилища(Владельцы, Ключи = "Пароль", ОбщиеДанные = Неопределено) Экспорт

Результат = ДанныеИзБезопасногоХранилища(Владельцы, Ключи, ОбщиеДанные);

Возврат Результат;

КонецФункции

Функция ДанныеИзБезопасногоХранилища(Владельцы, Ключи, ОбщиеДанные)

Результат = Новый Соответствие();

Возврат Результат;
КонецФункции
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.16">
<CommonModule uuid="690dfc50-9754-4a80-9201-6f8e76a5d27d">
<Properties>
<Name>__ВспомогательныйМодульНеПереноситьКлиентСервер</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Вспомогательный модуль (не переносить) клиент сервер</v8:content>
</v8:item>
</Synonym>
<Comment>Клиентские и серверные процедуры общего назначения</Comment>
<Global>false</Global>
<ClientManagedApplication>true</ClientManagedApplication>
<Server>true</Server>
<ExternalConnection>true</ExternalConnection>
<ClientOrdinaryApplication>true</ClientOrdinaryApplication>
<ServerCall>false</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>
Loading

0 comments on commit b80b703

Please sign in to comment.