Аннулирование подарочных сертификатов / Форма документа / Модуль формы

файл

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

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

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

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

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

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область ОбработчикиСобытийЭлементовТаблицыФормыПодарочныеСертификаты

&НаКлиенте
Процедура ПодарочныеСертификатыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
	// На форме запрещено интерактивное добавление и копирование строк таблицы.
	Отказ = Истина;
КонецПроцедуры

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

&НаКлиенте
Процедура ПодарочныеСертификатыПодарочныйСертификатНачалоВыбораЗавершение(Результат, ДополнительныеПараметры) Экспорт
	ВыбранныйСертификат = Результат;
	Если ВыбранныйСертификат = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ТекущиеДанные = Элементы.ПодарочныеСертификаты.ТекущиеДанные;
	Если ТекущиеДанные <> Неопределено Тогда
		ТекущиеДанные.ПодарочныйСертификат = ВыбранныйСертификат;
		ОбработатьПодарочныйСертификат(ВыбранныйСертификат);
	КонецЕсли; 	
КонецПроцедуры

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

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

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

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

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


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


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

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

&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
	
	ОбщегоНазначенияУТКлиент.Записать(ЭтотОбъект);
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ПровестиДокумент(Команда)
	
	ОбщегоНазначенияУТКлиент.Провести(ЭтотОбъект);
	
КонецПроцедуры

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

&НаКлиенте
Процедура СчитатьПодарочныйСертификат(Команда)

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

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

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

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

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

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

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

#Область ШтрихкодыИТорговоеОборудование

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

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

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

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

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

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

&НаСервере
Процедура ОбработатьПодарочныйСертификат(ПодарочныйСертификат)
	
	ДанныеПодарочногоСертификата = ПодарочныеСертификатыВызовСервера.ПолучитьДанныеПодарочногоСертификата(ПодарочныйСертификат);
	
	НайденныеСтроки = Объект.ПодарочныеСертификаты.НайтиСтроки(Новый Структура("ПодарочныйСертификат", ПодарочныйСертификат));
	Если НайденныеСтроки.Количество() = 0 Тогда
		НайденнаяСтрока = Объект.ПодарочныеСертификаты.Добавить();
	Иначе
		НайденнаяСтрока = НайденныеСтроки[0];
	КонецЕсли;
	
	НайденнаяСтрока.ПодарочныйСертификат = ПодарочныйСертификат;
	НайденнаяСтрока.СуммаВВалютеСертификата = ДанныеПодарочногоСертификата.Остаток;
	
КонецПроцедуры

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

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

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