Отчет банка по операциям эквайринга / Форма подбора платежей / Модуль формы

файл

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	// Пропускаем инициализацию, чтобы гарантировать получение формы при передаче параметра "АвтоТест".
	Если Параметры.Свойство("АвтоТест") Тогда
		Возврат;
	КонецЕсли;
	
	Организация = Параметры.Организация;
	Валюта = Параметры.Валюта;
	ДатаПлатежаОтбор = Параметры.Дата;
	
	ИспользуютсяЭквайринговыеТерминалы = Ложь;
	Параметры.Свойство("ДоговорЭквайринга", ДоговорЭквайринга);
	Параметры.Свойство("ИспользуютсяЭквайринговыеТерминалы", ИспользуютсяЭквайринговыеТерминалы);
	
	Элементы.ТаблицаПлатежейЭквайринговыйТерминал.Видимость = ИспользуютсяЭквайринговыеТерминалы;
	
	ПодборВходящихПлатежей  = Параметры.ПодборВходящихПлатежей;
	АдресПлатежейВХранилище = Параметры.АдресПлатежейВХранилище;
	
	ЗаполнитьТаблицуПлатежей();
	
	СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
	
КонецПроцедуры

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

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура ПеренестиВДокумент()

	ПоместитьПлатежиВХранилище();
	Закрыть(КодВозвратаДиалога.OK);
	
	Структура = Новый Структура("ПодборВходящихПлатежей, АдресПлатежейВХранилище", ПодборВходящихПлатежей, АдресПлатежейВХранилище);
	ОповеститьОВыборе(Структура);
	
КонецПроцедуры

&НаКлиенте
Процедура ВыбратьПлатежи()

	Для Каждого СтрокаТаблицы Из ТаблицаПлатежей Цикл
		СтрокаТаблицы.Выбран = Истина;
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Процедура ИсключитьПлатежи()

	Для Каждого СтрокаТаблицы Из ТаблицаПлатежей Цикл
		СтрокаТаблицы.Выбран = Ложь
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Процедура ВыбратьВыделенныеПлатежи(Команда)
	
	МассивСтрок = Элементы.ТаблицаПлатежей.ВыделенныеСтроки;
	Для Каждого НомерСтроки Из МассивСтрок Цикл
		СтрокаТаблицы = ТаблицаПлатежей.НайтиПоИдентификатору(НомерСтроки);
		Если СтрокаТаблицы <> Неопределено Тогда
			СтрокаТаблицы.Выбран = Истина;
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Процедура ИсключитьВыделенныеПлатежи(Команда)
	
	МассивСтрок = Элементы.ТаблицаПлатежей.ВыделенныеСтроки;
	Для Каждого НомерСтроки Из МассивСтрок Цикл
		СтрокаТаблицы = ТаблицаПлатежей.НайтиПоИдентификатору(НомерСтроки);
		Если СтрокаТаблицы <> Неопределено Тогда
			СтрокаТаблицы.Выбран = Ложь;
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
	
	СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура ДатаПлатежаОтборПриИзменении(Элемент)
	
	ЗаполнитьТаблицуПлатежей();
	
КонецПроцедуры

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

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

#Область Прочее

&НаСервере
Процедура ПоместитьПлатежиВХранилище() 
	
	Платежи = ТаблицаПлатежей.Выгрузить(, "Выбран, ДатаПлатежа, ЭквайринговыйТерминал, КодАвторизации, Сумма");
	МассивУдаляемыхСтрок = Новый Массив;
	Для Каждого СтрокаТаблицы Из Платежи Цикл
		Если Не СтрокаТаблицы.Выбран Тогда
			МассивУдаляемыхСтрок.Добавить(СтрокаТаблицы);
		КонецЕсли;
	КонецЦикла;
	
	Для Каждого СтрокаТаблицы Из МассивУдаляемыхСтрок Цикл
		Платежи.Удалить(СтрокаТаблицы);
	КонецЦикла;

	ПоместитьВоВременноеХранилище(Платежи, АдресПлатежейВХранилище);
	
КонецПроцедуры

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

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

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

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