TSDZakazScladVasilek/CommonModules/МенеджерОборудованияВызовСервера/Ext/Module.bsl

1217 lines
67 KiB
Plaintext
Raw Permalink 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.

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