Чек ККМ / Подключенное оборудование / Модуль формы

файл

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
		Возврат;
	КонецЕсли;
	
	ЗначениеОткрыватьФормуСПодключеннымОборудованием = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ЧекККМ", "ОткрыватьФормуСПодключеннымОборудованием");
	Если ЗначениеОткрыватьФормуСПодключеннымОборудованием = Неопределено Тогда
		БольшеНеПоказывать = Ложь;
	Иначе
		БольшеНеПоказывать = Не ЗначениеОткрыватьФормуСПодключеннымОборудованием;
	КонецЕсли;
	
	ФормаВладелец                        = Параметры.УникальныйИдентификатор;
	ПодключитьОборудованиеПриОткрытии    = Параметры.ПодключитьОборудованиеПриОткрытии;
	ИспользоватьПодключаемоеОборудование = Истина;
	
	ЭтоПолноправныйПользователь = Пользователи.ЭтоПолноправныйПользователь();
	Элементы.ГруппаОткрытьПодключаемоеОборудование.Видимость = ЭтоПолноправныйПользователь;
	Элементы.ГруппаОткрытьТекущиеНастройкиРМК.Видимость = ЭтоПолноправныйПользователь;
	
	ПоддерживаемыеТипыПодключаемогоОборудования = Параметры.ПоддерживаемыеТипыПодключаемогоОборудования;
	РозничныеПродажи.ЗаполнитьТаблицуОборудование(ЭтотОбъект, ПоддерживаемыеТипыПодключаемогоОборудования);
	
	Элементы.ОборудованиеГруппаУправлениеУстройствами.Доступность = Оборудование.Количество() > 0;
	
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	//ОборудованиеПодключено
	
	Если ПодключитьОборудованиеПриОткрытии Тогда
		
		ОписаниеЗавершения = Новый ОписаниеОповещения("НачатьПодключениеОборудованиеПриОткрытииФормыЗавершение", РозничныеПродажиКлиент, Новый Структура("Форма", ЭтотОбъект));
		МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(ОписаниеЗавершения, ВладелецФормы, ПоддерживаемыеТипыПодключаемогоОборудования);
		
	Иначе
		
		ПодключаемоеОборудованиеПараметры = МенеджерОборудованияКлиент.ПодключаемоеОборудование().ПараметрыПодключенияПО; // Массив из см. Справочники.ПодключаемоеОборудование.ДанныеУстройства
		
		Для Каждого СтрокаТЧ Из ПодключаемоеОборудованиеПараметры Цикл
			
			Отбор = Новый Структура("Ссылка", СтрокаТЧ.Ссылка);
			НайденныеСтроки = Оборудование.НайтиСтроки(Отбор);
			Для Каждого СтрокаОборудование Из НайденныеСтроки Цикл
				СтрокаОборудование.Подключено = 0;
			КонецЦикла;
			
		КонецЦикла;
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
	Если НЕ ЗавершениеРаботы Тогда
		ПередЗакрытиемНаСервере();
	КонецЕсли;
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура ОткрытьПодключаемоеОборудование(Команда)
	
	МенеджерОборудованияКлиент.ОбновитьРабочееМестоКлиента();
	
	ОткрытьФорму("Справочник.ПодключаемоеОборудование.ФормаСписка", , ЭтаФорма);
	
КонецПроцедуры

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

&НаКлиенте
Процедура Подключить(Команда)
	
	ОчиститьСообщения();
	
	ТекущиеДанные = Элементы.Оборудование.ТекущиеДанные;
	
	Если ТекущиеДанные = Неопределено Тогда
		ПоказатьПредупреждение(,НСтр("ru = 'Команда не может быть выполнена для указанного объекта!'"));
		Возврат;
	КонецЕсли;
	
	Если ТекущиеДанные.Подключено = 0 Тогда
		ПоказатьПредупреждение(,НСтр("ru = 'Оборудование уже подключено.'"));
		Возврат;
	КонецЕсли;
	
	МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПоИдентификатору(
		Новый ОписаниеОповещения("НачатьПодключениеОборудованиеПоИдентификаторуЗавершение", ЭтотОбъект, ТекущиеДанные),
		ВладелецФормы.УникальныйИдентификатор,
		ТекущиеДанные.Ссылка);
	
КонецПроцедуры

&НаКлиенте
Процедура Отключить(Команда)
	
	ОчиститьСообщения();
	
	ТекущиеДанные = Элементы.Оборудование.ТекущиеДанные;
	
	Если ТекущиеДанные = Неопределено Тогда
		ПоказатьПредупреждение(,НСтр("ru = 'Команда не может быть выполнена для указанного объекта!'"));
		Возврат;
	КонецЕсли;
	
	Если ТекущиеДанные.Подключено = 1 Тогда
		ПоказатьПредупреждение(,НСтр("ru = 'Оборудование не подключено.'"));
		Возврат;
	КонецЕсли;
	
	МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПоИдентификатору(
		Новый ОписаниеОповещения("НачатьОтключениеОборудованиеПоИдентификаторуЗавершение", ЭтотОбъект, ТекущиеДанные),
		ВладелецФормы.УникальныйИдентификатор,
		ТекущиеДанные.Ссылка);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗакрытьФорму(Команда)
	
	Закрыть(Неопределено);
	
КонецПроцедуры

#КонецОбласти

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

#Область Прочее

&НаСервереБезКонтекста
Функция ТекущиеНастройкиРМК()
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ ПЕРВЫЕ 1
	|	НастройкиРМК.Ссылка
	|ИЗ
	|	Справочник.НастройкиРМК КАК НастройкиРМК
	|ГДЕ
	|	НастройкиРМК.РабочееМесто = &РабочееМесто";
	
	Запрос.УстановитьПараметр("РабочееМесто", МенеджерОборудованияВызовСервера.ПолучитьРабочееМестоКлиента());
	
	Результат = Запрос.Выполнить();
	Выборка = Результат.Выбрать();
	
	Если Выборка.Следующий() Тогда
		
		Возврат Выборка.Ссылка;
		
	Иначе
		
		Возврат Справочники.НастройкиРМК.ПустаяСсылка();
		
	КонецЕсли;
	
КонецФункции

&НаСервере
Процедура ПередЗакрытиемНаСервере()
	
	ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("ЧекККМ", "ОткрыватьФормуСПодключеннымОборудованием", Не БольшеНеПоказывать);
	
КонецПроцедуры

// Начать подключение оборудование по идентификатору завершение.
// 
// Параметры:
//  Данные - Структура - Результат подключения
//  СтрокаТЧ - ДанныеФормыЭлементКоллекции:
//		Ссылка - СправочникСсылка.ПодключаемоеОборудование - 
&НаКлиенте
Процедура НачатьПодключениеОборудованиеПоИдентификаторуЗавершение(Данные, СтрокаТЧ) Экспорт

	Если НЕ Данные.Результат Тогда
		
		РозничныеПродажиКлиент.СообщитьОбОшибкеПриВыполненииОперацииНаУстройстве(СтрокаТЧ.Ссылка, "ПодключениеУстройства", Данные.ОписаниеОшибки,
						ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Оборудование", Оборудование.Индекс(СтрокаТЧ) + 1, "Представление"));
		
		СтрокаТЧ.Подключено = 1;
		
	Иначе
		
		СтрокаТЧ.Подключено = 0;
		
	КонецЕсли;
	
	Оповестить("ОборудованиеПодключено", Новый Структура("ИдентификаторОборудования,Подключено", СтрокаТЧ.Ссылка, СтрокаТЧ.Подключено), ЭтотОбъект);
	
КонецПроцедуры

// Начать отключение оборудование по идентификатору завершение.
// 
// Параметры:
//  Данные - Структура - Результат подключения
//  СтрокаТЧ - ДанныеФормыЭлементКоллекции:
//		Ссылка - СправочникСсылка.ПодключаемоеОборудование - 
&НаКлиенте
Процедура НачатьОтключениеОборудованиеПоИдентификаторуЗавершение(Данные, СтрокаТЧ) Экспорт

	Если Не Данные.Результат Тогда
		
		РозничныеПродажиКлиент.СообщитьОбОшибкеПриВыполненииОперацииНаУстройстве(СтрокаТЧ.Ссылка, "ОтключениеУстройства", Данные.ОписаниеОшибки,
						ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Оборудование", Оборудование.Индекс(СтрокаТЧ) + 1, "Представление"));
		
	Иначе
		
		СтрокаТЧ.Подключено = 1;
		
	КонецЕсли;
	
	Оповестить("ОборудованиеПодключено", Новый Структура("ИдентификаторОборудования,Подключено", СтрокаТЧ.Ссылка, СтрокаТЧ.Подключено), ЭтотОбъект);
	
КонецПроцедуры

#КонецОбласти

#КонецОбласти

Связанные материалы