Подарочные сертификаты / Модуль объекта

файл
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

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

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

Процедура ПередЗаписью(Отказ)
	
	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;

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

	СоздатьОбъектРасчетовПоПодарочномуСертификату2_5(УчетПодарочныхСертификатов2_5, Отказ);
	
КонецПроцедуры

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

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

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

Функция УчетПодарочныхСертификатов2_5()
	
	Возврат Справочники.ПодарочныеСертификаты.УчетПодарочныхСертификатов2_5(ЭтотОбъект);
	
КонецФункции

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

#КонецЕсли

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