#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ОбработчикиСобытий Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка) Автор = Пользователи.ТекущийПользователь(); Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаказКлиента") Тогда ЗаполнитьПоЗаказуКлиента(ДанныеЗаполнения, ДанныеЗаполнения); ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.СчетНаОплатуКлиенту") Тогда ЗаполнитьПоСчетуНаОплатуКлиенту(ДанныеЗаполнения, ДанныеЗаполнения); ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда ЗаполнитьПоРеализацииТоваров(ДанныеЗаполнения, ДанныеЗаполнения); ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.РеализацияУслугПрочихАктивов") Тогда ЗаполнитьПоРеализацииУслугПрочихАктивов(ДанныеЗаполнения, ДанныеЗаполнения); ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.АктВыполненныхРабот") Тогда ЗаполнитьПоАктуВыполненныхРабот(ДанныеЗаполнения, ДанныеЗаполнения); ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ВозвратТоваровОтКлиента") Тогда ЗаполнитьПоВозвратуТоваровОтКлиента(ДанныеЗаполнения, ДанныеЗаполнения); ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаявкаНаРасходованиеДенежныхСредств") Тогда ДанныеЗаполнения = Новый Структура("ДокументОснование, БанковскийСчетКасса, Сумма", ДанныеЗаполнения); ДокументОснование = ДанныеЗаполнения.ДокументОснование; ДенежныеСредстваСервер.ЗаполнитьДокументПоЗаявкамНаРасходованиеДенежныхСредств( ДанныеЗаполнения, РасшифровкаПлатежа, Перечисления.ФормыОплаты.ПлатежнаяКарта, Ссылка); ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ВыкупТоваровХранителем") Тогда ЗаполнитьПоВыкупуТоваровХранителем(ДанныеЗаполнения, ДанныеЗаполнения); ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("СправочникСсылка.ПодарочныеСертификаты") Или ТипЗнч(ДанныеЗаполнения) = Тип("Структура") И ДанныеЗаполнения.Свойство("ПодарочныйСертификат") И ДанныеЗаполнения.Свойство("Контрагент") Тогда ЗаполнитьПоПодарочномуСертификату(ДанныеЗаполнения, ДанныеЗаполнения); ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("Структура") И ДанныеЗаполнения.Свойство("Основание") И ТипЗнч(ДанныеЗаполнения.Основание) = Тип("Массив") Тогда ЗаполнитьПоМассивуОснований(ДанныеЗаполнения, ДанныеЗаполнения.Основание); ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка." + Метаданные().Имя) Тогда ИсправлениеДокументов.ЗаполнитьИсправление(ЭтотОбъект, ДанныеЗаполнения); ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("Структура") И ДанныеЗаполнения.Свойство("Основание") Тогда Если ТипЗнч(ДанныеЗаполнения.Основание) = Тип("ДокументСсылка.ЗаказКлиента") Тогда ЗаполнитьПоЗаказуКлиента_Возврат(ДанныеЗаполнения); ИначеЕсли ТипЗнч(ДанныеЗаполнения.Основание) = Тип("ДокументСсылка.ОперацияПоПлатежнойКарте") Тогда ЗаполнитьПоЭквайринговойОперации(ДанныеЗаполнения); КонецЕсли; Иначе Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") И ДанныеЗаполнения.Свойство("ДоговорЭквайринга") Тогда ДоговорЭквайринга = ДанныеЗаполнения.ДоговорЭквайринга; Иначе ДоговорЭквайринга = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ТекущийДоговорЭквайринга", ""); КонецЕсли; Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") И ДанныеЗаполнения.Свойство("ЭквайринговыйТерминал") Тогда ЭквайринговыйТерминал = ДанныеЗаполнения.ЭквайринговыйТерминал; Иначе ЭквайринговыйТерминал = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ТекущийЭквайринговыйТерминал", ""); КонецЕсли; Если Не ЗначениеЗаполнено(ДоговорЭквайринга) Тогда ПараметрыОтбора = Справочники.ДоговорыЭквайринга.ПараметрыОтбораДоговораЭквайринга(); ДоговорЭквайринга = Справочники.ДоговорыЭквайринга.ДоговорЭквайрингаПоУмолчанию(ПараметрыОтбора); КонецЕсли; Если ЗначениеЗаполнено(ДоговорЭквайринга) Тогда ЗначенияРеквизитов = Справочники.ДоговорыЭквайринга.РеквизитыДоговора(ДоговорЭквайринга); ЗаполнитьЗначенияСвойств(ЭтотОбъект, ЗначенияРеквизитов, "Организация, Валюта"); Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОплатыКлиенту Тогда ОтражатьКомиссию = (ЗначенияРеквизитов.СпособОтраженияКомиссии = Перечисления.СпособыОтраженияЭквайринговойКомиссии.ВоВремяТранзакции) И ЗначенияРеквизитов.ВзимаетсяКомиссияПриВозврате; Иначе ОтражатьКомиссию = (ЗначенияРеквизитов.СпособОтраженияКомиссии = Перечисления.СпособыОтраженияЭквайринговойКомиссии.ВоВремяТранзакции); КонецЕсли; Если ОтражатьКомиссию Тогда ВестиУчетКомиссииВоВзаиморасчетах = ЗначенияРеквизитов.ВестиУчетКомиссииВоВзаиморасчетах; ОбъектРасчетовКомиссии = ЗначенияРеквизитов.ОбъектРасчетовКомиссии; КонецЕсли; КонецЕсли; КонецЕсли; ЗаполнениеОбъектовПоСтатистике.ЗаполнитьРеквизитыОбъекта(ЭтотОбъект, ДанныеЗаполнения); ИнициализироватьДокумент(ДанныеЗаполнения); ВзаиморасчетыСервер.ОбработкаЗаполнения(ЭтотОбъект, ДанныеЗаполнения); ПараметрыВыбораСтатейИАналитик = Документы.ОперацияПоПлатежнойКарте.ПараметрыВыбораСтатейИАналитик( ОтражатьКомиссию И Не ВестиУчетКомиссииВоВзаиморасчетах); ДоходыИРасходыСервер.ОбработкаЗаполнения(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик); ОперацияПоПлатежнойКартеЛокализация.ОбработкаЗаполнения(ЭтотОбъект, ДанныеЗаполнения, СтандартнаяОбработка); Если Не ЗначениеЗаполнено(Ответственный) Тогда Ответственный = Пользователи.ТекущийПользователь(); КонецЕсли; КонецПроцедуры Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) Перем МассивВсехРеквизитов; Перем МассивРеквизитовОперации; РасшифровкаБезРазбиения = Ложь; Если ДополнительныеСвойства.Свойство("РасшифровкаБезРазбиения") И ДополнительныеСвойства.РасшифровкаБезРазбиения Тогда РасшифровкаБезРазбиения = Истина; КонецЕсли; Документы.ОперацияПоПлатежнойКарте.ЗаполнитьИменаРеквизитовПоХозяйственнойОперации( ХозяйственнаяОперация, МассивВсехРеквизитов, МассивРеквизитовОперации); МассивНепроверяемыхРеквизитов = Новый Массив; ОбщегоНазначенияУТКлиентСервер.ЗаполнитьМассивНепроверяемыхРеквизитов( МассивВсехРеквизитов, МассивРеквизитовОперации, МассивНепроверяемыхРеквизитов); Если ДенежныеСредстваСервер.РазрешеныПлатежиБезУказанияЗаявок(ЭтотОбъект) Тогда МассивНепроверяемыхРеквизитов.Добавить("ЗаявкаНаРасходованиеДенежныхСредств"); КонецЕсли; Если Не ЗначениеЗаполнено(ДоговорЭквайринга) Или Не ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДоговорЭквайринга, "ИспользуютсяЭквайринговыеТерминалы") Тогда МассивНепроверяемыхРеквизитов.Добавить("ЭквайринговыйТерминал"); КонецЕсли; Если РасшифровкаБезРазбиения Тогда МассивНепроверяемыхРеквизитов.Добавить("РасшифровкаПлатежа.Сумма"); КонецЕсли; ДенежныеСредстваСервер.ПроверитьЗаявкуНаРасходованиеДенежныхСредств(ЭтотОбъект, Отказ); ДенежныеСредстваСервер.ПроверитьЗаполнениеРасшифровкиПлатежа(ЭтотОбъект, СуммаДокумента, ХозяйственнаяОперация, Отказ); ИсправлениеДокументов.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты); Если РасшифровкаБезРазбиения Тогда ДенежныеСредстваСервер.ПроверитьЗаполнениеРасшифровкиБезРазбиения( ЭтотОбъект, ПроверяемыеРеквизиты, "РасшифровкаПлатежа", "РасшифровкаБезРазбиения", Отказ); КонецЕсли; ВыполнятьПроверкуЗаполненияСтатьиКомисии = (ОтражатьКомиссию И СуммаКомиссии <> 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) + "].ДатаПогашения"; КонецЕсли; ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , ПутьКДаннымОшибки, , Отказ); КонецЕсли; КонецЦикла; КонецПроцедуры #КонецОбласти #КонецЕсли