Панель администрирования УТ / РМК и оборудование / Модуль формы

файл
#Область ОписаниеПеременных

&НаКлиенте
Перем ОбновитьИнтерфейс;

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

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

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

КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
	Если ЗавершениеРаботы Тогда
		Возврат;
	КонецЕсли;
	ОбновитьИнтерфейсПрограммы();
КонецПроцедуры

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

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

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура ИспользоватьПодключаемоеОборудованиеПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьОбменСПодключаемымОборудованиемOfflineПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
	Оповестить("ИзмененыДоступныеТипыПодключаемогоОборудования", , ЭтаФорма);
КонецПроцедуры

&НаКлиенте
Процедура ИспользуетсяПротоколRDPвБПОПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ХранитьУспешныеОперацииРазрешенияПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура СрокХраненияОперацийПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ОткрытьОфлайнОборудование(Команда)
	
	НастройкиСистемыКлиентЛокализация.ОбработкаКоманды_НастройкиРМКИОборудования(Команда, ЭтотОбъект);
	
КонецПроцедуры

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

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

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

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

&НаКлиенте
Процедура ОткрытьЖурналыОперацийБПО(Команда)

	РозничныеПродажиКлиентЛокализация.ОткрытьЖурналыОперацийБПО(ЭтотОбъект, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура НастроитьРасписаниеОчисткиЖурналовОперацийБПО(Команда)
	
	РозничныеПродажиКлиентЛокализация.НастроитьРасписаниеОчисткиЖурналовОперацийБПО(ЭтотОбъект, Команда);
	
КонецПроцедуры

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

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

#Область Клиент

&НаКлиенте
Процедура Подключаемый_ПриИзмененииРеквизита(Элемент, ОбновлятьИнтерфейс = Истина)
	
	КонстантаИмя = ПриИзмененииРеквизитаСервер(Элемент.Имя);
	
	Если ОбновлятьИнтерфейс Тогда
		ОбновитьИнтерфейс = Истина;
		ПодключитьОбработчикОжидания("ОбновитьИнтерфейсПрограммы", 2, Истина);
	КонецЕсли;
	
	Если КонстантаИмя <> "" Тогда
		Оповестить("Запись_НаборКонстант", Новый Структура, КонстантаИмя);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьИнтерфейсПрограммы()
	
	Если ОбновитьИнтерфейс = Истина Тогда
		ОбновитьИнтерфейс = Ложь;
		ОбщегоНазначенияКлиент.ОбновитьИнтерфейсПрограммы();
	КонецЕсли;
	
КонецПроцедуры

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

#Область ВызовСервера

&НаСервере
Функция ПриИзмененииРеквизитаСервер(ИмяЭлемента)
	
	РеквизитПутьКДанным = Элементы[ИмяЭлемента].ПутьКДанным;
	
	КонстантаИмя = СохранитьЗначениеРеквизита(РеквизитПутьКДанным);
	
	УстановитьДоступность(РеквизитПутьКДанным);
	
	ОбновитьПовторноИспользуемыеЗначения();
	
	Возврат КонстантаИмя;
	
КонецФункции

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

#Область Сервер

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

&НаСервере
Процедура УстановитьДоступность(РеквизитПутьКДанным = "")
	
	Если РеквизитПутьКДанным = "НаборКонстант.ИспользоватьПодключаемоеОборудование" ИЛИ РеквизитПутьКДанным = "" Тогда
		ЗначениеКонстанты = НаборКонстант.ИспользоватьПодключаемоеОборудование;
		
		Элементы.ИспользоватьОбменСПодключаемымОборудованиемOffline.Доступность = ЗначениеКонстанты И Константы.ИспользоватьРозничныеПродажи.Получить();
		Элементы.ОткрытьПодключаемоеОборудование.Доступность 					= ЗначениеКонстанты;
		Элементы.ОткрытьШаблоныМагнитныхКарт.Доступность 						= ЗначениеКонстанты;
	КонецЕсли;
	
	Если РеквизитПутьКДанным = "НаборКонстант.ИспользоватьОбменСПодключаемымОборудованиемOffline" ИЛИ РеквизитПутьКДанным = "" Тогда
		Элементы.ОткрытьПравилаОбменаСПодключаемымОборудованием.Доступность = НаборКонстант.ИспользоватьОбменСПодключаемымОборудованиемOffline;
		Элементы.ОткрытьОфлайнОборудование.Доступность                      = НаборКонстант.ИспользоватьОбменСПодключаемымОборудованиемOffline;
	КонецЕсли;
	
	ОбменДаннымиУТУП.УстановитьДоступностьНастроекУзлаИнформационнойБазы(ЭтаФорма);
	
КонецПроцедуры

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

	Запрос.УстановитьПараметр("РабочееМесто", МенеджерОборудованияВызовСервера.ПолучитьРабочееМестоКлиента());

	Результат = Запрос.Выполнить();
	Выборка = Результат.Выбрать();

	Если Выборка.Следующий() Тогда
	
		Возврат Выборка.Ссылка;
		
	Иначе
		
		Возврат Справочники.НастройкиРМК.ПустаяСсылка();
		
	КонецЕсли;
	
КонецФункции

&НаСервере
Процедура ЗаполнитьОписаниеНастраиваемыхРегламентныхЗаданий()
	
	УстановитьПривилегированныйРежим(Истина);
	
	ОписаниеНастраиваемыхРегламентныхЗаданий = Новый Структура;
	ОписаниеНастраиваемыхРегламентныхЗаданий.Вставить("ОчисткаИсторииФискальныхОпераций", 
					Новый Структура("ИмяМетаданныхРегламентногоЗадания, МетаданныеДляПроверкиПравДоступаНаИзменение",
									Метаданные.РегламентныеЗадания.ОчисткаИсторииФискальныхОпераций.Имя, Новый СписокЗначений));
									
	ОписаниеНастраиваемыхРегламентныхЗаданий.Вставить("ОчисткаИсторииПлатежныхОпераций", 
					Новый Структура("ИмяМетаданныхРегламентногоЗадания, МетаданныеДляПроверкиПравДоступаНаИзменение",
									Метаданные.РегламентныеЗадания.ОчисткаИсторииПлатежныхОпераций.Имя, Новый СписокЗначений));
	
	//++ Локализация
	ОписаниеНастраиваемыхРегламентныхЗаданий.Вставить("ОчисткаИсторииОперацийПроверкиКМ", 
					Новый Структура("ИмяМетаданныхРегламентногоЗадания, МетаданныеДляПроверкиПравДоступаНаИзменение",
									Метаданные.РегламентныеЗадания.ОчисткаИсторииОперацийПроверкиКМ.Имя, Новый СписокЗначений));
	ОписаниеНастраиваемыхРегламентныхЗаданий.Вставить("ОчисткаИсторииОперацийОчередиЧеков", 
					Новый Структура("ИмяМетаданныхРегламентногоЗадания, МетаданныеДляПроверкиПравДоступаНаИзменение",
									Метаданные.РегламентныеЗадания.ОчисткаИсторииОперацийОчередиЧеков.Имя, Новый СписокЗначений));
	//-- Локализация

КонецПроцедуры

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

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

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