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