331 lines
25 KiB
Plaintext
331 lines
25 KiB
Plaintext
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
|
||
|
||
#Область ПрограммныйИнтерфейс
|
||
|
||
// Возвращает список подключенного в справочнике ПО по установленному отбору
|
||
//
|
||
// Параметры:
|
||
// Отбор - см. МенеджерОборудованияКлиентСервер.СписокОборудованияОтбор.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Массив из Структура.
|
||
//
|
||
Функция СписокОборудования(Отбор) Экспорт
|
||
|
||
Идентификатор = Отбор.Идентификатор;
|
||
ТипыПО = Отбор.ТипыПО;
|
||
РабочееМесто = Отбор.РабочееМесто;
|
||
Организация = Отбор.Организация;
|
||
|
||
МассивТиповПО = МенеджерОборудования.ПолучитьТипыОборудования(ТипыПО);
|
||
|
||
СетевоеОборудование = Отбор.СетевоеОборудование;
|
||
ТекущийПользовательИБ = Строка(ПользователиИнформационнойБазы.ТекущийПользователь());
|
||
КодЯзыка = Отбор.КодЯзыка;
|
||
|
||
УстановитьПривилегированныйРежим(Истина);
|
||
|
||
Если НЕ ЗначениеЗаполнено(РабочееМесто) Тогда
|
||
// Если РМ не задано в параметрах, то всегда текущее из параметров сеанса.
|
||
РабочееМесто = МенеджерОборудованияВызовСервера.РабочееМестоКлиента();
|
||
КонецЕсли;
|
||
|
||
Запрос = Новый Запрос();
|
||
ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
|
||
| ПодключаемоеОборудование.Ссылка КАК Ссылка,
|
||
| ПодключаемоеОборудование.Наименование КАК Наименование,
|
||
| ПодключаемоеОборудование.ТипОборудования КАК ТипОборудования,
|
||
| ПодключаемоеОборудование.ДрайверОборудования КАК ДрайверОборудования,
|
||
| ПодключаемоеОборудование.ДрайверОборудования.ИмяПредопределенныхДанных КАК ДрайверОборудованияИмя,
|
||
| ПодключаемоеОборудование.ДрайверОборудования.Предопределенный КАК ВСоставеКонфигурации,
|
||
| ПодключаемоеОборудование.ДрайверОборудования.ИдентификаторОбъекта КАК ИдентификаторОбъекта,
|
||
| ПодключаемоеОборудование.ДрайверОборудования.СнятСПоддержки КАК СнятСПоддержки,
|
||
| ПодключаемоеОборудование.ДрайверОборудования.ВерсияДрайвера КАК ВерсияДрайвера,
|
||
| ПодключаемоеОборудование.ДрайверОборудования.ИмяМакетаДрайвера КАК ИмяМакетаДрайвера,
|
||
| ПодключаемоеОборудование.ДрайверОборудования.СпособПодключения КАК СпособПодключения,
|
||
| ПодключаемоеОборудование.ДрайверОборудования.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных,
|
||
| ПодключаемоеОборудование.ТипПодключения КАК ТипПодключения,
|
||
| ПодключаемоеОборудование.РабочееМесто КАК РабочееМесто,
|
||
| ПодключаемоеОборудование.АвтоматическаяФискализация КАК АвтоматическаяФискализация,
|
||
| ПодключаемоеОборудование.ТребуетсяПереустановка КАК ТребуетсяПереустановка,
|
||
| ПодключаемоеОборудование.ТребуетсяУстановка КАК ТребуетсяУстановка,
|
||
| ПодключаемоеОборудование.ИспользуетсяФН36 КАК ИспользуетсяФН36,
|
||
| ПодключаемоеОборудование.Организация КАК Организация,
|
||
| ПодключаемоеОборудование.ОграничениеДоступа.(
|
||
| Пользователь КАК Пользователь,
|
||
| Ссылка КАК Ссылка
|
||
| ) КАК ОграничениеДоступа,
|
||
| ПодключаемоеОборудование.Параметры КАК Параметры
|
||
|ИЗ
|
||
| Справочник.ПодключаемоеОборудование КАК ПодключаемоеОборудование
|
||
|ГДЕ
|
||
| &Условие
|
||
|
|
||
|УПОРЯДОЧИТЬ ПО
|
||
| Наименование";
|
||
|
||
Если Идентификатор <> Неопределено Тогда
|
||
ТекстУсловия = "(ПодключаемоеОборудование.Ссылка = &Идентификатор)";
|
||
Запрос.УстановитьПараметр("Идентификатор", Идентификатор);
|
||
Иначе
|
||
ТекстУсловия = "(НЕ ПодключаемоеОборудование.ПометкаУдаления И ПодключаемоеОборудование.УстройствоИспользуется)"
|
||
+ " И (ПодключаемоеОборудование.РабочееМесто = &РабочееМесто";
|
||
Запрос.УстановитьПараметр("РабочееМесто", РабочееМесто);
|
||
Если СетевоеОборудование Тогда
|
||
// Оборудование, подключенное к конкретному рабочему месту и сетевое оборудование.
|
||
ТекстУсловия = ТекстУсловия
|
||
+ " ИЛИ ПодключаемоеОборудование.ТипПодключения = ЗНАЧЕНИЕ(Перечисление.ТипыПодключенияОборудования.ОбщийДоступ))";
|
||
Иначе
|
||
ТекстУсловия = ТекстУсловия + ")";
|
||
КонецЕсли;
|
||
Если МассивТиповПО.Количество()>0 Тогда
|
||
ТекстУсловия = ТекстУсловия + " И (ПодключаемоеОборудование.ТипОборудования В (&ТипОборудования))";
|
||
Запрос.УстановитьПараметр("ТипОборудования", МассивТиповПО);
|
||
КонецЕсли;
|
||
Если Организация <> Неопределено Тогда
|
||
ТекстУсловия = ТекстУсловия + " И (ПодключаемоеОборудование.Организация = &Организация)";
|
||
Запрос.УстановитьПараметр("Организация", Организация);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Запрос.Текст = СтрЗаменить(ТекстЗапроса, "&Условие", ТекстУсловия);
|
||
Выборка = Запрос.Выполнить().Выбрать();
|
||
|
||
// Перебирая выборку составляем список устройств
|
||
СписокОборудования = Новый Массив();
|
||
Пока Выборка.Следующий() Цикл
|
||
ДанныеУстройства = ЗаполнитьДанныеУстройства(Выборка, ТекущийПользовательИБ, КодЯзыка);
|
||
СписокОборудования.Добавить(ДанныеУстройства);
|
||
КонецЦикла;
|
||
|
||
// Возвращаем полученный список с данными всех найденных устройств
|
||
Возврат СписокОборудования;
|
||
|
||
КонецФункции
|
||
|
||
// Функция возвращает по идентификатору устройства его параметры
|
||
//
|
||
// Параметры:
|
||
// Идентификатор - СправочникСсылка.ПодключаемоеОборудование.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура.
|
||
//
|
||
Функция ПараметрыУстройства(Идентификатор) Экспорт
|
||
|
||
Запрос = Новый Запрос("
|
||
|ВЫБРАТЬ
|
||
| ПодключаемоеОборудование.Параметры
|
||
|ИЗ
|
||
| Справочник.ПодключаемоеОборудование КАК ПодключаемоеОборудование
|
||
|ГДЕ
|
||
| ПодключаемоеОборудование.Ссылка = &Идентификатор");
|
||
|
||
Запрос.УстановитьПараметр("Идентификатор", Идентификатор);
|
||
Выборка = Запрос.Выполнить().Выбрать();
|
||
Выборка.Следующий();
|
||
|
||
ПараметрыОборудования = Выборка.Параметры; // ХранилищеЗначения
|
||
Результат = ПараметрыОборудования.Получить();
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Процедура предназначена для сохранения параметров устройства
|
||
// в реквизит Параметры типа хранилище значения в элементе справочника.
|
||
//
|
||
// Параметры:
|
||
// Идентификатор - СправочникСсылка.ПодключаемоеОборудование.
|
||
// Параметры - Структура - параметры устройства.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Булево.
|
||
//
|
||
Функция СохранитьПараметрыУстройства(Идентификатор, Параметры) Экспорт
|
||
|
||
Запрос = Новый Запрос();
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ ПЕРВЫЕ 1
|
||
| ПодключаемоеОборудование.Ссылка КАК Ссылка
|
||
|ИЗ
|
||
| Справочник.ПодключаемоеОборудование КАК ПодключаемоеОборудование
|
||
|ГДЕ
|
||
| ПодключаемоеОборудование.Ссылка = &Идентификатор";
|
||
|
||
Запрос.УстановитьПараметр("Идентификатор", Идентификатор);
|
||
РезультатЗапроса = Запрос.Выполнить();
|
||
Если РезультатЗапроса.Пустой() Тогда
|
||
Возврат Ложь;
|
||
КонецЕсли;
|
||
|
||
Попытка
|
||
Выборка = РезультатЗапроса.Выбрать();
|
||
Выборка.Следующий();
|
||
ОбъектСправочника = Выборка.Ссылка.ПолучитьОбъект(); // СправочникОбъект.ПодключаемоеОборудование
|
||
ОбъектСправочника.Заблокировать();
|
||
ОбъектСправочника.Параметры = Новый ХранилищеЗначения(Параметры);
|
||
ОбъектСправочника.Записать();
|
||
Результат = Истина;
|
||
Исключение
|
||
Результат = Ложь;
|
||
КонецПопытки;
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Функция возвращает структуру с данными устройства
|
||
//
|
||
// Параметры:
|
||
// Идентификатор - СправочникСсылка.ПодключаемоеОборудование.
|
||
// КодЯзыка - Строка
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * Ссылка - СправочникСсылка.ПодключаемоеОборудование
|
||
// * ТипОборудования - Структура
|
||
// * Наименование - Строка
|
||
// * Параметры - Структура
|
||
// * ДрайверОборудования - СправочникСсылка.ДрайверыОборудования
|
||
// * ВСоставеКонфигурации - Булево
|
||
// * ИдентификаторОбъекта - Строка
|
||
// * СнятСПоддержки - Булево
|
||
// * ВерсияДрайвера - Строка
|
||
// * СетевоеОборудование - Булево
|
||
// * СпособПодключения - ПеречислениеСсылка.СпособПодключенияДрайвера
|
||
// * ПодключениеИзМакета - Булево
|
||
// * ПодключениеЛокальноПоИдентификатору - Булево
|
||
// * ИмяМакетаДрайвера - Строка
|
||
// * МакетДоступен - Булево
|
||
// * АвтоматическаяФискализация - Булево
|
||
// * ИспользуетсяФН36 - Булево
|
||
// * ТребуетсяПереустановка - Булево
|
||
// * ТребуетсяУстановка - Булево
|
||
// * ОграничениеДоступа - Массив из Строка
|
||
// * ДоступноТекущемуПользователю - Булево
|
||
// * ПараметрыРегистрации - Структура
|
||
//
|
||
Функция ДанныеУстройства(Идентификатор, КодЯзыка = Неопределено) Экспорт
|
||
|
||
СписокОтбор = МенеджерОборудованияКлиентСервер.СписокОборудованияОтбор();
|
||
СписокОтбор.Идентификатор = Идентификатор;
|
||
СписокОтбор.КодЯзыка = КодЯзыка;
|
||
|
||
СписокОборудования = СписокОборудования(СписокОтбор);
|
||
Если СписокОборудования.Количество() > 0 Тогда
|
||
Результат = СписокОборудования[0]
|
||
Иначе
|
||
Результат = Неопределено;
|
||
КонецЕсли;
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// СтандартныеПодсистемы.УправлениеДоступом
|
||
// См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа.
|
||
//
|
||
// Параметры:
|
||
// Ограничение - Структура:
|
||
// * Текст - Строка - ограничение доступа для пользователей.
|
||
// Если пустая строка, значит, доступ разрешен.
|
||
// * ТекстДляВнешнихПользователей - Строка - ограничение доступа для внешних пользователей.
|
||
// Если пустая строка, значит, доступ запрещен.
|
||
// * ПоВладельцуБезЗаписиКлючейДоступа - Неопределено - определить автоматически.
|
||
// - Булево - если Ложь, то всегда записывать ключи доступа,
|
||
// если Истина, тогда не записывать ключи доступа,
|
||
// а использовать ключи доступа владельца (требуется,
|
||
// чтобы ограничение было строго по объекту-владельцу).
|
||
// * ПоВладельцуБезЗаписиКлючейДоступаДляВнешнихПользователей - Неопределено, Булево - также
|
||
// как у параметра ПоВладельцуБезЗаписиКлючейДоступа.
|
||
//
|
||
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
|
||
|
||
Менеджер = "Справочник.ПодключаемоеОборудование";
|
||
МенеджерОборудованияВызовСервераПереопределяемый.ПриЗаполненииОграниченияДоступа(Менеджер, Ограничение);
|
||
|
||
КонецПроцедуры
|
||
// Конец СтандартныеПодсистемы.УправлениеДоступом
|
||
|
||
#КонецОбласти
|
||
|
||
#Область СлужебныеПроцедурыИФункции
|
||
|
||
// Заполнить структуру данных устройства
|
||
//
|
||
Функция ЗаполнитьДанныеУстройства(Выборка, ТекущийПользовательИБ, КодЯзыка)
|
||
|
||
ДанныеУстройства = Новый Структура();
|
||
ПараметрыОборудования = Выборка.Параметры; // ХранилищеЗначения
|
||
|
||
ДанныеУстройства.Вставить("Ссылка" , Выборка.Ссылка);
|
||
ДанныеУстройства.Вставить("ТипыОборудования" , МенеджерОборудования.ПараметрыТипыОборудования(Выборка.ТипОборудования));
|
||
ДанныеУстройства.Вставить("ТипОборудования" , Выборка.ТипОборудования);
|
||
ДанныеУстройства.Вставить("ТипОборудованияИмя" , XMLСтрока(Выборка.ТипОборудования));
|
||
ДанныеУстройства.Вставить("Наименование" , Выборка.Наименование);
|
||
ДанныеУстройства.Вставить("Параметры" , ПараметрыОборудования.Получить());
|
||
ДанныеУстройства.Вставить("ДрайверОборудования" , Выборка.ДрайверОборудования);
|
||
ДанныеУстройства.Вставить("ВСоставеКонфигурации" , Выборка.ВСоставеКонфигурации);
|
||
ДанныеУстройства.Вставить("ИдентификаторОбъекта" , Выборка.ИдентификаторОбъекта);
|
||
ДанныеУстройства.Вставить("СнятСПоддержки" , Выборка.СнятСПоддержки);
|
||
ДанныеУстройства.Вставить("ВерсияДрайвера" , Выборка.ВерсияДрайвера);
|
||
ДанныеУстройства.Вставить("СетевоеОборудование" , Выборка.ТипПодключения = Перечисления.ТипыПодключенияОборудования.ОбщийДоступ);
|
||
|
||
СпособПодключения = Выборка.СпособПодключения;
|
||
ПодключениеИзМакета = СпособПодключения = Перечисления.СпособПодключенияДрайвера.ИзМакета;
|
||
ПодключениеЛокальноПоИдентификатору = СпособПодключения = Перечисления.СпособПодключенияДрайвера.ЛокальноПоИдентификатору;
|
||
|
||
ШаблонЛокализации = Неопределено;
|
||
МакетДоступен = Ложь;
|
||
ИмяМакетаДрайвера = "";
|
||
|
||
Если ПодключениеИзМакета Тогда // Заполнить данные по макету
|
||
ИмяДрайвера = Выборка.ИмяПредопределенныхДанных;
|
||
ИмяМакетаДрайвера = Выборка.ИмяМакетаДрайвера;
|
||
МенеджерОборудования.ЗаполнитьДанныеМакетов(ИмяДрайвера, ИмяМакетаДрайвера, МакетДоступен, ШаблонЛокализации, КодЯзыка);
|
||
КонецЕсли;
|
||
|
||
ДанныеУстройства.Вставить("СпособПодключения" , СпособПодключения);
|
||
ДанныеУстройства.Вставить("ПодключениеИзМакета" , ПодключениеИзМакета);
|
||
ДанныеУстройства.Вставить("ПодключениеЛокальноПоИдентификатору", ПодключениеЛокальноПоИдентификатору);
|
||
ДанныеУстройства.Вставить("ИмяМакетаДрайвера" , ИмяМакетаДрайвера);
|
||
ДанныеУстройства.Вставить("МакетДоступен" , МакетДоступен);
|
||
ДанныеУстройства.Вставить("ШаблонЛокализации" , ШаблонЛокализации);
|
||
ДанныеУстройства.Вставить("АвтоматическаяФискализация" , Выборка.АвтоматическаяФискализация);
|
||
ДанныеУстройства.Вставить("ИспользуетсяФН36" , Выборка.ИспользуетсяФН36);
|
||
ДанныеУстройства.Вставить("ТребуетсяПереустановка" , Выборка.ТребуетсяПереустановка);
|
||
ДанныеУстройства.Вставить("ТребуетсяУстановка" , Выборка.ТребуетсяУстановка);
|
||
ДанныеУстройства.Вставить("Организация" , Выборка.Организация);
|
||
|
||
// Ограничение доступа
|
||
ОграничениеДоступа = Новый Массив();
|
||
РезультатЗапросаОграничениеДоступа = Выборка.ОграничениеДоступа; // РезультатЗапроса
|
||
ВыборкаОграничениеДоступа = РезультатЗапросаОграничениеДоступа.Выбрать();
|
||
Пока ВыборкаОграничениеДоступа.Следующий() Цикл
|
||
ОграничениеДоступа.Добавить(Строка(ВыборкаОграничениеДоступа.Пользователь));
|
||
КонецЦикла;
|
||
ДанныеУстройства.Вставить("ОграничениеДоступа", ОграничениеДоступа);
|
||
Если ОграничениеДоступа.Количество() > 0 Тогда
|
||
ДоступноТекущемуПользователю = ОграничениеДоступа.Найти(ТекущийПользовательИБ) <> Неопределено;
|
||
Иначе
|
||
ДоступноТекущемуПользователю = Истина;
|
||
КонецЕсли;
|
||
ДанныеУстройства.Вставить("ДоступноТекущемуПользователю", ДоступноТекущемуПользователю);
|
||
|
||
Если Выборка.ТипОборудования = Перечисления.ТипыПодключаемогоОборудования.ККТ
|
||
И ОбщегоНазначенияБПО.ИспользуетсяЧекопечатающиеУстройства() Тогда
|
||
МодульОборудованиеЧекопечатающиеУстройства = ОбщегоНазначенияБПО.ОбщийМодуль("ОборудованиеЧекопечатающиеУстройства");
|
||
ПараметрыРегистрации = МодульОборудованиеЧекопечатающиеУстройства.ПараметрыРегистрацииУстройства(Выборка.Ссылка);
|
||
Иначе
|
||
ПараметрыРегистрации = Новый Структура();
|
||
КонецЕсли;
|
||
|
||
ДанныеУстройства.Вставить("ПараметрыРегистрации", ПараметрыРегистрации);
|
||
|
||
Возврат ДанныеУстройства;
|
||
|
||
КонецФункции
|
||
|
||
#КонецОбласти
|
||
|
||
#КонецЕсли |