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