TSDZakazScladVasilek/Catalogs/ПодключаемоеОборудование/Ext/ManagerModule.bsl

528 lines
39 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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