#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ПоддерживаемыеТипыПодключаемогоОборудования = "СканерШтрихкода,СчитывательМагнитныхКарт";
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтаФорма);
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтаФорма, ПоддерживаемыеТипыПодключаемогоОборудования);
Активизировать();
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
Если Не ЗакрытьФорму И НЕ ЗавершениеРаботы Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии()
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если Источник = "ПодключаемоеОборудование" И ВводДоступен() Тогда
Если ИмяСобытия = "ScanData" И МенеджерОборудованияУТКлиент.ЕстьНеобработанноеСобытие() Тогда
ОбработатьШтрихкоды(МенеджерОборудованияУТКлиент.ПреобразоватьДанныеСоСканераВМассив(Параметр));
ИначеЕсли ИмяСобытия ="TracksData" Тогда
ОбработатьДанныеСчитывателяМагнитныхКарт(Параметр);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Функция ПолучитьПользователяПоШтрихкоду(Штрихкод)
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос(
"ВЫБРАТЬ ПЕРВЫЕ 1
| ИдентификационныеДанныеПользователей.Пользователь КАК Пользователь
|ИЗ
| РегистрСведений.ИдентификационныеДанныеПользователей КАК ИдентификационныеДанныеПользователей
|ГДЕ
| ИдентификационныеДанныеПользователей.Штрихкод = &Штрихкод");
Запрос.УстановитьПараметр("Штрихкод", Штрихкод);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.Пользователь;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
&НаСервере
Функция ПолучитьПользователяПоМагнитномуКоду(МагнитныйКод)
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос(
"ВЫБРАТЬ ПЕРВЫЕ 1
| ИдентификационныеДанныеПользователей.Пользователь КАК Пользователь
|ИЗ
| РегистрСведений.ИдентификационныеДанныеПользователей КАК ИдентификационныеДанныеПользователей
|ГДЕ
| ИдентификационныеДанныеПользователей.МагнитныйКод = &МагнитныйКод");
Запрос.УстановитьПараметр("МагнитныйКод", МагнитныйКод);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.Пользователь;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
#Область ШтрихкодыИТорговоеОборудование
&НаКлиенте
Процедура ОбработатьШтрихкоды(ДанныеШтрихкода)
Если Не ШтрихкодированиеНоменклатурыКлиент.ШтрихкодыВалидны(ДанныеШтрихкода) Тогда
Возврат;
КонецЕсли;
Пользователь = ПолучитьПользователяПоШтрихкоду(ДанныеШтрихкода[0].Штрихкод);
Если ЗначениеЗаполнено(Пользователь) Тогда
ПодключитьОбработчикОжидания("ВыбратьПользователя", 0.1, Истина);
Иначе
ПоказатьПредупреждение(Неопределено, НСтр("ru = 'Пользователь не обнаружен.'"));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьДанныеСчитывателяМагнитныхКарт(Данные)
СписокКодов = Новый СписокЗначений;
РасшифрованныеДанные = Данные[1][3];
Если РасшифрованныеДанные <> Неопределено Тогда
Для Каждого Структура Из РасшифрованныеДанные Цикл
ШаблонМагнитнойКарты = Структура.Шаблон;
КодКарты = Неопределено;
Для Каждого ДанныеПоля Из Структура.ДанныеДорожек Цикл
Если ДанныеПоля.Поле = ПредопределенноеЗначение("Перечисление.ПоляШаблоновМагнитныхКарт.Код") Тогда
СписокКодов.Добавить(ДанныеПоля.ЗначениеПоля);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;
Если СписокКодов.Количество() = 1 Тогда
МагнитныйКод = СписокКодов.Получить(0).Значение;
ИначеЕсли СписокКодов.Количество() = 0 Тогда
ПоказатьПредупреждение(Неопределено, НСтр("ru = 'Код карты не соответствует ни одному из шаблонов магнитных карт.'"));
Возврат;
Иначе
ВыбранноеЗначение = Неопределено;
СписокКодов.ПоказатьВыборЭлемента(Новый ОписаниеОповещения("ОбработатьДанныеСчитывателяМагнитныхКартЗавершение", ЭтотОбъект), НСтр("ru = 'Выбор кода магнитной карты'"));
Возврат;
КонецЕсли;
ОбработатьДанныеСчитывателяМагнитныхКартФрагмент(МагнитныйКод);
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьДанныеСчитывателяМагнитныхКартЗавершение(ВыбранныйЭлемент, ДополнительныеПараметры) Экспорт
ВыбранноеЗначение = ВыбранныйЭлемент;
Если ВыбранноеЗначение <> Неопределено Тогда
МагнитныйКод = ВыбранноеЗначение.Значение;
КонецЕсли;
ОбработатьДанныеСчитывателяМагнитныхКартФрагмент(МагнитныйКод);
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьДанныеСчитывателяМагнитныхКартФрагмент(Знач МагнитныйКод)
Пользователь = ПолучитьПользователяПоМагнитномуКоду(МагнитныйКод);
Если ЗначениеЗаполнено(Пользователь) Тогда
ПодключитьОбработчикОжидания("ВыбратьПользователя", 0.1, Истина);
Иначе
ПоказатьПредупреждение(Неопределено, НСтр("ru = 'Пользователь не обнаружен.'"));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьПользователя()
ЗакрытьФорму = Истина;
Оповестить("АвторизованПользователь", Новый Структура(
"ФормаВладелец, Пользователь, Режим", ЭтаФорма.ВладелецФормы.УникальныйИдентификатор, Пользователь, "СменитьПрава"));
Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЧекККМ(Команда)
ЗакрытьФорму = Истина;
Оповестить("АвторизованПользователь",
Новый Структура(
"ФормаВладелец, Пользователь, Режим",,
Пользователь,
"ЗакрытьЧекККМ"));
Если Открыта() Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти