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