Виды карт лояльности / Модуль объекта

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

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

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

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

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

Процедура ПриКопировании(ОбъектКопирования)
	
	Статус = Перечисления.СтатусыВидовКартЛояльности.НеДействует;
	
КонецПроцедуры

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
	
	ЗаполнитьЗначенияПоУмолчанию();
	
КонецПроцедуры

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

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

Процедура ЗаполнитьЗначенияПоУмолчанию()
	
	Организация = ЗначениеНастроекПовтИсп.ПолучитьОрганизациюПоУмолчанию(Организация);
	
КонецПроцедуры

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

#КонецЕсли

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