Кассы ККМ / Форма элемента / Модуль формы

файл

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
		Возврат;
	КонецЕсли;

	ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.Свойства
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
КонецПроцедуры

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

&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	
	СобытияФорм.ПриЗаписиНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
	
КонецПроцедуры

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)

	// СтандартныеПодсистемы.УправлениеДоступом
	УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
	// Конец СтандартныеПодсистемы.УправлениеДоступом
	
	// подсистема запрета редактирования ключевых реквизитов объектов	
	ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтаФорма);
	
	ОбновитьПовторноИспользуемыеЗначения();

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

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

&НаКлиенте
Процедура СкладПриИзменении(Элемент)
	АвтоНаименование();
КонецПроцедуры

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

	МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
	
	ПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
	
КонецПроцедуры

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)

	// СтандартныеПодсистемы.УправлениеДоступом
	УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
	// Конец СтандартныеПодсистемы.УправлениеДоступом
	
	УправлениеСвойствами.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
	
	МодификацияКонфигурацииПереопределяемый.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
КонецПроцедуры

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

&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтаФорма, Отказ, ПроверяемыеРеквизиты);
	// Конец СтандартныеПодсистемы.Свойства
	
КонецПроцедуры

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

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

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

	Если Объект.ТипКассы <> Перечисления.ТипыКассККМ.ФискальныйРегистратор И Объект.РазъезднаяТорговля Тогда
		Объект.РазъезднаяТорговля = Ложь;
	КонецЕсли;
	
	//++ Локализация
	Элементы.ЛокализацияПараметрыНСПК.Видимость = Ложь;	 
	Если Объект.ТипКассы = Перечисления.ТипыКассККМ.ФискальныйРегистратор
			ИЛИ Объект.ТипКассы = Перечисления.ТипыКассККМ.АвтономнаяККМ Тогда
		Элементы.ЛокализацияПараметрыНСПК.Видимость = ПолучитьФункциональнуюОпцию("ОплатаЭлектроннымиСертификатамиФСС");
	КонецЕсли; 
	//-- Локализация
	
	ОбновитьИмяУзлаОбмена();
	АвтоНаименование();
	
КонецПроцедуры

&НаКлиенте
Процедура ТипКассыПриИзменении(Элемент)
	
	ТипКассыПриИзмененииНаСервере();
	
КонецПроцедуры

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

&НаКлиенте
Процедура ВладелецПриИзменении(Элемент)
	
	ВладелецПриИзмененииНаСервере();
	
КонецПроцедуры

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

&НаКлиенте
Процедура ПротоколОбменаНСПКПриИзменении(Элемент)
	ПротоколОбменаНСПКПриИзмененииЛокализация(Элемент);
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
	
	СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
	УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура ТестовоеПодключениеНСПК(Команда)
	
	ТестовоеПодключениеНСПКЛокализация();
	
КонецПроцедуры

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
	
	ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
	
	ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
	
КонецПроцедуры

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

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

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

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

#Область ОплатаЭСФССЛокализация

&НаКлиенте
Процедура ТестовоеПодключениеНСПКЛокализация()
	
	//++ Локализация
	
	Если Модифицированность Или Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
		ПоказатьПредупреждение(, НСтр("ru = 'Перед тестом подключения необходимо записать изменения.'"));
		Возврат;
	КонецЕсли;
	
	ОчиститьСообщения();
	ТестовоеПодключениеНСПКНаКлиенте();
	
	//-- Локализация
	
КонецПроцедуры

&НаКлиенте
Процедура ПротоколОбменаНСПКПриИзмененииЛокализация(Элемент)
	
	//++ Локализация
	ПротоколОбменаНСПКПриИзмененииСерверЛокализация();
	//-- Локализация

КонецПроцедуры
//++ Локализация

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

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

&НаКлиенте
Функция ПараметрыПодключенияКСервисуНСПКЗаполнены(ПараметрыОперации, ТекстСообщения)
	ПараметрыЗаполнены = Истина;
	
	Если Не ЗначениеЗаполнено(ПараметрыОперации.АдресСервера) Тогда
		ТекстСообщения = ТекстСообщения + ?(ЗначениеЗаполнено(ТекстСообщения), Символы.ПС, "") + НСтр("ru = 'Не заполнен ""Адрес сервиса"" в настройках НСПК.'");
		ПараметрыЗаполнены = Ложь;
	КонецЕсли; 
	
	Если Не ЗначениеЗаполнено(ПараметрыОперации.ПротоколОбмена) Тогда
		ТекстСообщения = ТекстСообщения + ?(ЗначениеЗаполнено(ТекстСообщения), Символы.ПС, "") + НСтр("ru = 'Поле ""Протокол обмена НСПК"" не заполнено.'");
		ПараметрыЗаполнены = Ложь;
	КонецЕсли;
	
	Если Не ЗначениеЗаполнено(ПараметрыОперации.КлючДоступа) Тогда
		ТекстСообщения = ТекстСообщения + ?(ЗначениеЗаполнено(ТекстСообщения), Символы.ПС, "") + НСтр("ru = 'Поле ""Ключ (API KEY)"" не заполнено.'");
		ПараметрыЗаполнены = Ложь;
	КонецЕсли;
	
	Если Не ЗначениеЗаполнено(ПараметрыОперации.ИдентификаторКассы) Тогда
		ТекстСообщения = ТекстСообщения + ?(ЗначениеЗаполнено(ТекстСообщения), Символы.ПС, "") + НСтр("ru = 'Поле ""Идентификатор НСПК"" не заполнено.'");
		ПараметрыЗаполнены = Ложь;
	КонецЕсли;
	
	Если Не ЗначениеЗаполнено(ПараметрыОперации.КлючКассы) Тогда
		ТекстСообщения = ТекстСообщения + ?(ЗначениеЗаполнено(ТекстСообщения), Символы.ПС, "") + НСтр("ru = 'Поле ""Ключ кассы НСПК"" не заполнено.'");
		ПараметрыЗаполнены = Ложь;
	КонецЕсли;
	
	Возврат ПараметрыЗаполнены;	
КонецФункции

&НаКлиенте
Процедура ТестовоеПодключениеЗавершение(РезультатВыполнения, ДополнительныеПараметры) Экспорт
	 
	Если РезультатВыполнения.Результат Тогда
		ТекстСообщения = НСтр("ru='Тест подключения выполнен успешно'");
	Иначе
		ТекстСообщения =
			СтрШаблон(НСтр("ru='Ошибка: (%1) %2'"), РезультатВыполнения.КодРезультата, РезультатВыполнения.ОписаниеОшибки);
	КонецЕсли;
	
	ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения);
	
КонецПроцедуры

&НаСервере
Функция ПараметрыОперацииНСПКПоКассеККМ()
	
	Возврат ЭлектронныеСертификатыНСПКУТ.ПараметрыОперацииНСПКПоКассеККМ(Объект.Ссылка);
	
КонецФункции

&НаСервере
Процедура ПротоколОбменаНСПКПриИзмененииСерверЛокализация()
	
	ПараметрыСобытия = Новый Структура;
	СобытияФормЛокализация.ПриИзмененииЭлемента(ЭтотОбъект, "ПротоколОбменаНСПК", ПараметрыСобытия);
	
КонецПроцедуры

//-- Локализация

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

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

// Обработчик команды, создаваемой механизмом запрета редактирования ключевых реквизитов.
//
&НаКлиенте
Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъекта(Команда)
	
	ОбщегоНазначенияУТКлиент.РазрешитьРедактированиеРеквизитовОбъекта(ЭтаФорма);
	
КонецПроцедуры

&НаСервере
Функция АвтоНаименование()
	
	Элементы.Наименование.СписокВыбора.Очистить();
	
	СтрокаНаименования = Строка(Объект.ТипКассы) + " (" + Объект.Склад + ")";
	
	Элементы.Наименование.СписокВыбора.Добавить(СтрокаНаименования);
	
	Возврат СтрокаНаименования;

КонецФункции

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

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

// СтандартныеПодсистемы.Свойства
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
	УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры

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

&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
	
	УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма);
	
КонецПроцедуры
// Конец СтандартныеПодсистемы.Свойства

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

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

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