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