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