#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Функция УстановитьСтатус(НовыйСтатус, ДополнительныеПараметры) Экспорт
Если ДополнительныеПараметры <> Неопределено Тогда
Если ДополнительныеПараметры.Свойство("ДатаПроведенияБанком", ДатаПроведенияБанком) Тогда
ПроведеноБанком = Истина;
КонецЕсли;
КонецЕсли;
Возврат ПроверитьЗаполнение();
КонецФункции
#КонецОбласти
#Область ОбработчикиСобытий
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Автор = Пользователи.ТекущийПользователь();
ДокОснование = Неопределено;
СуммаКОплате = 0;
Если Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(ДанныеЗаполнения))
Или Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(ДанныеЗаполнения)) Тогда
ДокОснование = ДанныеЗаполнения;
ДанныеЗаполнения = Новый Структура;
КонецЕсли;
Если ЗначениеЗаполнено(ДокОснование) Тогда
ТипОснования = ТипЗнч(ДокОснование);
Если ТипОснования = Тип("ДокументСсылка.ЗаказКлиента") Тогда
ЗаполнитьПоЗаказуКлиента(ДокОснование, ДанныеЗаполнения, СуммаКОплате);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.СчетНаОплатуКлиенту") Тогда
ЗаполнитьПоСчетуНаОплатуКлиенту(ДокОснование, ДанныеЗаполнения);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.СписаниеБезналичныхДенежныхСредств") Тогда
ЗаполнитьПоСписаниюБезналичныхДенежныхСредств(ДокОснование, ДанныеЗаполнения);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.РасходныйКассовыйОрдер") Тогда
ЗаполнитьПоРасходномуКассовомуОрдеру(ДокОснование, ДанныеЗаполнения);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ЗаявкаНаВозвратТоваровОтКлиента") Тогда
ЗаполнитьПоЗаявкеНаВозвратТоваров(ДокОснование, ДанныеЗаполнения, СуммаКОплате);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
ЗаполнитьПоРеализацииТоваровУслуг(ДокОснование, ДанныеЗаполнения, СуммаКОплате);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ВыкупВозвратнойТарыКлиентом") Тогда
ЗаполнитьПоВыкупуВозвратнойТарыКлиентом(ДокОснование, ДанныеЗаполнения, СуммаКОплате);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ВыкупТоваровХранителем") Тогда
ЗаполнитьПоВыкупуТоваровХранителем(ДокОснование, ДанныеЗаполнения, СуммаКОплате);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.АктВыполненныхРабот") Тогда
ЗаполнитьПоАктуВыполненныхРабот(ДокОснование, ДанныеЗаполнения, СуммаКОплате);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ОжидаемоеПоступлениеДенежныхСредств") Тогда
ЗаполнитьПоПланируемомуПоступлениюДенежныхСредств(ДокОснование, ДанныеЗаполнения);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.РеализацияУслугПрочихАктивов") Тогда
ЗаполнитьПоРеализацииУслугПрочихАктивов(ДокОснование, ДанныеЗаполнения, СуммаКОплате);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ВозвратТоваровПоставщику") Тогда
ЗаполнитьПоВозвратуТоваровПоставщику(ДокОснование, ДанныеЗаполнения);
ИначеЕсли ТипОснования = Тип("СправочникСсылка.ДоговорыКонтрагентов") Тогда
ЗаполнитьПоДоговоруКонтрагента(ДокОснование, ДанныеЗаполнения, СуммаКОплате);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ОтчетКомиссионера") Тогда
ЗаполнитьПоОтчетуКомиссионера(ДокОснование, ДанныеЗаполнения, СуммаКОплате);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ОтчетКомитенту") Тогда
ЗаполнитьПоОтчетуКомитенту(ДокОснование, ДанныеЗаполнения, СуммаКОплате);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ПередачаТоваровМеждуОрганизациями") Тогда
ЗаполнитьПоПередачеТоваров(ДокОснование, ДанныеЗаполнения, СуммаКОплате);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ОтчетПоКомиссииМеждуОрганизациями") Тогда
ЗаполнитьПоОтчетуПоКомиссии(ДокОснование, ДанныеЗаполнения, СуммаКОплате);
ИначеЕсли ТипОснования = Тип("СправочникСсылка.ДоговорыКредитовИДепозитов") Тогда
ДенежныеСредстваСервер.ЗаполнитьПоДоговоруКредитаДепозита(ДокОснование, ДанныеЗаполнения, РасшифровкаПлатежа, Истина);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ОтчетКомитентуОЗакупках") Тогда
ЗаполнитьПоОтчетуКомитентуОЗакупках(ДокОснование, ДанныеЗаполнения, СуммаКОплате);
ИначеЕсли ТипОснования = Тип("СправочникСсылка.ПодарочныеСертификаты") Тогда
ЗаполнитьПоПодарочномуСертификату(ДокОснование, ДанныеЗаполнения, СуммаКОплате);
ИначеЕсли ТипОснования = Тип("ДокументСсылка." + Метаданные().Имя) Тогда
ИсправлениеДокументов.ЗаполнитьИсправление(ЭтотОбъект, ДокОснование);
КонецЕсли;
ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
И ДанныеЗаполнения.Свойство("ХозяйственнаяОперация")
И ДанныеЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратДенежныхСредствОтПодотчетника
И ДанныеЗаполнения.Свойство("ПодотчетноеЛицо") Тогда
Если Не ДанныеЗаполнения.Свойство("Подразделение") Тогда
ДанныеЗаполнения.Вставить("Подразделение", ФизическиеЛицаУТ.ПодразделениеФизическогоЛица(ДанныеЗаполнения.ПодотчетноеЛицо));
КонецЕсли;
НоваяСтрока = РасшифровкаПлатежа.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ДанныеЗаполнения);
ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
И ДанныеЗаполнения.Свойство("ОтчетПоКомиссииМеждуОрганизациями")
И ТипЗнч(ДанныеЗаполнения.ОтчетПоКомиссииМеждуОрганизациями) = Тип("ДокументСсылка.ОтчетПоКомиссииМеждуОрганизациями") Тогда
ЗаполнитьПоОтчетуПоКомиссии(ДанныеЗаполнения.ОтчетПоКомиссииМеждуОрганизациями, ДанныеЗаполнения,, Истина);
ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
И ДанныеЗаполнения.Свойство("ПодарочныйСертификат")
И ДанныеЗаполнения.Свойство("Контрагент") Тогда
ЗаполнитьПоПодарочномуСертификату(ДанныеЗаполнения, ДанныеЗаполнения, СуммаКОплате);
ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
И ДанныеЗаполнения.Свойство("Основание")
И ТипЗнч(ДанныеЗаполнения.Основание) = Тип("Массив") Тогда
ЗаполнитьПоМассивуОснований(ДанныеЗаполнения, ДанныеЗаполнения.Основание);
КонецЕсли;
ПоступлениеБезналичныхДенежныхСредствЛокализация.ОбработкаЗаполнения(ЭтотОбъект, ДокОснование, ДанныеЗаполнения, СтандартнаяОбработка);
ЗаполнениеОбъектовПоСтатистике.ЗаполнитьРеквизитыОбъекта(ЭтотОбъект, ДанныеЗаполнения);
Если Не ТипОснования = Тип("ДокументСсылка." + Метаданные().Имя) Тогда
ИнициализироватьДокумент(ДанныеЗаполнения);
КонецЕсли;
ПараметрыВыбораСтатейИАналитик = Документы.ПоступлениеБезналичныхДенежныхСредств.ПараметрыВыбораСтатейИАналитик(ХозяйственнаяОперация);
ДоходыИРасходыСервер.ОбработкаЗаполнения(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
ВзаиморасчетыСервер.ОбработкаЗаполнения(ЭтотОбъект, ДанныеЗаполнения);
Если Не ЗначениеЗаполнено(Ответственный) Тогда
Ответственный = Пользователи.ТекущийПользователь();
КонецЕсли;
КонецПроцедуры
Процедура ПриКопировании(ОбъектКопирования)
ИсправлениеДокументов.ПриКопировании(ЭтотОбъект, ОбъектКопирования);
ДатаВходящегоДокумента = "";
НомерВходящегоДокумента = "";
ДатаПроведенияБанком = "";
ДатаВыгрузки = "";
ДатаЗагрузки = "";
ОшибкиЗагрузки = "";
ФорматированноеНазначениеПлатежа = "";
ДанныеВыписки = "";
ИмяКонтрагента = "";
ПроведеноБанком = Ложь;
Если ТипПлатежногоДокумента = Перечисления.ТипыПлатежныхДокументов.ИнкассовоеПоручение
Или ТипПлатежногоДокумента = Перечисления.ТипыПлатежныхДокументов.ПлатежныйОрдер Тогда
ПроведеноБанком = Истина;
ДатаПроведенияБанком = ТекущаяДатаСеанса();
КонецЕсли;
ВзаиморасчетыСервер.ПриКопировании(ЭтотОбъект);
Ответственный = Пользователи.ТекущийПользователь();
ОбщегоНазначенияУТ.ОчиститьИдентификаторыДокумента(ЭтотОбъект, "РасшифровкаПлатежа");
ПоступлениеБезналичныхДенежныхСредствЛокализация.ПриКопировании(ЭтотОбъект, ОбъектКопирования);
Автор = Пользователи.ТекущийПользователь();
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Перем МассивВсехРеквизитов;
Перем МассивРеквизитовОперации;
ФлагОбменСБанками = Ложь;
ОшибкиЗаполнения = "";
РасшифровкаБезРазбиения = Ложь;
Если ДополнительныеСвойства.Свойство("ОбменСБанками")
И ДополнительныеСвойства.ОбменСБанками Тогда
ФлагОбменСБанками = Истина;
КонецЕсли;
Если ДополнительныеСвойства.Свойство("РасшифровкаБезРазбиения")
И ДополнительныеСвойства.РасшифровкаБезРазбиения Тогда
РасшифровкаБезРазбиения = Истина;
КонецЕсли;
МассивНепроверяемыхРеквизитов = Новый Массив;
Документы.ПоступлениеБезналичныхДенежныхСредств.ЗаполнитьИменаРеквизитовПоХозяйственнойОперации(
ЭтотОбъект, МассивВсехРеквизитов, МассивРеквизитовОперации);
ОбщегоНазначенияУТКлиентСервер.ЗаполнитьМассивНепроверяемыхРеквизитов(
МассивВсехРеквизитов, МассивРеквизитовОперации, МассивНепроверяемыхРеквизитов);
Если ТипПлатежногоДокумента = Перечисления.ТипыПлатежныхДокументов.ПлатежноеТребование Тогда
МассивНепроверяемыхРеквизитов.Добавить("ДатаВходящегоДокумента");
МассивНепроверяемыхРеквизитов.Добавить("НомерВходящегоДокумента");
КонецЕсли;
Если Не ПроведеноБанком Тогда
МассивНепроверяемыхРеквизитов.Добавить("ДатаПроведенияБанком");
КонецЕсли;
Если ФлагОбменСБанками Тогда
РеквизитыПроверки = Новый Структура("РасшифровкаПлатежа", "СтатьяДоходов, АналитикаДоходов");
ДополнительныеПараметры = Новый Структура("ПрограммнаяПроверка", Истина);
ПланыВидовХарактеристик.СтатьиДоходов.ПроверитьЗаполнениеАналитик(
ЭтотОбъект, РеквизитыПроверки, МассивНепроверяемыхРеквизитов, Отказ, ДополнительныеПараметры);
Для каждого Ошибка Из ДополнительныеПараметры.Ошибки.СписокОшибок Цикл
ДенежныеСредстваСервер.ДобавитьОшибкуЗаполнения(
ОшибкиЗаполнения, Ошибка.ТекстДляНесколькихОшибок);
КонецЦикла;
КонецЕсли;
Если РасшифровкаБезРазбиения Тогда
МассивНепроверяемыхРеквизитов.Добавить("РасшифровкаПлатежа.Сумма");
КонецЕсли;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоступлениеОплатыПоПлатежнойКарте Тогда
МассивНепроверяемыхРеквизитов.Добавить("Контрагент");
Если Не ЗначениеЗаполнено(Контрагент) Тогда
ТекстОшибки = НСтр("ru = 'Поле ""Эквайер"" не заполнено.'");
Если ФлагОбменСБанками Тогда
ДенежныеСредстваСервер.ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
Иначе
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки,, "Контрагент", "Объект", Отказ);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПогашениеЗаймаСотрудником Тогда
МассивНепроверяемыхРеквизитов.Добавить("ПодотчетноеЛицо");
Если Не ЗначениеЗаполнено(ПодотчетноеЛицо) Тогда
ТекстОшибки = НСтр("ru = 'Поле ""Сотрудник"" не заполнено.'");
Если ФлагОбменСБанками Тогда
ДенежныеСредстваСервер.ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
Иначе
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки,, "ПодотчетноеЛицо", "Объект", Отказ);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратДенежныхСредствОтАрендодателя Тогда
МассивНепроверяемыхРеквизитов.Добавить("РасшифровкаПлатежа.РасчетныйДокументПоАренде");
Для каждого СтрокаРасшифровки Из РасшифровкаПлатежа Цикл
Если (СтрокаРасшифровки.ТипПлатежаПоАренде = Перечисления.ТипыПлатежейПоАренде.ОбеспечительныйПлатеж
Или СтрокаРасшифровки.ТипПлатежаПоАренде = Перечисления.ТипыПлатежейПоАренде.ВыкупнаяСтоимостьАванс)
И Не ЗначениеЗаполнено(СтрокаРасшифровки.РасчетныйДокументПоАренде) Тогда
ТекстОшибки = НСтр("ru = 'Поле ""Расчетный документ"" не заполнено.'");
Если Не ФлагОбменСБанками Тогда
Если РасшифровкаБезРазбиения Тогда
ИмяПоля = "Элементы.РасшифровкаПлатежа.ТекущиеДанные.РасчетныйДокументПоАренде";
КлючДанных = Неопределено;
Иначе
ИмяПоля = ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти(
"РасшифровкаПлатежа", СтрокаРасшифровки.НомерСтроки, "РасчетныйДокументПоАренде");
КлючДанных = ЭтотОбъект;
КонецЕсли;
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, КлючДанных, ИмяПоля,, Отказ);
Иначе
ДенежныеСредстваСервер.ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если Не ФлагОбменСБанками Тогда
ДенежныеСредстваСервер.ПроверитьЗаполнениеПартнера(
ЭтотОбъект, ХозяйственнаяОперация, МассивНепроверяемыхРеквизитов, РасшифровкаБезРазбиения, Отказ);
ДенежныеСредстваСервер.ПроверитьЗаполнениеНеЗачисленнойСуммы(ЭтотОбъект, Отказ);
КонецЕсли;
Если СуммаКомиссии = 0 Или Не ОтражатьКомиссию Тогда
МассивНепроверяемыхРеквизитов.Добавить("СтатьяРасходов");
МассивНепроверяемыхРеквизитов.Добавить("ОбъектРасчетовКомиссии");
ИначеЕсли ВестиУчетКомиссииВоВзаиморасчетах Тогда
МассивНепроверяемыхРеквизитов.Добавить("СтатьяРасходов");
Иначе
МассивНепроверяемыхРеквизитов.Добавить("ОбъектРасчетовКомиссии");
КонецЕсли;
Если ДополнительныеСвойства.Свойство("ИсключитьПроверкуЗаполненияОбъектРасчетовКомиссии")
И ДополнительныеСвойства.ИсключитьПроверкуЗаполненияОбъектРасчетовКомиссии Тогда
МассивНепроверяемыхРеквизитов.Добавить("ОбъектРасчетовКомиссии");
КонецЕсли;
Если ЗначениеЗаполнено(БанковскийСчет) Тогда
ДенежныеСредстваСервер.ПроверитьДоступностьБанковскогоСчета(
ЭтотОбъект, БанковскийСчет, "БанковскийСчет", ФлагОбменСБанками, ОшибкиЗаполнения);
КонецЕсли;
Если ЗначениеЗаполнено(БанковскийСчетКонтрагента)
И МассивРеквизитовОперации.Найти("БанковскийСчетКонтрагента") <> Неопределено Тогда
ДенежныеСредстваСервер.ПроверитьДоступностьБанковскогоСчета(
ЭтотОбъект, БанковскийСчетКонтрагента, "БанковскийСчетКонтрагента", ФлагОбменСБанками, ОшибкиЗаполнения);
КонецЕсли;
Если ЗначениеЗаполнено(БанковскийСчетОтправитель)
И МассивРеквизитовОперации.Найти("БанковскийСчетОтправитель") <> Неопределено Тогда
ДенежныеСредстваСервер.ПроверитьДоступностьБанковскогоСчета(
ЭтотОбъект, БанковскийСчетОтправитель, "БанковскийСчетОтправитель", ФлагОбменСБанками, ОшибкиЗаполнения);
КонецЕсли;
ПараметрыВыбораСтатейИАналитик = Документы.ПоступлениеБезналичныхДенежныхСредств.ПараметрыВыбораСтатейИАналитик(ХозяйственнаяОперация);
ДоходыИРасходыСервер.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты, ПараметрыВыбораСтатейИАналитик);
ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, МассивНепроверяемыхРеквизитов);
ИсправлениеДокументов.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
ДенежныеСредстваСервер.ПроверитьЗаполнениеРасшифровкиПлатежа(
ЭтотОбъект, СуммаДокумента, ХозяйственнаяОперация, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения);
ДенежныеСредстваСервер.ПроверитьВалютуКонвертации(ЭтотОбъект, Отказ, ФлагОбменСБанками, ОшибкиЗаполнения);
ПоступлениеБезналичныхДенежныхСредствЛокализация.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
ПроверитьДатыПогашения(Отказ, ФлагОбменСБанками, ОшибкиЗаполнения);
Если РасшифровкаБезРазбиения И Не ФлагОбменСБанками Тогда
ДенежныеСредстваСервер.ПроверитьЗаполнениеРасшифровкиБезРазбиения(
ЭтотОбъект, ПроверяемыеРеквизиты, "РасшифровкаПлатежа", "РасшифровкаБезРазбиения", Отказ);
КонецЕсли;
Если ФлагОбменСБанками Тогда
ДенежныеСредстваСервер.ПроверитьЗаполнениеОбязательныхРеквизитов(ЭтотОбъект, ПроверяемыеРеквизиты, ОшибкиЗаполнения);
ДополнительныеСвойства.Вставить("ОшибкиЗаполнения", СокрЛП(ОшибкиЗаполнения));
ПроверяемыеРеквизиты.Очистить();
КонецЕсли;
КонецПроцедуры
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);
ИсправлениеДокументов.ПередЗаписью(ЭтотОбъект, Отказ, РежимЗаписи, РежимПроведения);
ПроведениеДокументов.ПередЗаписьюДокумента(ЭтотОбъект, РежимЗаписи, РежимПроведения);
МассивРеквизитовОперации = Новый Массив;
Документы.ПоступлениеБезналичныхДенежныхСредств.ЗаполнитьИменаРеквизитовПоХозяйственнойОперации(
ЭтотОбъект, Неопределено, МассивРеквизитовОперации);
Если РасшифровкаПлатежа.Количество() > 0
И (МассивРеквизитовОперации.Найти("РасшифровкаПлатежа") = Неопределено
Или Документы.ПоступлениеБезналичныхДенежныхСредств.МассивОперацийБезРасшифровкиПлатежа().Найти(ХозяйственнаяОперация) <> Неопределено
) Тогда
РасшифровкаПлатежа.Очистить();
КонецЕсли;
Если Не ЗначениеЗаполнено(Номер) Тогда
УстановитьНовыйНомер();
ДенежныеСредстваСерверЛокализация.ИзменитьНомерПлатежногоПоручения(ЭтотОбъект);
КонецЕсли;
ДенежныеСредстваСервер.ПередЗаписью(ЭтотОбъект, Отказ);
ВзаиморасчетыСервер.ПередЗаписью(ЭтотОбъект, Отказ, РежимЗаписи);
Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
Если (ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента
ИЛИ ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратДенежныхСредствОтПоставщика
ИЛИ ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоступлениеДенежныхСредствИзДругойОрганизации
ИЛИ ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратДенежныхСредствОтДругойОрганизации
ИЛИ ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоступлениеДенежныхСредствПоКредитам
ИЛИ ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоступлениеДенежныхСредствПоДепозитам
ИЛИ ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоступлениеДенежныхСредствПоЗаймамВыданным
ИЛИ ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратДенежныхСредствОтАрендодателя
) Тогда
ВзаиморасчетыСервер.ЗаполнитьСуммуВзаиморасчетовВТабличнойЧасти(
Валюта, ?(ПроведеноБанком, ДатаПроведенияБанком, Дата), РасшифровкаПлатежа, Организация);
КонецЕсли;
ДенежныеСредстваСервер.ЗаполнитьОрганизациюВТабличнойЧасти(РасшифровкаПлатежа, Организация, ХозяйственнаяОперация);
КонецЕсли;
ОбщегоНазначенияУТ.ЗаполнитьИдентификаторыДокумента(ЭтотОбъект, "РасшифровкаПлатежа");
МассивВсехРеквизитов = Новый Массив;
МассивРеквизитовОперации = Новый Массив;
НеиспользуемыеРеквизиты = Новый Массив;
Документы.ПоступлениеБезналичныхДенежныхСредств.ЗаполнитьИменаРеквизитовПоХозяйственнойОперации(
ЭтотОбъект, МассивВсехРеквизитов, МассивРеквизитовОперации);
Если ВестиУчетКомиссииВоВзаиморасчетах Тогда
НеиспользуемыеРеквизиты.Добавить("СтатьяРасходов");
НеиспользуемыеРеквизиты.Добавить("АналитикаРасходов");
НеиспользуемыеРеквизиты.Добавить("Подразделение");
Иначе
НеиспользуемыеРеквизиты.Добавить("ОбъектРасчетовКомиссии");
КонецЕсли;
Для Каждого НеиспользуемыйРеквизит Из НеиспользуемыеРеквизиты Цикл
УдаляемыйРеквизит = МассивРеквизитовОперации.Найти(НеиспользуемыйРеквизит);
Если УдаляемыйРеквизит <> Неопределено Тогда
МассивРеквизитовОперации.Удалить(УдаляемыйРеквизит);
КонецЕсли;
КонецЦикла;
ДенежныеСредстваСервер.ОчиститьНеиспользуемыеРеквизиты(ЭтотОбъект, МассивВсехРеквизитов, МассивРеквизитовОперации);
Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьУчетПрочихАктивовПассивов") И НЕ ЗначениеЗаполнено(СтатьяАктивовПассивов) Тогда
СтатьяАктивовПассивов = ПланыВидовХарактеристик.СтатьиАктивовПассивов.УпрБалансПрочиеПассивы;
КонецЕсли;
Если ТипПлатежногоДокумента = Перечисления.ТипыПлатежныхДокументов.ПлатежноеТребование
И Не (ЗначениеЗаполнено(НомерВходящегодокумента) Или ЗначениеЗаполнено(ДатаВходящегоДокумента)) Тогда
НомерВходящегодокумента = СокрЛП(ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Номер, Истина, Истина));
ДатаВходящегоДокумента = Дата;
КонецЕсли;
ФорматированноеНазначениеПлатежа = ДенежныеСредстваСервер.ФорматироватьНазначениеПлатежа(НазначениеПлатежа);
Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
ОшибкиЗагрузки = "";
КонецЕсли;
НастройкаСчетовУчетаСервер.ПередЗаписью(ЭтотОбъект,
Документы.ПоступлениеБезналичныхДенежныхСредств.ПараметрыНастройкиСчетовУчета(ХозяйственнаяОперация, ТипНалога));
ПараметрыВыбораСтатейИАналитик = Документы.ПоступлениеБезналичныхДенежныхСредств.ПараметрыВыбораСтатейИАналитик(ХозяйственнаяОперация, ОтражатьКомиссию);
ДоходыИРасходыСервер.ПередЗаписью(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
ПоступлениеБезналичныхДенежныхСредствЛокализация.ПередЗаписью(ЭтотОбъект, Отказ, РежимЗаписи, РежимПроведения);
Если Не ЗначениеЗаполнено(Автор) И ЭтоНовый() Тогда
Автор = Пользователи.ТекущийПользователь();
КонецЕсли;
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
ПроведениеДокументов.ПриЗаписиДокумента(ЭтотОбъект, Отказ);
ПоступлениеБезналичныхДенежныхСредствЛокализация.ПриЗаписи(ЭтотОбъект, Отказ);
КонецПроцедуры
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
ПроведениеДокументов.ОбработкаПроведенияДокумента(ЭтотОбъект, Отказ);
ПоступлениеБезналичныхДенежныхСредствЛокализация.ОбработкаПроведения(ЭтотОбъект, Отказ, РежимПроведения);
КонецПроцедуры
Процедура ОбработкаУдаленияПроведения(Отказ)
ПроведениеДокументов.ОбработкаУдаленияПроведенияДокумента(ЭтотОбъект, Отказ);
ПоступлениеБезналичныхДенежныхСредствЛокализация.ОбработкаУдаленияПроведения(ЭтотОбъект, Отказ);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область Заполнение
Процедура ЗаполнитьПоЗаказуКлиента(Знач ДокументОснование, ДанныеЗаполнения, СуммаКОплате = 0)
ТекстЗапроса = "
|ВЫБРАТЬ
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчет <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчет.Владелец
| ИНАЧЕ
| ДанныеДокумента.Организация
| КОНЕЦ КАК Организация,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Договор КАК Договор,
| ВЫБОР КОГДА ДанныеДокумента.Договор.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов) ТОГДА
| ДанныеДокумента.Договор.СтатьяДвиженияДенежныхСредств
| ИНАЧЕ
| ВЫБОР КОГДА ЕСТЬNULL(ДанныеДокумента.Договор.СтатьяДвиженияДенежныхСредств, ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ПустаяСсылка)) = ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ПустаяСсылка) ТОГДА
| ДанныеДокумента.Соглашение.СтатьяДвиженияДенежныхСредств
| ИНАЧЕ
| ДанныеДокумента.Договор.СтатьяДвиженияДенежныхСредств
| КОНЕЦ
| КОНЕЦ КАК СтатьяДвиженияДенежныхСредств,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента) КАК ХозяйственнаяОперация,
| ДанныеДокумента.БанковскийСчет КАК БанковскийСчет,
|
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчет <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчет.ВалютаДенежныхСредств
| ИНАЧЕ
| ДанныеДокумента.Валюта
| КОНЕЦ КАК Валюта
|ИЗ
| Документ.ЗаказКлиента КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию)
| И ДанныеДокумента.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоНакладным)
|";
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не требуется вводить поступление безналичных денежных средств на основании документа %1'"),
ДокументОснование);
ВызватьИсключение Текст;
Иначе
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
ДенежныеСредстваСервер.ЗаполнитьРеквизитыДокументаПоФормеОплаты(Перечисления.ФормыОплаты.Безналичная, ДанныеЗаполнения);
БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьБанковскийСчетПоУмолчанию(
ДанныеЗаполнения.Контрагент,
ДанныеЗаполнения.Валюта,
ДанныеЗаполнения.БанковскийСчет);
ПараметрыЗаполненияРасшифровки = ВзаиморасчетыСервер.ПараметрыЗаполненияРасшифровкиПлатежаПоЗаказу();
ПараметрыЗаполненияРасшифровки.ЗаказКлиента = ДокументОснование;
ПараметрыЗаполненияРасшифровки.Договор = Выборка.Договор;
ПараметрыЗаполненияРасшифровки.ВалютаДокумента = ДанныеЗаполнения.Валюта;
ПараметрыЗаполненияРасшифровки.Партнер = Выборка.Партнер;
ПараметрыЗаполненияРасшифровки.ОснованиеПлатежа = ДокументОснование;
ПараметрыЗаполненияРасшифровки.СтатьяДвиженияДенежныхСредств = Выборка.СтатьяДвиженияДенежныхСредств;
ВзаиморасчетыСервер.ЗаполнитьРасшифровкуПлатежаПоЗаказуКлиента(
ПараметрыЗаполненияРасшифровки,
РасшифровкаПлатежа,
СуммаКОплате);
КонецЕсли;
СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма");
КонецПроцедуры
Процедура ЗаполнитьПоСчетуНаОплатуКлиенту(Знач ДокументОснование, ДанныеЗаполнения)
ТекстЗапроса = "
|ВЫБРАТЬ
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчет <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчет.Владелец
| ИНАЧЕ
| ДанныеДокумента.Организация
| КОНЕЦ КАК Организация,
| ДанныеДокумента.ДокументОснование.Контрагент КАК Контрагент,
| ДанныеДокумента.ДокументОснование КАК ЗаказКлиента,
| ДанныеДокумента.БанковскийСчет КАК БанковскийСчет,
| ДанныеДокумента.Договор КАК Договор,
|
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчет <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчет.ВалютаДенежныхСредств
| ИНАЧЕ
| ДанныеДокумента.Валюта
| КОНЕЦ КАК Валюта,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента) КАК ХозяйственнаяОперация
|ИЗ
| Документ.СчетНаОплатуКлиенту КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|";
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
ДанныеЗаполнения = Новый Структура;
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
ДенежныеСредстваСервер.ЗаполнитьРеквизитыДокументаПоФормеОплаты(Перечисления.ФормыОплаты.Безналичная, ДанныеЗаполнения);
БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьБанковскийСчетПоУмолчанию(
ДанныеЗаполнения.Контрагент,
ДанныеЗаполнения.Валюта);
ВзаиморасчетыСервер.ЗаполнитьРасшифровкуПлатежаПоСчетуНаОплату(
ДокументОснование,
Выборка.Организация,
Выборка.ЗаказКлиента,
ДанныеЗаполнения.Валюта,
РасшифровкаПлатежа);
КонецЕсли;
СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма");
КонецПроцедуры
Процедура ЗаполнитьПоПланируемомуПоступлениюДенежныхСредств(Знач ДокументОснование, ДанныеЗаполнения)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.БанковскийСчет КАК БанковскийСчет,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств,
| ДанныеДокумента.НазначениеПлатежа КАК НазначениеПлатежа,
| ДанныеДокумента.Ссылка КАК ДокументОснование,
| ДанныеДокумента.СуммаДокумента КАК СуммаДокумента,
| ДанныеДокумента.СуммаДокумента КАК Сумма,
| ВЫБОР КОГДА КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ХозяйственныеОперации.ХозяйственнаяОперация) = 1 ТОГДА
| МАКСИМУМ(ХозяйственныеОперации.ХозяйственнаяОперация)
| КОНЕЦ КАК ХозяйственнаяОперация
|ИЗ
| Документ.ОжидаемоеПоступлениеДенежныхСредств КАК ДанныеДокумента
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| Справочник.СтатьиДвиженияДенежныхСредств.ХозяйственныеОперации КАК ХозяйственныеОперации
| ПО
| ХозяйственныеОперации.Ссылка = ДанныеДокумента.СтатьяДвиженияДенежныхСредств
|
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ДанныеДокумента.Организация,
| ДанныеДокумента.БанковскийСчет,
| ДанныеДокумента.Валюта,
| ДанныеДокумента.СтатьяДвиженияДенежныхСредств,
| ДанныеДокумента.НазначениеПлатежа,
| ДанныеДокумента.Ссылка,
| ДанныеДокумента.СуммаДокумента
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не требуется вводить поступление безналичных денежных средств на основании документа %1'"),
ДокументОснование);
ВызватьИсключение Текст;
Иначе
ДанныеЗаполнения = Новый Структура;
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
ДенежныеСредстваСервер.ЗаполнитьРеквизитыДокументаПоФормеОплаты(
Перечисления.ФормыОплаты.Безналичная,
ДанныеЗаполнения);
НоваяСтрока = РасшифровкаПлатежа.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьПоСписаниюБезналичныхДенежныхСредств(Знач ДокументОснование, ДанныеЗаполнения)
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Документ,
| ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.ПодотчетноеЛицо КАК ПодотчетноеЛицо,
| ДанныеДокумента.БанковскийСчет КАК БанковскийСчет,
| ДанныеДокумента.БанковскийСчетПолучатель КАК БанковскийСчетПолучатель,
| ДанныеДокумента.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента,
| ДанныеДокумента.СуммаДокумента КАК СуммаДокумента,
| ДанныеДокумента.СуммаКонвертации КАК СуммаКонвертации,
| ДанныеДокумента.СуммаВВалютеОтправителя КАК СуммаВВалютеОтправителя,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.ВалютаКонвертации КАК ВалютаКонвертации,
| ДанныеДокумента.КурсКонвертации КАК КурсКонвертации,
| ДанныеДокумента.КратностьКурсаКонвертации КАК КратностьКурсаКонвертации,
| ДанныеДокумента.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств,
| ДанныеДокумента.СписокФизЛиц КАК СписокФизЛиц,
| ДанныеДокумента.ПлатежСКонвертацией КАК ПлатежСКонвертацией,
| ДанныеДокумента.НазначениеПлатежа КАК НазначениеПлатежа,
| ВЫБОР
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КонвертацияВалюты)
| ТОГДА ДанныеДокумента.ИдентификаторПлатежа
| ИНАЧЕ """"
| КОНЕЦ КАК ИдентификаторПлатежа
|ПОМЕСТИТЬ ДанныеДокумента
|ИЗ
| Документ.СписаниеБезналичныхДенежныхСредств КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.ХозяйственнаяОперация В (
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КонвертацияВалюты),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыдачаДенежныхСредствПодотчетнику),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыплатаЗарплатыНаЛицевыеСчета),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыплатаЗарплатыПоЗарплатномуПроекту),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеречислениеДенежныхСредствНаДругойСчет),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаДенежныхСредствВДругуюОрганизацию),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратДенежныхСредствВДругуюОрганизацию),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВнутренняяПередачаДенежныхСредств),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику))
|
|ИНДЕКСИРОВАТЬ ПО
| ПодотчетноеЛицо,
| Организация,
| Валюта
|;
|
|
|ВЫБРАТЬ
| ДенежныеСредстваУПодотчетныхЛицОстатки.ПодотчетноеЛицо КАК ПодотчетноеЛицо,
| ДенежныеСредстваУПодотчетныхЛицОстатки.Организация КАК Организация,
| ДенежныеСредстваУПодотчетныхЛицОстатки.Валюта КАК Валюта,
| ДенежныеСредстваУПодотчетныхЛицОстатки.СуммаОстаток КАК СуммаОстаток
|ПОМЕСТИТЬ ОстаткиДенежныеСредстваУПодотчетныхЛиц
|ИЗ
| РегистрНакопления.ДенежныеСредстваУПодотчетныхЛиц.Остатки(
| ,
| (ПодотчетноеЛицо, Организация, Валюта) В
| (ВЫБРАТЬ
| ДанныеДокумента.ПодотчетноеЛицо,
| ДанныеДокумента.Организация,
| ДанныеДокумента.Валюта
| ИЗ
| ДанныеДокумента
| ГДЕ
| ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыдачаДенежныхСредствПодотчетнику))) КАК ДенежныеСредстваУПодотчетныхЛицОстатки
|;
|
|
|ВЫБРАТЬ
| ДанныеДокумента.Контрагент КАК Контрагент,
| ВЫБОР
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыдачаДенежныхСредствПодотчетнику)
| И НЕ ДанныеДокумента.СписокФизЛиц
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратДенежныхСредствОтПодотчетника)
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыплатаЗарплатыНаЛицевыеСчета)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратНеперечисленныхДС)
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыплатаЗарплатыПоЗарплатномуПроекту)
| ИЛИ ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыдачаДенежныхСредствПодотчетнику)
| И ДанныеДокумента.СписокФизЛиц
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратНеперечисленнойЗарплатыПоЗарплатномуПроекту)
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеречислениеДенежныхСредствНаДругойСчет)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеДенежныхСредствСДругогоСчета)
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаДенежныхСредствВДругуюОрганизацию)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеДенежныхСредствИзДругойОрганизации)
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратДенежныхСредствВДругуюОрганизацию)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратДенежныхСредствОтДругойОрганизации)
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВнутренняяПередачаДенежныхСредств)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВнутренняяПередачаДенежныхСредств)
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КонвертацияВалюты)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КонвертацияВалюты)
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратДенежныхСредствОтПоставщика)
| КОНЕЦ КАК ХозяйственнаяОперация,
| ВЫБОР
| КОГДА ДанныеДокумента.ХозяйственнаяОперация В (
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыдачаДенежныхСредствПодотчетнику),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыплатаЗарплатыНаЛицевыеСчета),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыплатаЗарплатыПоЗарплатномуПроекту),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику))
| ТОГДА ДанныеДокумента.БанковскийСчет
| ИНАЧЕ ДанныеДокумента.БанковскийСчетПолучатель
| КОНЕЦ КАК БанковскийСчет,
| ВЫБОР
| КОГДА ДанныеДокумента.ХозяйственнаяОперация В (
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаДенежныхСредствВДругуюОрганизацию),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратДенежныхСредствВДругуюОрганизацию),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВнутренняяПередачаДенежныхСредств),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеречислениеДенежныхСредствНаДругойСчет))
| ТОГДА ДанныеДокумента.БанковскийСчет
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК БанковскийСчетОтправитель,
| ВЫБОР
| КОГДА ДанныеДокумента.ХозяйственнаяОперация В (
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаДенежныхСредствВДругуюОрганизацию),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратДенежныхСредствВДругуюОрганизацию),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВнутренняяПередачаДенежныхСредств))
| ТОГДА ДанныеДокумента.БанковскийСчетПолучатель.Владелец
| ИНАЧЕ ДанныеДокумента.Организация
| КОНЕЦ КАК Организация,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ВЫБОР
| КОГДА ДанныеДокумента.ХозяйственнаяОперация В (
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыдачаДенежныхСредствПодотчетнику),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыплатаЗарплатыНаЛицевыеСчета),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыплатаЗарплатыПоЗарплатномуПроекту))
| ТОГДА ДанныеДокумента.БанковскийСчет.ВалютаДенежныхСредств
| ИНАЧЕ ДанныеДокумента.БанковскийСчетПолучатель.ВалютаДенежныхСредств
| КОНЕЦ КАК Валюта,
| ДанныеДокумента.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств,
| ДанныеДокумента.НазначениеПлатежа КАК НазначениеПлатежа,
| ВЫБОР
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику)
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ ДанныеДокумента.Документ
| КОНЕЦ КАК ДокументВыдачи,
| ВЫБОР
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыдачаДенежныхСредствПодотчетнику)
| И НЕ ДанныеДокумента.СписокФизЛиц
| ТОГДА ЕСТЬNULL(ОстаткиДенежныеСредстваУПодотчетныхЛиц.СуммаОстаток, 0)
| КОГДА ДанныеДокумента.ХозяйственнаяОперация В (
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыплатаЗарплатыНаЛицевыеСчета),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыплатаЗарплатыПоЗарплатномуПроекту),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеречислениеДенежныхСредствНаДругойСчет),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаДенежныхСредствВДругуюОрганизацию),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратДенежныхСредствВДругуюОрганизацию),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВнутренняяПередачаДенежныхСредств))
| ТОГДА ДанныеДокумента.СуммаДокумента
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыдачаДенежныхСредствПодотчетнику)
| И ДанныеДокумента.СписокФизЛиц
| ТОГДА ДанныеДокумента.СуммаДокумента
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику)
| И НЕ ДанныеДокумента.ПлатежСКонвертацией
| ТОГДА ДанныеДокумента.СуммаДокумента
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику)
| И ДанныеДокумента.ПлатежСКонвертацией
| ТОГДА ДанныеДокумента.СуммаВВалютеОтправителя
| ИНАЧЕ ДанныеДокумента.СуммаКонвертации
| КОНЕЦ КАК СуммаДокумента,
| ВЫБОР
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КонвертацияВалюты)
| ТОГДА ДанныеДокумента.СуммаДокумента
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаКонвертации,
| ВЫБОР
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КонвертацияВалюты)
| ТОГДА ДанныеДокумента.Валюта
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)
| КОНЕЦ КАК ВалютаКонвертации,
| ВЫБОР
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КонвертацияВалюты)
| ТОГДА ВЫБОР
| КОГДА ДанныеДокумента.Валюта = ДанныеДокумента.Организация.ВалютаРегламентированногоУчета
| ИЛИ ДанныеДокумента.ВалютаКонвертации = ДанныеДокумента.Организация.ВалютаРегламентированногоУчета
| ИЛИ ДанныеДокумента.БанковскийСчетПолучатель.ВалютаДенежныхСредств = ДанныеДокумента.Организация.ВалютаРегламентированногоУчета
| ТОГДА ДанныеДокумента.КурсКонвертации
| ИНАЧЕ 1 / ДанныеДокумента.КурсКонвертации
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК КурсКонвертации,
| ВЫБОР
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КонвертацияВалюты)
| ТОГДА ВЫБОР
| КОГДА ДанныеДокумента.Валюта = ДанныеДокумента.Организация.ВалютаРегламентированногоУчета
| ИЛИ ДанныеДокумента.ВалютаКонвертации = ДанныеДокумента.Организация.ВалютаРегламентированногоУчета
| ИЛИ ДанныеДокумента.БанковскийСчетПолучатель.ВалютаДенежныхСредств = ДанныеДокумента.Организация.ВалютаРегламентированногоУчета
| ТОГДА ДанныеДокумента.КратностьКурсаКонвертации
| ИНАЧЕ 1
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК КратностьКурсаКонвертации,
| ДанныеДокумента.ПодотчетноеЛицо КАК ПодотчетноеЛицо,
| ВЫБОР
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КонвертацияВалюты)
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ ДанныеДокумента.БанковскийСчетКонтрагента
| КОНЕЦ КАК БанковскийСчетКонтрагента,
| ДанныеДокумента.Документ КАК ДокументОснование,
| ДанныеДокумента.ПлатежСКонвертацией КАК ПлатежСКонвертацией,
| ДанныеДокумента.ИдентификаторПлатежа КАК ИдентификаторПлатежа
|ИЗ
| ДанныеДокумента КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ ОстаткиДенежныеСредстваУПодотчетныхЛиц КАК ОстаткиДенежныеСредстваУПодотчетныхЛиц
| ПО ДанныеДокумента.ПодотчетноеЛицо = ОстаткиДенежныеСредстваУПодотчетныхЛиц.ПодотчетноеЛицо
| И ДанныеДокумента.Организация = ОстаткиДенежныеСредстваУПодотчетныхЛиц.Организация
| И ДанныеДокумента.Валюта = ОстаткиДенежныеСредстваУПодотчетныхЛиц.Валюта
|;
|
|
|УНИЧТОЖИТЬ ДанныеДокумента
|;
|
|
|УНИЧТОЖИТЬ ОстаткиДенежныеСредстваУПодотчетныхЛиц");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не требуется вводить поступление безналичных денежных средств на основании документа %1
|с хозяйственной операцией %2'"),
ДокументОснование,
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументОснование, "ХозяйственнаяОперация"));
ВызватьИсключение Текст;
Иначе
ДанныеЗаполнения = Новый Структура;
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
Если ДанныеЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоступлениеДенежныхСредствИзДругойОрганизации
Или ДанныеЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратДенежныхСредствОтДругойОрганизации Тогда
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ВЫБОР
| КОГДА ОбъектыРасчетовРасшифровки.Объект ССЫЛКА Документ.СписаниеБезналичныхДенежныхСредств
| ТОГДА Неопределено
| ИНАЧЕ ЕСТЬNULL(ОбъектыРасчетов.Ссылка, ЗНАЧЕНИЕ(Справочник.ОбъектыРасчетов.ПустаяСсылка))
| КОНЕЦ КАК ОбъектРасчетов,
| РасшифровкаПлатежа.Сумма КАК Сумма,
| РасшифровкаПлатежа.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| ВЫБОР КОГДА ТИПЗНАЧЕНИЯ(ОбъектыРасчетовРасшифровки.Объект) = ТИП(Справочник.ДоговорыМеждуОрганизациями)
| ТОГДА ОбъектыРасчетовРасшифровки.Объект.СтатьяДвиженияДенежныхСредств
| ИНАЧЕ РасшифровкаПлатежа.СтатьяДвиженияДенежныхСредств
| КОНЕЦ КАК СтатьяДвиженияДенежныхСредств,
| РасшифровкаПлатежа.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| РасшифровкаПлатежа.СтавкаНДС КАК СтавкаНДС,
| РасшифровкаПлатежа.СуммаНДС КАК СуммаНДС
|ИЗ
| Документ.СписаниеБезналичныхДенежныхСредств.РасшифровкаПлатежа КАК РасшифровкаПлатежа
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ОбъектыРасчетов КАК ОбъектыРасчетовРасшифровки
| ПО ОбъектыРасчетовРасшифровки.Ссылка = РасшифровкаПлатежа.ОбъектРасчетов
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ОбъектыРасчетов КАК ОбъектыРасчетов
| ПО ОбъектыРасчетов.Объект = ОбъектыРасчетовРасшифровки.Объект
| И ОбъектыРасчетов.ТипРасчетов <> ОбъектыРасчетовРасшифровки.ТипРасчетов
| И ОбъектыРасчетов.Организация = ОбъектыРасчетовРасшифровки.Контрагент
| И НЕ ОбъектыРасчетов.ПометкаУдаления
|ГДЕ
| РасшифровкаПлатежа.Ссылка = &Ссылка
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РасшифровкаПлатежа.Загрузить(Запрос.Выполнить().Выгрузить());
КонецЕсли;
Если ДанныеЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратДенежныхСредствОтПоставщика Тогда
ДенежныеСредстваСервер.ЗаполнитьРасшифровкуПлатежаПоДокументуОплаты(
ДокументОснование, ДанныеЗаполнения.ХозяйственнаяОперация, РасшифровкаПлатежа);
ВалютаРегламентированногоУчета =
ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(ДанныеЗаполнения.Организация);
ОбъектыПоОбъектамРасчетов = ОбщегоНазначения.ЗначениеРеквизитаОбъектов(
РасшифровкаПлатежа.ВыгрузитьКолонку("ОбъектРасчетов"),
"Объект");
Для Каждого СтрокаРасшифровки Из РасшифровкаПлатежа Цикл
Если ЗначениеЗаполнено(СтрокаРасшифровки.ОбъектРасчетов) Тогда
СтрокаРасшифровки.ОснованиеПлатежа =
ОбъектыПоОбъектамРасчетов[СтрокаРасшифровки.ОбъектРасчетов];
КонецЕсли;
КурсИКратность = ДенежныеСредстваСервер.КурсЧислительИКурсЗнаменательВзаиморасчетов(
ДанныеЗаполнения.Валюта,
СтрокаРасшифровки.ВалютаВзаиморасчетов,
ВалютаРегламентированногоУчета,
ТекущаяДатаСеанса(),
СтрокаРасшифровки.ОбъектРасчетов);
СтрокаРасшифровки.КурсЧислительВзаиморасчетов = КурсИКратность.КурсЧислитель;
СтрокаРасшифровки.КурсЗнаменательВзаиморасчетов = КурсИКратность.КурсЗнаменатель;
ДенежныеСредстваКлиентСервер.РассчитатьСуммуВСтрокеРасшифровки(
СтрокаРасшифровки, ДанныеЗаполнения.Валюта, ВалютаРегламентированногоУчета);
КонецЦикла;
ДанныеЗаполнения.СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма");
КонецЕсли;
Если ДанныеЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.КонвертацияВалюты Тогда
ПараметрыКонвертации = ДенежныеСредстваСервер.ИнициализироватьПараметрыКонвертации();
ЗаполнитьЗначенияСвойств(ПараметрыКонвертации, ДанныеЗаполнения);
ПараметрыКонвертации.СуммаДокумента = 0;
ПараметрыКонвертации.ВалютаРеглУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(ДанныеЗаполнения.Организация);
ДенежныеСредстваСервер.РассчитатьПараметрыКонвертации(ПараметрыКонвертации, "СуммаКонвертации");
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, ПараметрыКонвертации);
КонецЕсли;
ДенежныеСредстваСервер.ЗаполнитьРеквизитыДокументаПоФормеОплаты(
Перечисления.ФормыОплаты.Безналичная,
ДанныеЗаполнения);
Если НЕ ЗначениеЗаполнено(БанковскийСчетКонтрагента)
И НЕ ДанныеЗаполнения.Свойство("БанковскийСчетКонтрагента")
И НЕ ЗначениеЗаполнено(ДанныеЗаполнения.БанковскийСчетКонтрагента) Тогда
БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьБанковскийСчетПоУмолчанию(
ДанныеЗаполнения.Контрагент,
ДанныеЗаполнения.Валюта);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьПоРасходномуКассовомуОрдеру(Знач ДокументОснование, ДанныеЗаполнения)
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ДанныеДокумента.Организация КАК Организация,
| ЗНАЧЕНИЕ(Перечисление.ТипыПлатежныхДокументов.ПлатежныйОрдер) КАК ТипПлатежногоДокумента,
| ИСТИНА КАК ПроведеноБанком,
| &ДатаПроведенияБанком КАК ДатаПроведенияБанком,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеДенежныхСредствИзКассыНаРасчетныйСчет) КАК ХозяйственнаяОперация,
| ДанныеДокумента.БанковскийСчет КАК БанковскийСчет,
| ДанныеДокумента.Касса КАК КассаОтправитель,
| НЕОПРЕДЕЛЕНО КАК ПодотчетноеЛицо,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств,
| ДанныеДокумента.Ссылка КАК ДокументОснование,
|
| ДанныеДокумента.СуммаДокумента КАК СуммаДокумента
|
|ИЗ
| Документ.РасходныйКассовыйОрдер КАК ДанныеДокумента
|
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ИнкассацияДенежныхСредствВБанк)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
|
| ДанныеДокумента.Организация КАК Организация,
| ЗНАЧЕНИЕ(Перечисление.ТипыПлатежныхДокументов.ПлатежноеПоручение) КАК ТипПлатежногоДокумента,
| ЛОЖЬ КАК ПроведеноБанком,
| НЕОПРЕДЕЛЕНО КАК ДатаПроведенияБанком,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратДенежныхСредствОтПодотчетника) КАК ХозяйственнаяОперация,
| НЕОПРЕДЕЛЕНО КАК БанковскийСчет,
| НЕОПРЕДЕЛЕНО КАК КассаОтправитель,
| ДанныеДокумента.ПодотчетноеЛицо КАК ПодотчетноеЛицо,
| ДанныеДокумента.Валюта КАК Валюта,
| НЕОПРЕДЕЛЕНО КАК СтатьяДвиженияДенежныхСредств,
| ДанныеДокумента.Ссылка КАК ДокументОснование,
|
| ЕСТЬNULL(ДенежныеСредстваУПодотчетныхЛиц.СуммаОстаток, 0) КАК СуммаДокумента
|
|ИЗ
| Документ.РасходныйКассовыйОрдер КАК ДанныеДокумента
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрНакопления.ДенежныеСредстваУПодотчетныхЛиц.Остатки(, ) КАК ДенежныеСредстваУПодотчетныхЛиц
| ПО
| ДенежныеСредстваУПодотчетныхЛиц.Организация = ДанныеДокумента.Организация
| И ДенежныеСредстваУПодотчетныхЛиц.ПодотчетноеЛицо = ДанныеДокумента.ПодотчетноеЛицо
| И ДенежныеСредстваУПодотчетныхЛиц.Валюта = ДанныеДокумента.Валюта
|
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыдачаДенежныхСредствПодотчетнику)
|
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
Запрос.УстановитьПараметр("ДатаПроведенияБанком", ТекущаяДатаСеанса());
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не требуется вводить поступление безналичных денежных средств на основании документа %1
|с хозяйственной операцией %2'"),
ДокументОснование,
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументОснование, "ХозяйственнаяОперация"));
ВызватьИсключение Текст;
Иначе
ДанныеЗаполнения = Новый Структура;
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
Если ДанныеЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратДенежныхСредствОтПодотчетника Тогда
СтрокаРасшифровки = РасшифровкаПлатежа.Добавить();
СтрокаРасшифровки.Сумма = Выборка.СуммаДокумента;
Запрос = Новый Запрос("
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| РасшифровкаПлатежа.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств
|ИЗ
| Документ.РасходныйКассовыйОрдер.РасшифровкаПлатежа КАК РасшифровкаПлатежа
|ГДЕ
| РасшифровкаПлатежа.Ссылка = &Ссылка
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
ВыборкаСтатейДДС = Запрос.Выполнить().Выбрать();
Если ВыборкаСтатейДДС.Следующий() Тогда
СтрокаРасшифровки.СтатьяДвиженияДенежныхСредств = ВыборкаСтатейДДС.СтатьяДвиженияДенежныхСредств;
КонецЕсли;
КонецЕсли;
ДенежныеСредстваСервер.ЗаполнитьРеквизитыДокументаПоФормеОплаты(
Перечисления.ФормыОплаты.Безналичная, ДанныеЗаполнения);
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьПоВыкупуВозвратнойТарыКлиентом(Знач ДокументОснование, ДанныеЗаполнения, СуммаКОплате = 0)
Запрос = Новый Запрос("
|ВЫБРАТЬ
|
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчетОрганизации <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчетОрганизации.Владелец
| ИНАЧЕ
| ДанныеДокумента.Организация
| КОНЕЦ КАК Организация,
|
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Договор КАК Договор,
| ВЫБОР КОГДА ДанныеДокумента.Договор.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов) ТОГДА
| ДанныеДокумента.Договор.СтатьяДвиженияДенежныхСредств
| ИНАЧЕ
| ВЫБОР КОГДА ЕСТЬNULL(ДанныеДокумента.Договор.СтатьяДвиженияДенежныхСредств, ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ПустаяСсылка)) = ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ПустаяСсылка) ТОГДА
| ДанныеДокумента.Соглашение.СтатьяДвиженияДенежныхСредств
| ИНАЧЕ
| ДанныеДокумента.Договор.СтатьяДвиженияДенежныхСредств
| КОНЕЦ
| КОНЕЦ КАК СтатьяДвиженияДенежныхСредств,
| ДанныеДокумента.СуммаДокумента КАК Сумма,
| ДанныеДокумента.Ссылка КАК ДокументОснование,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента) КАК ХозяйственнаяОперация,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.БанковскийСчетОрганизации КАК БанковскийСчет
|ИЗ
| Документ.ВыкупВозвратнойТарыКлиентом КАК ДанныеДокумента
|
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
ДенежныеСредстваСервер.ЗаполнитьРеквизитыДокументаПоФормеОплаты(
Перечисления.ФормыОплаты.Безналичная,
ДанныеЗаполнения);
БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьБанковскийСчетПоУмолчанию(
ДанныеЗаполнения.Контрагент,
ДанныеЗаполнения.Валюта);
ПараметрыЗаполненияРасшифровки = ВзаиморасчетыСервер.ПараметрыЗаполненияРасшифровкиПлатежаПоЗаказу();
ПараметрыЗаполненияРасшифровки.ЗаказКлиента = ДокументОснование;
ПараметрыЗаполненияРасшифровки.Договор = Выборка.Договор;
ПараметрыЗаполненияРасшифровки.ВалютаДокумента = ДанныеЗаполнения.Валюта;
ПараметрыЗаполненияРасшифровки.Партнер = Выборка.Партнер;
ПараметрыЗаполненияРасшифровки.ОснованиеПлатежа = ДокументОснование;
ПараметрыЗаполненияРасшифровки.СтатьяДвиженияДенежныхСредств = Выборка.СтатьяДвиженияДенежныхСредств;
ВзаиморасчетыСервер.ЗаполнитьРасшифровкуПлатежаПоЗаказуКлиента(
ПараметрыЗаполненияРасшифровки,
РасшифровкаПлатежа,
СуммаКОплате);
КонецЕсли;
СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма");
КонецПроцедуры
Процедура ЗаполнитьПоВозвратуТоваровПоставщику(Знач ДокументОснование, ДанныеЗаполнения)
Запрос = Новый Запрос(
"ВЫБРАТЬ
|
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчетОрганизации <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчетОрганизации.Владелец
| ИНАЧЕ
| ДанныеДокумента.Организация
| КОНЕЦ КАК Организация,
|
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.СуммаДокумента КАК Сумма,
| ДанныеДокумента.Ссылка КАК ДокументОснование,
| ДанныеДокумента.ДокументПоступления КАК ДокументПоступления,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратДенежныхСредствОтПоставщика) КАК ХозяйственнаяОперация,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.БанковскийСчетОрганизации КАК БанковскийСчет,
| ДанныеДокумента.СпособКомпенсации КАК СпособКомпенсации
|ИЗ
| Документ.ВозвратТоваровПоставщику КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
ДанныеЗаполнения = Новый Структура;
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
ДенежныеСредстваСервер.ЗаполнитьРеквизитыДокументаПоФормеОплаты(Перечисления.ФормыОплаты.Безналичная, ДанныеЗаполнения);
БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьБанковскийСчетПоУмолчанию(
ДанныеЗаполнения.Контрагент,
ДанныеЗаполнения.Валюта);
МассивДокументов = Новый Массив;
Если Выборка.СпособКомпенсации = Перечисления.СпособыКомпенсацииВозвратовТоваров.ОставитьВКачествеАванса Тогда
МассивДокументов.Добавить(ДокументОснование);
КонецЕсли;
МассивДокументов.Добавить(Выборка.Договор);
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ОбъектыРасчетов.Ссылка КАК ОбъектРасчетов
|ПОМЕСТИТЬ ВтОбъектыРасчетов
|ИЗ Справочник.ОбъектыРасчетов КАК ОбъектыРасчетов
|ГДЕ ОбъектыРасчетов.Объект В (&МассивДокументов)
|;
|ВЫБРАТЬ
| РасчетыСПоставщиками.ОбъектРасчетов КАК ОбъектРасчетов,
| РасчетыСПоставщиками.Валюта КАК ВалютаВзаиморасчетов,
| РасчетыСПоставщиками.СуммаОстаток КАК СуммаВзаиморасчетов
|ИЗ
| РегистрНакопления.РасчетыСПоставщиками.Остатки(,
| ОбъектРасчетов В (ВЫБРАТЬ ОбъектРасчетов ИЗ ВтОбъектыРасчетов)
| ) КАК РасчетыСПоставщиками
|ГДЕ
| РасчетыСПоставщиками.СуммаОстаток > 0
|");
Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
ВыборкаПоРасчетам = Запрос.Выполнить().Выбрать();
Если ВыборкаПоРасчетам.Следующий() Тогда
НоваяСтрока = РасшифровкаПлатежа.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаПоРасчетам);
НоваяСтрока.Партнер = ДанныеЗаполнения.Партнер;
НоваяСтрока.ОснованиеПлатежа = ДанныеЗаполнения.ДокументОснование;
Коэффициенты = РаботаСКурсамивалютУТ.ПолучитьКоэффициентыПересчетаВалюты(
ДанныеЗаполнения.Валюта,
ВыборкаПоРасчетам.ВалютаВзаиморасчетов,
ТекущаяДатаСеанса(),
ДанныеЗаполнения.Организация);
СуммаПоСтроке = ?(Коэффициенты.КоэффициентПересчетаВВалютуВзаиморасчетов <> 0, НоваяСтрока.СуммаВзаиморасчетов / Коэффициенты.КоэффициентПересчетаВВалютуВзаиморасчетов, 0);
Если СуммаПоСтроке <= ДанныеЗаполнения.Сумма Тогда
НоваяСтрока.Сумма = СуммаПоСтроке;
Иначе
НоваяСтрока.Сумма = ДанныеЗаполнения.Сумма;
НоваяСтрока.СуммаВзаиморасчетов = 0;
КонецЕсли;
Иначе
НоваяСтрока = РасшифровкаПлатежа.Добавить();
НоваяСтрока.ОснованиеПлатежа = ДанныеЗаполнения.ДокументПоступления;
НоваяСтрока.ОбъектРасчетов = ОбъектыРасчетовСервер.ПолучитьОбъектРасчетовПоСсылке(ДанныеЗаполнения.ДокументПоступления);
НоваяСтрока.Партнер = ДанныеЗаполнения.Партнер;
НоваяСтрока.Сумма = ДанныеЗаполнения.Сумма;
НоваяСтрока.СтатьяДвиженияДенежныхСредств =
Справочники.СтатьиДвиженияДенежныхСредств.СтатьяДвиженияДенежныхСредствПоХозяйственнойОперации(Выборка.ХозяйственнаяОперация);
КонецЕсли;
ДенежныеСредстваСервер.ЗаполнитьНДСВРасшифровке(РасшифровкаПлатежа,
ДенежныеСредстваСервер.РасшифровкаПлатежаНДС(Выборка.Организация, ТекущаяДатаСеанса(), Выборка.Валюта, РасшифровкаПлатежа.ВыгрузитьКолонку("ОбъектРасчетов"), Ложь));
КонецЕсли;
СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма");
КонецПроцедуры
Процедура ЗаполнитьПоРеализацииТоваровУслуг(Знач ДокументОснование, ДанныеЗаполнения, СуммаКОплате = 0)
Запрос = Новый Запрос(
"ВЫБРАТЬ
|
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчетОрганизации <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчетОрганизации.Владелец
| ИНАЧЕ
| ДанныеДокумента.Организация
| КОНЕЦ КАК Организация,
|
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Договор КАК Договор,
| ЕСТЬNULL(ДанныеДокумента.Договор.ТипДоговора, ЗНАЧЕНИЕ(Перечисление.ТипыДоговоров.ПустаяСсылка)) КАК ДоговорТипДоговора,
| ЕСТЬNULL(ДанныеДокумента.Договор.КомиссионныеПродажи25, ЛОЖЬ) КАК ДоговорКомиссионныеПродажи25,
| ЕСТЬNULL(ДанныеДокумента.Договор.ВестиРасчетыЧерезКонечныхПокупателей, ЛОЖЬ) КАК ДоговорВестиРасчетыЧерезКонечныхПокупателей,
| ВЫБОР КОГДА ДанныеДокумента.Договор.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов) ТОГДА
| ДанныеДокумента.Договор.СтатьяДвиженияДенежныхСредств
| ИНАЧЕ
| ВЫБОР КОГДА ЕСТЬNULL(ДанныеДокумента.Договор.СтатьяДвиженияДенежныхСредств, ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ПустаяСсылка)) = ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ПустаяСсылка) ТОГДА
| ДанныеДокумента.Соглашение.СтатьяДвиженияДенежныхСредств
| ИНАЧЕ
| ДанныеДокумента.Договор.СтатьяДвиженияДенежныхСредств
| КОНЕЦ
| КОНЕЦ КАК СтатьяДвиженияДенежныхСредств,
| ДанныеДокумента.ПорядокРасчетов КАК ПорядокРасчетов,
| ДанныеДокумента.РеализацияПоЗаказам КАК РеализацияПоЗаказам,
| ДанныеДокумента.СуммаДокумента КАК Сумма,
| ДанныеДокумента.Ссылка КАК ДокументОснование,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента) КАК ХозяйственнаяОперация,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.БанковскийСчетОрганизации КАК БанковскийСчет
|ИЗ
| Документ.РеализацияТоваровУслуг КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
ДенежныеСредстваСервер.ЗаполнитьРеквизитыДокументаПоФормеОплаты(Перечисления.ФормыОплаты.Безналичная, ДанныеЗаполнения);
БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьБанковскийСчетПоУмолчанию(
ДанныеЗаполнения.Контрагент, ДанныеЗаполнения.Валюта, ДанныеЗаполнения.БанковскийСчет);
ДоговорРасчетовКомиссииЧерезКонечныхПокупателей = Выборка.ДоговорТипДоговора = Перечисления.ТипыДоговоров.СКомиссионером
И Выборка.ДоговорКомиссионныеПродажи25
И Выборка.ДоговорВестиРасчетыЧерезКонечныхПокупателей;
СтрокиГрафика = Новый Массив;
Если ((Выборка.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоНакладным
Или Выборка.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоЗаказам)
И Не Выборка.РеализацияПоЗаказам)
Или Выборка.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоЗаказамНакладным
Или Выборка.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамНакладным
И Не ДоговорРасчетовКомиссииЧерезКонечныхПокупателей Тогда
СтрокиГрафика = ДенежныеСредстваСервер.СтрокиГрафикаКОплате(Выборка.ДокументОснование);
КонецЕсли;
Если СтрокиГрафика.Количество() Тогда
Результат = ДенежныеСредстваСервер.ОплатитьСтрокиГрафика(СтрокиГрафика, "ПоступлениеБезналичныхДенежныхСредств");
Если Результат.Свойство("ДокументКСозданию") И ЗначениеЗаполнено(Результат.ДокументКСозданию) Тогда
ЗаполнитьПоМассивуОснований(ДанныеЗаполнения, Результат.ДокументКСозданию.ДанныеЗаполнения.Основание);
КонецЕсли;
Иначе
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаТовары.ЗаказКлиента КАК ЗаказКлиента
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.Ссылка.РеализацияПоЗаказам
| И НЕ (ТИПЗНАЧЕНИЯ(ТаблицаТовары.ЗаказКлиента) = ТИП(Документ.ОтгрузкаТоваровКлиенту)
| ИЛИ ТИПЗНАЧЕНИЯ(ТаблицаТовары.ЗаказКлиента) = ТИП(Документ.ПервичныйДокумент)
| И ВЫРАЗИТЬ(ТаблицаТовары.ЗаказКлиента КАК
| Документ.ПервичныйДокумент).ТипПервичногоДокумента =
| ЗНАЧЕНИЕ(Перечисление.ТипыПервичныхДокументов.ОтгрузкаТоваровКлиенту))";
РезультатЗапросаПоЗаказам = Запрос.Выполнить();
Если НЕ РезультатЗапросаПоЗаказам.Пустой() Тогда
ЗаказыКлиента = РезультатЗапросаПоЗаказам.Выгрузить().ВыгрузитьКолонку("ЗаказКлиента");
ЗаказыКлиента.Добавить(ДокументОснование);
Иначе
ЗаказыКлиента = ДокументОснование;
КонецЕсли;
ПараметрыЗаполненияРасшифровки = ВзаиморасчетыСервер.ПараметрыЗаполненияРасшифровкиПлатежаПоЗаказу();
Если Выборка.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамНакладным
И ДоговорРасчетовКомиссииЧерезКонечныхПокупателей Тогда
ПараметрыЗаполненияРасшифровки.ЗаказКлиента = Выборка.Договор;
ПараметрыЗаполненияРасшифровки.ОснованиеПлатежа = Выборка.Договор;
Иначе
ПараметрыЗаполненияРасшифровки.ЗаказКлиента = ЗаказыКлиента;
ПараметрыЗаполненияРасшифровки.ОснованиеПлатежа = ДокументОснование;
КонецЕсли;
ПараметрыЗаполненияРасшифровки.Договор = Выборка.Договор;
ПараметрыЗаполненияРасшифровки.ВалютаДокумента = ДанныеЗаполнения.Валюта;
ПараметрыЗаполненияРасшифровки.Партнер = Выборка.Партнер;
ПараметрыЗаполненияРасшифровки.СтатьяДвиженияДенежныхСредств = Выборка.СтатьяДвиженияДенежныхСредств;
Если СуммаКОплате = 0 Тогда
СуммаКОплате = Выборка.Сумма;
КонецЕсли;
ВзаиморасчетыСервер.ЗаполнитьРасшифровкуПлатежаПоЗаказуКлиента(
ПараметрыЗаполненияРасшифровки,
РасшифровкаПлатежа,
СуммаКОплате);
КонецЕсли;
КонецЕсли;
СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма");
КонецПроцедуры
Процедура ЗаполнитьПоАктуВыполненныхРабот(Знач ДокументОснование, ДанныеЗаполнения, СуммаКОплате = 0)
Запрос = Новый Запрос(
"ВЫБРАТЬ
|
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчетОрганизации <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчетОрганизации.Владелец
| ИНАЧЕ
| ДанныеДокумента.Организация
| КОНЕЦ КАК Организация,
|
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Договор КАК Договор,
| ВЫБОР КОГДА ДанныеДокумента.Договор.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов) ТОГДА
| ДанныеДокумента.Договор.СтатьяДвиженияДенежныхСредств
| ИНАЧЕ
| ВЫБОР КОГДА ЕСТЬNULL(ДанныеДокумента.Договор.СтатьяДвиженияДенежныхСредств, ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ПустаяСсылка)) = ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ПустаяСсылка) ТОГДА
| ДанныеДокумента.Соглашение.СтатьяДвиженияДенежныхСредств
| ИНАЧЕ
| ДанныеДокумента.Договор.СтатьяДвиженияДенежныхСредств
| КОНЕЦ
| КОНЕЦ КАК СтатьяДвиженияДенежныхСредств,
| ДанныеДокумента.СуммаДокумента КАК Сумма,
| ДанныеДокумента.Ссылка КАК ДокументОснование,
| ДанныеДокумента.ПорядокРасчетов КАК ПорядокРасчетов,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента) КАК ХозяйственнаяОперация,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.БанковскийСчетОрганизации КАК БанковскийСчет
|ИЗ
| Документ.АктВыполненныхРабот КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
ДенежныеСредстваСервер.ЗаполнитьРеквизитыДокументаПоФормеОплаты(Перечисления.ФормыОплаты.Безналичная, ДанныеЗаполнения);
БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьБанковскийСчетПоУмолчанию(
ДанныеЗаполнения.Контрагент, ДанныеЗаполнения.Валюта);
СтрокиГрафика = Новый Массив;
Если Выборка.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоНакладным
Или Выборка.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоЗаказамНакладным
Или Выборка.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамНакладным Тогда
СтрокиГрафика = ДенежныеСредстваСервер.СтрокиГрафикаКОплате(Выборка.ДокументОснование);
КонецЕсли;
Если СтрокиГрафика.Количество() Тогда
Результат = ДенежныеСредстваСервер.ОплатитьСтрокиГрафика(СтрокиГрафика, "ПоступлениеБезналичныхДенежныхСредств");
Если Результат.Свойство("ДокументКСозданию") И ЗначениеЗаполнено(Результат.ДокументКСозданию) Тогда
ЗаполнитьПоМассивуОснований(ДанныеЗаполнения, Результат.ДокументКСозданию.ДанныеЗаполнения.Основание);
КонецЕсли;
Иначе
Запрос = Новый Запрос("
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаУслуги.ЗаказКлиента КАК ЗаказКлиента
|ИЗ
| Документ.АктВыполненныхРабот.Услуги КАК ТаблицаУслуги
|ГДЕ
| ТаблицаУслуги.Ссылка = &Ссылка
| И ТаблицаУслуги.Ссылка.АктПоЗаказам
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапросаПоЗаказам = Запрос.Выполнить();
Если НЕ РезультатЗапросаПоЗаказам.Пустой() Тогда
ЗаказыКлиента = РезультатЗапросаПоЗаказам.Выгрузить().ВыгрузитьКолонку("ЗаказКлиента");
ЗаказыКлиента.Добавить(ДокументОснование);
Иначе
ЗаказыКлиента = ДокументОснование;
КонецЕсли;
ПараметрыЗаполненияРасшифровки = ВзаиморасчетыСервер.ПараметрыЗаполненияРасшифровкиПлатежаПоЗаказу();
ПараметрыЗаполненияРасшифровки.ЗаказКлиента = ЗаказыКлиента;
ПараметрыЗаполненияРасшифровки.Договор = Выборка.Договор;
ПараметрыЗаполненияРасшифровки.ВалютаДокумента = ДанныеЗаполнения.Валюта;
ПараметрыЗаполненияРасшифровки.Партнер = Выборка.Партнер;
ПараметрыЗаполненияРасшифровки.ОснованиеПлатежа = ДокументОснование;
ПараметрыЗаполненияРасшифровки.СтатьяДвиженияДенежныхСредств = Выборка.СтатьяДвиженияДенежныхСредств;
Если СуммаКОплате = 0 Тогда
СуммаКОплате = Выборка.Сумма;
КонецЕсли;
ВзаиморасчетыСервер.ЗаполнитьРасшифровкуПлатежаПоЗаказуКлиента(
ПараметрыЗаполненияРасшифровки,
РасшифровкаПлатежа,
СуммаКОплате);
КонецЕсли;
КонецЕсли;
СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма");
КонецПроцедуры
Процедура ЗаполнитьПоДоговоруКонтрагента(Знач Договор, ДанныеЗаполнения, СуммаКОплате = 0)
ДанныеЗаполнения.Свойство("БанковскийСчет", БанковскийСчет);
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Контрагент.Наименование КАК КонтрагентНаименование,
| ДанныеДокумента.Контрагент.НаименованиеПолное КАК ПринятоОт,
| ДанныеДокумента.Ссылка КАК ОснованиеПлатежа,
| ДанныеДокумента.Ссылка КАК Договор,
| &ОбъектРасчетов КАК ОбъектРасчетов,
| ДанныеДокумента.Ссылка КАК ЗаказКлиента,
| ДанныеДокумента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.ТипДоговора КАК ТипДоговора,
| ДанныеДокумента.Ссылка КАК ДокументОснование,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента) КАК ХозяйственнаяОперация,
| ДанныеДокумента.ГруппаФинансовогоУчета КАК ГруппаФинансовогоУчета,
| ДанныеДокумента.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств,
| ДанныеДокумента.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.БанковскийСчет КАК БанковскийСчет,
| ДанныеДокумента.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента,
| ДанныеДокумента.ВалютаВзаиморасчетов КАК Валюта,
| ДанныеДокумента.ВалютаВзаиморасчетов КАК ВалютаДокумента
|
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДанныеДокумента
|
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|");
Запрос.УстановитьПараметр("Ссылка", Договор);
Запрос.УстановитьПараметр("ОбъектРасчетов", ОбъектыРасчетовСервер.ПолучитьОбъектРасчетовПоСсылке(Договор));
РезультатЗапроса = Запрос.Выполнить();
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
Если Не (Выборка.ТипДоговора = Перечисления.ТипыДоговоров.СПокупателем
Или Выборка.ТипДоговора = Перечисления.ТипыДоговоров.СКомиссионером
Или Выборка.ТипДоговора = Перечисления.ТипыДоговоров.СДавальцем
Или Выборка.ТипДоговора = Перечисления.ТипыДоговоров.ПередачаВАренду
Или Выборка.ТипДоговора = Перечисления.ТипыДоговоров.Субаренда
Или Выборка.ТипДоговора = Перечисления.ТипыДоговоров.СКомитентомНаЗакупку) Тогда
ВызватьИсключение ДенежныеСредстваСервер.ТекстОбИсключенииОплатыПоДоговору(
Метаданные().Синоним,
Выборка.ТипДоговора);
КонецЕсли;
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
Если ЗначениеЗаполнено(БанковскийСчет) Тогда
ДанныеЗаполнения.Вставить("БанковскийСчет", БанковскийСчет);
КонецЕсли;
ДенежныеСредстваСервер.ЗаполнитьРеквизитыДокументаПоФормеОплаты(Перечисления.ФормыОплаты.Безналичная, ДанныеЗаполнения);
Если ЗначениеЗаполнено(Выборка.ОбъектРасчетов) Тогда
ПараметрыЗаполненияРасшифровки = ВзаиморасчетыСервер.ПараметрыЗаполненияРасшифровкиПлатежаПоЗаказу();
ПараметрыЗаполненияРасшифровки.ЗаказКлиента = ДанныеЗаполнения.ЗаказКлиента;
ПараметрыЗаполненияРасшифровки.Договор = ДанныеЗаполнения.Договор;
ПараметрыЗаполненияРасшифровки.ВалютаДокумента = ДанныеЗаполнения.Валюта;
ПараметрыЗаполненияРасшифровки.Партнер = ДанныеЗаполнения.Партнер;
ПараметрыЗаполненияРасшифровки.ОснованиеПлатежа = ДанныеЗаполнения.ОснованиеПлатежа;
ПараметрыЗаполненияРасшифровки.СтатьяДвиженияДенежныхСредств = Выборка.СтатьяДвиженияДенежныхСредств;
ВзаиморасчетыСервер.ЗаполнитьРасшифровкуПлатежаПоЗаказуКлиента(
ПараметрыЗаполненияРасшифровки,
РасшифровкаПлатежа,
СуммаКОплате);
Иначе
СтрокаРасшифровки = РасшифровкаПлатежа.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаРасшифровки,Выборка);
КонецЕсли;
КонецЕсли;
СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма");
КонецПроцедуры
Процедура ЗаполнитьПоОтчетуКомиссионера(Знач ДокументОснование, ДанныеЗаполнения, СуммаКОплате = 0)
Запрос = Новый Запрос(
"ВЫБРАТЬ
|
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.СуммаДокумента КАК Сумма,
| ДанныеДокумента.СуммаВознаграждения КАК СуммаВознаграждения,
| ДанныеДокумента.Ссылка КАК ДокументОснование,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента) КАК ХозяйственнаяОперация,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.БанковскийСчет КАК БанковскийСчет
|ИЗ
| Документ.ОтчетКомиссионера КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
ДанныеЗаполнения = Новый Структура;
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
ДенежныеСредстваСервер.ЗаполнитьРеквизитыДокументаПоФормеОплаты(Перечисления.ФормыОплаты.Безналичная, ДанныеЗаполнения);
БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьБанковскийСчетПоУмолчанию(
ДанныеЗаполнения.Контрагент,
ДанныеЗаполнения.Валюта);
ПараметрыЗаполненияРасшифровки = ВзаиморасчетыСервер.ПараметрыЗаполненияРасшифровкиПлатежаПоЗаказу();
ПараметрыЗаполненияРасшифровки.ЗаказКлиента = ДокументОснование;
ПараметрыЗаполненияРасшифровки.Договор = Выборка.Договор;
ПараметрыЗаполненияРасшифровки.ВалютаДокумента = ДанныеЗаполнения.Валюта;
ПараметрыЗаполненияРасшифровки.Партнер = Выборка.Партнер;
ПараметрыЗаполненияРасшифровки.ОснованиеПлатежа = ДокументОснование;
Если Выборка.СуммаВознаграждения >= 0 Тогда
ВзаиморасчетыСервер.ЗаполнитьРасшифровкуПлатежаПоЗаказуКлиента(
ПараметрыЗаполненияРасшифровки, РасшифровкаПлатежа, СуммаКОплате);
Иначе
ОбъектыРасчетов = Новый Массив;
ОбъектыРасчетов.Добавить(ДокументОснование);
ОбъектыРасчетов.Добавить(Выборка.Договор);
ВзаиморасчетыСервер.ЗаполнитьРасшифровкуПлатежаПоВозвратуПоставщику(
ОбъектыРасчетов, Выборка.Организация, Выборка.Валюта, -Выборка.СуммаВознаграждения, Выборка.Партнер, РасшифровкаПлатежа);
КонецЕсли;
КонецЕсли;
СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма");
КонецПроцедуры
Процедура ЗаполнитьПоОтчетуКомитенту(Знач ОтчетКомитенту, ДанныеЗаполнения, СуммаКОплате = 0)
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчет <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчет.Владелец
| ИНАЧЕ
| ДанныеДокумента.Организация
| КОНЕЦ КАК Организация,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Договор КАК Договор,
| ВЫБОР КОГДА ДанныеДокумента.Договор.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов) ТОГДА
| ДанныеДокумента.Договор.СтатьяДвиженияДенежныхСредств
| ИНАЧЕ
| ВЫБОР КОГДА ЕСТЬNULL(ДанныеДокумента.Договор.СтатьяДвиженияДенежныхСредств, ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ПустаяСсылка)) = ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ПустаяСсылка) ТОГДА
| ДанныеДокумента.Соглашение.СтатьяДвиженияДенежныхСредств
| ИНАЧЕ
| ДанныеДокумента.Договор.СтатьяДвиженияДенежныхСредств
| КОНЕЦ
| КОНЕЦ КАК СтатьяДвиженияДенежныхСредств,
| ДанныеДокумента.СуммаВознаграждения КАК Сумма,
| ДанныеДокумента.Ссылка КАК ДокументОснование,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента) КАК ХозяйственнаяОперация,
| ДанныеДокумента.БанковскийСчет КАК БанковскийСчет,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.УдержатьВознаграждение КАК УдержатьВознаграждение
|ИЗ
| Документ.ОтчетКомитенту КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|");
Запрос.УстановитьПараметр("Ссылка", ОтчетКомитенту);
РезультатЗапроса = Запрос.Выполнить();
ДанныеЗаполнения = Новый Структура;
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
Если Выборка.УдержатьВознаграждение Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не требуется вводить поступление безналичных денежных средств на основании документа %1, поскольку в нем удержано вознаграждение'"),
ОтчетКомитенту);
ВызватьИсключение Текст;
КонецЕсли;
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
ДенежныеСредстваСервер.ЗаполнитьРеквизитыДокументаПоФормеОплаты(
Перечисления.ФормыОплаты.Безналичная,
ДанныеЗаполнения);
БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьБанковскийСчетПоУмолчанию(
ДанныеЗаполнения.Контрагент,
ДанныеЗаполнения.Валюта);
ПараметрыЗаполненияРасшифровки = ВзаиморасчетыСервер.ПараметрыЗаполненияРасшифровкиПлатежаПоЗаказу();
ПараметрыЗаполненияРасшифровки.ЗаказКлиента = ОтчетКомитенту;
ПараметрыЗаполненияРасшифровки.Договор = Выборка.Договор;
ПараметрыЗаполненияРасшифровки.ВалютаДокумента = ДанныеЗаполнения.Валюта;
ПараметрыЗаполненияРасшифровки.Партнер = Выборка.Партнер;
ПараметрыЗаполненияРасшифровки.ОснованиеПлатежа = ОтчетКомитенту;
ПараметрыЗаполненияРасшифровки.СтатьяДвиженияДенежныхСредств = Выборка.СтатьяДвиженияДенежныхСредств;
ВзаиморасчетыСервер.ЗаполнитьРасшифровкуПлатежаПоЗаказуКлиента(
ПараметрыЗаполненияРасшифровки,
РасшифровкаПлатежа);
КонецЕсли;
СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма");
КонецПроцедуры
Процедура ЗаполнитьПоОтчетуКомитентуОЗакупках(Знач ДокументОснование, ДанныеЗаполнения, СуммаКОплате = 0)
Запрос = Новый Запрос(
"ВЫБРАТЬ
|
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчет <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчет.Владелец
| ИНАЧЕ
| ДанныеДокумента.Организация
| КОНЕЦ КАК Организация,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Договор КАК Договор,
| ВЫБОР КОГДА ДанныеДокумента.Договор.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов) ТОГДА
| ДанныеДокумента.Договор.СтатьяДвиженияДенежныхСредств
| ИНАЧЕ
| ВЫБОР КОГДА ЕСТЬNULL(ДанныеДокумента.Договор.СтатьяДвиженияДенежныхСредств, ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ПустаяСсылка)) = ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ПустаяСсылка) ТОГДА
| ДанныеДокумента.Соглашение.СтатьяДвиженияДенежныхСредств
| ИНАЧЕ
| ДанныеДокумента.Договор.СтатьяДвиженияДенежныхСредств
| КОНЕЦ
| КОНЕЦ КАК СтатьяДвиженияДенежныхСредств,
| ДанныеДокумента.ПорядокРасчетов КАК ПорядокРасчетов,
| ДанныеДокумента.СуммаДокумента КАК Сумма,
| ДанныеДокумента.Ссылка КАК ДокументОснование,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента) КАК ХозяйственнаяОперация,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.БанковскийСчет КАК БанковскийСчет
|ИЗ
| Документ.ОтчетКомитентуОЗакупках КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
РеализацияПоЗаказам = Константы.ВариантОбособленияТоваровВПродажах.Получить() = Перечисления.ВариантыОбособленияТоваровВПродажах.ЗаказКлиента;
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
ДенежныеСредстваСервер.ЗаполнитьРеквизитыДокументаПоФормеОплаты(Перечисления.ФормыОплаты.Безналичная, ДанныеЗаполнения);
БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьБанковскийСчетПоУмолчанию(
ДанныеЗаполнения.Контрагент, ДанныеЗаполнения.Валюта);
СтрокиГрафика = Новый Массив;
Если (Выборка.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоНакладным
Или Выборка.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоЗаказам)
И Не РеализацияПоЗаказам Тогда
СтрокиГрафика = ДенежныеСредстваСервер.СтрокиГрафикаКОплате(Выборка.ДокументОснование);
КонецЕсли;
Если СтрокиГрафика.Количество() Тогда
Результат = ДенежныеСредстваСервер.ОплатитьСтрокиГрафика(СтрокиГрафика, "ПоступлениеБезналичныхДенежныхСредств");
Если Результат.Свойство("ДокументКСозданию") И ЗначениеЗаполнено(Результат.ДокументКСозданию) Тогда
ЗаполнитьПоМассивуОснований(ДанныеЗаполнения, Результат.ДокументКСозданию.ДанныеЗаполнения.Основание);
КонецЕсли;
Иначе
Запрос = Новый Запрос("
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаТовары.ЗаказКлиента КАК ЗаказКлиента
|ИЗ
| Документ.ОтчетКомитентуОЗакупках.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И НЕ ТаблицаТовары.ЗаказКлиента = ЗНАЧЕНИЕ(Документ.ЗаказКлиента.ПустаяСсылка)
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапросаПоЗаказам = Запрос.Выполнить();
Если НЕ РезультатЗапросаПоЗаказам.Пустой() Тогда
ЗаказыКлиента = РезультатЗапросаПоЗаказам.Выгрузить().ВыгрузитьКолонку("ЗаказКлиента");
ЗаказыКлиента.Добавить(ДокументОснование);
Иначе
ЗаказыКлиента = ДокументОснование;
КонецЕсли;
ПараметрыЗаполненияРасшифровки = ВзаиморасчетыСервер.ПараметрыЗаполненияРасшифровкиПлатежаПоЗаказу();
ПараметрыЗаполненияРасшифровки.ЗаказКлиента = ЗаказыКлиента;
ПараметрыЗаполненияРасшифровки.Договор = Выборка.Договор;
ПараметрыЗаполненияРасшифровки.ВалютаДокумента = ДанныеЗаполнения.Валюта;
ПараметрыЗаполненияРасшифровки.Партнер = Выборка.Партнер;
ПараметрыЗаполненияРасшифровки.ОснованиеПлатежа = ДокументОснование;
ПараметрыЗаполненияРасшифровки.СтатьяДвиженияДенежныхСредств = Выборка.СтатьяДвиженияДенежныхСредств;
Если СуммаКОплате = 0 Тогда
СуммаКОплате = Выборка.Сумма;
КонецЕсли;
ВзаиморасчетыСервер.ЗаполнитьРасшифровкуПлатежаПоЗаказуКлиента(
ПараметрыЗаполненияРасшифровки,
РасшифровкаПлатежа,
СуммаКОплате);
КонецЕсли;
КонецЕсли;
СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма");
КонецПроцедуры
Процедура ЗаполнитьПоЗаявкеНаВозвратТоваров(Знач ДокументОснование, ДанныеЗаполнения, СуммаКОплате = 0)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчет <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчет.Владелец
| ИНАЧЕ
| ДанныеДокумента.Организация
| КОНЕЦ КАК Организация,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.Ссылка КАК ДокументОснование,
| ВЫБОР КОГДА ДанныеДокумента.Договор.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов) ТОГДА
| ДанныеДокумента.Договор.СтатьяДвиженияДенежныхСредств
| ИНАЧЕ
| ВЫБОР КОГДА ЕСТЬNULL(ДанныеДокумента.Договор.СтатьяДвиженияДенежныхСредств, ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ПустаяСсылка)) = ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ПустаяСсылка) ТОГДА
| ДанныеДокумента.Соглашение.СтатьяДвиженияДенежныхСредств
| ИНАЧЕ
| ДанныеДокумента.Договор.СтатьяДвиженияДенежныхСредств
| КОНЕЦ
| КОНЕЦ КАК СтатьяДвиженияДенежныхСредств,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента) КАК ХозяйственнаяОперация,
| ДанныеДокумента.БанковскийСчет КАК БанковскийСчет,
| ДанныеДокумента.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента,
| ДанныеДокумента.Валюта КАК Валюта
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК ДанныеДокумента
|
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера)
| И ДанныеДокумента.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоНакладным)
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не требуется вводить поступление безналичных денежных средств на основании документа %1'"),
ДокументОснование);
ВызватьИсключение Текст;
Иначе
ДанныеЗаполнения = Новый Структура;
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
ДенежныеСредстваСервер.ЗаполнитьРеквизитыДокументаПоФормеОплаты(Перечисления.ФормыОплаты.Безналичная, ДанныеЗаполнения);
БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьБанковскийСчетПоУмолчанию(
ДанныеЗаполнения.Контрагент,
ДанныеЗаполнения.Валюта);
ПараметрыЗаполненияРасшифровки = ВзаиморасчетыСервер.ПараметрыЗаполненияРасшифровкиПлатежаПоЗаказу();
ПараметрыЗаполненияРасшифровки.ЗаказКлиента = ДокументОснование;
ПараметрыЗаполненияРасшифровки.Договор = Выборка.Договор;
ПараметрыЗаполненияРасшифровки.ВалютаДокумента = ДанныеЗаполнения.Валюта;
ПараметрыЗаполненияРасшифровки.Партнер = Выборка.Партнер;
ПараметрыЗаполненияРасшифровки.ОснованиеПлатежа = ДокументОснование;
ПараметрыЗаполненияРасшифровки.СтатьяДвиженияДенежныхСредств = Выборка.СтатьяДвиженияДенежныхСредств;
ВзаиморасчетыСервер.ЗаполнитьРасшифровкуПлатежаПоЗаказуКлиента(
ПараметрыЗаполненияРасшифровки,
РасшифровкаПлатежа);
КонецЕсли;
СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма");
КонецПроцедуры
Процедура ЗаполнитьПоРеализацииУслугПрочихАктивов(Знач Реализация, ДанныеЗаполнения, СуммаКОплате = 0)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчетОрганизации <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчетОрганизации.Владелец
| ИНАЧЕ
| ДанныеДокумента.Организация
| КОНЕЦ КАК Организация,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Контрагент.Наименование КАК КонтрагентНаименование,
| ДанныеДокумента.Договор КАК Договор,
| ВЫБОР КОГДА ДанныеДокумента.Договор.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов) ТОГДА
| ДанныеДокумента.Договор.СтатьяДвиженияДенежныхСредств
| ИНАЧЕ
| ВЫБОР КОГДА ЕСТЬNULL(ДанныеДокумента.Договор.СтатьяДвиженияДенежныхСредств, ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ПустаяСсылка)) = ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ПустаяСсылка) ТОГДА
| ДанныеДокумента.Соглашение.СтатьяДвиженияДенежныхСредств
| ИНАЧЕ
| ДанныеДокумента.Договор.СтатьяДвиженияДенежныхСредств
| КОНЕЦ
| КОНЕЦ КАК СтатьяДвиженияДенежныхСредств,
| ДанныеДокумента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| ДанныеДокумента.СуммаВзаиморасчетов КАК Сумма,
| ДанныеДокумента.Ссылка КАК ДокументОснование,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента) КАК ХозяйственнаяОперация,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.БанковскийСчетОрганизации КАК БанковскийСчет
|ИЗ
| Документ.РеализацияУслугПрочихАктивов КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|");
Запрос.УстановитьПараметр("Ссылка", Реализация);
РезультатЗапроса = Запрос.Выполнить();
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
Если Не ДанныеЗаполнения.Свойство("БанковскийСчет") Тогда
ДанныеЗаполнения.Вставить("БанковскийСчет");
КонецЕсли;
ДенежныеСредстваСервер.ЗаполнитьРеквизитыДокументаПоФормеОплаты(Перечисления.ФормыОплаты.Безналичная, ДанныеЗаполнения);
ПараметрыЗаполненияРасшифровки = ВзаиморасчетыСервер.ПараметрыЗаполненияРасшифровкиПлатежаПоЗаказу();
ПараметрыЗаполненияРасшифровки.ЗаказКлиента = Реализация;
ПараметрыЗаполненияРасшифровки.Договор = Выборка.Договор;
ПараметрыЗаполненияРасшифровки.ВалютаДокумента = ДанныеЗаполнения.Валюта;
ПараметрыЗаполненияРасшифровки.Партнер = Выборка.Партнер;
ПараметрыЗаполненияРасшифровки.ОснованиеПлатежа = Реализация;
ПараметрыЗаполненияРасшифровки.СтатьяДвиженияДенежныхСредств = Выборка.СтатьяДвиженияДенежныхСредств;
ВзаиморасчетыСервер.ЗаполнитьРасшифровкуПлатежаПоЗаказуКлиента(ПараметрыЗаполненияРасшифровки, РасшифровкаПлатежа);
КонецЕсли;
СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма");
КонецПроцедуры
Процедура ЗаполнитьПоПередачеТоваров(Знач ДокументОснование, ДанныеЗаполнения, СуммаКОплате = 0)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.ОрганизацияПолучатель КАК Партнер,
| ДанныеДокумента.ОрганизацияПолучатель КАК Контрагент,
| Неопределено КАК Договор,
| ДанныеДокумента.БанковскийСчетОрганизацииПолучателя КАК БанковскийСчетПолучатель,
| ДанныеДокумента.БанковскийСчетОрганизации КАК БанковскийСчет,
|
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчетОрганизации <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчетОрганизации.ВалютаДенежныхСредств
| ИНАЧЕ
| ДанныеДокумента.Валюта
| КОНЕЦ КАК Валюта,
| &Ссылка КАК ДокументОснование,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеДенежныхСредствИзДругойОрганизации) КАК ХозяйственнаяОперация
|ИЗ
| Документ.ПередачаТоваровМеждуОрганизациями КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияТоваровВДругуюОрганизацию)
| И НЕ ДанныеДокумента.РасчетыЧерезОтдельногоКонтрагента
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| Неопределено КАК Договор,
| ДанныеДокумента.БанковскийСчетОрганизацииПолучателя КАК БанковскийСчетПолучатель,
| ДанныеДокумента.БанковскийСчетОрганизации КАК БанковскийСчет,
|
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчетОрганизации <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчетОрганизации.ВалютаДенежныхСредств
| ИНАЧЕ
| ДанныеДокумента.Валюта
| КОНЕЦ КАК Валюта,
| &Ссылка КАК ДокументОснование,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента) КАК ХозяйственнаяОперация
|ИЗ
| Документ.ПередачаТоваровМеждуОрганизациями КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияТоваровВДругуюОрганизацию)
| И ДанныеДокумента.РасчетыЧерезОтдельногоКонтрагента
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
ДанныеЗаполнения = Новый Структура;
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
ДенежныеСредстваСервер.ЗаполнитьРеквизитыДокументаПоФормеОплаты(Перечисления.ФормыОплаты.Безналичная, ДанныеЗаполнения);
ПараметрыЗаполненияРасшифровки = ВзаиморасчетыСервер.ПараметрыЗаполненияРасшифровкиПлатежаПоЗаказу();
ПараметрыЗаполненияРасшифровки.ЗаказКлиента = ДокументОснование;
ПараметрыЗаполненияРасшифровки.Договор = Выборка.Договор;
ПараметрыЗаполненияРасшифровки.ВалютаДокумента = ДанныеЗаполнения.Валюта;
ПараметрыЗаполненияРасшифровки.Партнер = Выборка.Партнер;
ПараметрыЗаполненияРасшифровки.ОснованиеПлатежа = ДокументОснование;
ВзаиморасчетыСервер.ЗаполнитьРасшифровкуПлатежаПоЗаказуКлиента(ПараметрыЗаполненияРасшифровки, РасшифровкаПлатежа);
КонецЕсли;
СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма");
КонецПроцедуры
Процедура ЗаполнитьПоОтчетуПоКомиссии(Знач ДокументОснование, ДанныеЗаполнения, КОплате = 0, Вознаграждение = Ложь)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Комиссионер КАК ОрганизацияОтправитель,
| ДанныеДокумента.Комиссионер КАК Партнер,
| Неопределено КАК Контрагент,
| Неопределено КАК Договор,
| ДанныеДокумента.Договор.БанковскийСчет КАК БанковскийСчет,
| ДанныеДокумента.Договор.БанковскийСчетПолучателя КАК БанковскийСчетОтправитель,
| ДанныеДокумента.Валюта КАК Валюта,
| &Ссылка КАК ДокументОснование,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеДенежныхСредствИзДругойОрганизации) КАК ХозяйственнаяОперация
|ИЗ
| Документ.ОтчетПоКомиссииМеждуОрганизациями КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И НЕ ДанныеДокумента.РасчетыЧерезОтдельногоКонтрагента
| И НЕ &Вознаграждение
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Комиссионер КАК ОрганизацияОтправитель,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| Неопределено КАК Договор,
| Неопределено КАК БанковскийСчет,
| Неопределено КАК БанковскийСчетОтправитель,
| ДанныеДокумента.Валюта КАК Валюта,
| &Ссылка КАК ДокументОснование,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента) КАК ХозяйственнаяОперация
|ИЗ
| Документ.ОтчетПоКомиссииМеждуОрганизациями КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.РасчетыЧерезОтдельногоКонтрагента
| И НЕ &Вознаграждение
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокумента.Комиссионер КАК Организация,
| ДанныеДокумента.Организация КАК ОрганизацияОтправитель,
| ДанныеДокумента.Организация КАК Партнер,
| Неопределено КАК Контрагент,
| Неопределено КАК Договор,
| ДанныеДокумента.Договор.БанковскийСчетПолучателя КАК БанковскийСчетОтправитель,
| ДанныеДокумента.Договор.БанковскийСчет КАК БанковскийСчет,
| ДанныеДокумента.Валюта КАК Валюта,
| &Ссылка КАК ДокументОснование,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеДенежныхСредствИзДругойОрганизации) КАК ХозяйственнаяОперация
|ИЗ
| Документ.ОтчетПоКомиссииМеждуОрганизациями КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И НЕ ДанныеДокумента.РасчетыЧерезОтдельногоКонтрагента
| И &Вознаграждение
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокумента.Комиссионер КАК Организация,
| ДанныеДокумента.Организация КАК ОрганизацияОтправитель,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| Неопределено КАК Договор,
| Неопределено КАК БанковскийСчет,
| Неопределено КАК БанковскийСчетОтправитель,
| ДанныеДокумента.Валюта КАК Валюта,
| &Ссылка КАК ДокументОснование,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента) КАК ХозяйственнаяОперация
|ИЗ
| Документ.ОтчетПоКомиссииМеждуОрганизациями КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.РасчетыЧерезОтдельногоКонтрагента
| И &Вознаграждение
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
Запрос.УстановитьПараметр("Вознаграждение", Вознаграждение);
РезультатЗапроса = Запрос.Выполнить();
ДанныеЗаполнения = Новый Структура;
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
ДенежныеСредстваСервер.ЗаполнитьРеквизитыДокументаПоФормеОплаты(Перечисления.ФормыОплаты.Безналичная, ДанныеЗаполнения);
ПараметрыЗаполненияРасшифровки = ВзаиморасчетыСервер.ПараметрыЗаполненияРасшифровкиПлатежаПоЗаказу();
ПараметрыЗаполненияРасшифровки.ЗаказКлиента = ДокументОснование;
ПараметрыЗаполненияРасшифровки.Договор = Выборка.Договор;
ПараметрыЗаполненияРасшифровки.ВалютаДокумента = ДанныеЗаполнения.Валюта;
ПараметрыЗаполненияРасшифровки.Партнер = Выборка.Партнер;
ПараметрыЗаполненияРасшифровки.ОснованиеПлатежа = ДокументОснование;
ВзаиморасчетыСервер.ЗаполнитьРасшифровкуПлатежаПоЗаказуКлиента(
ПараметрыЗаполненияРасшифровки, РасшифровкаПлатежа, КОплате, ДанныеЗаполнения.Организация);
Если Не ЗначениеЗаполнено(ДанныеЗаполнения.БанковскийСчет) Тогда
ДанныеЗаполнения.БанковскийСчет = Справочники.БанковскиеСчетаОрганизаций.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(
ДанныеЗаполнения.Организация, ДанныеЗаполнения.Валюта);
КонецЕсли;
Если Не ЗначениеЗаполнено(ДанныеЗаполнения.БанковскийСчетОтправитель) Тогда
ДанныеЗаполнения.БанковскийСчетОтправитель = Справочники.БанковскиеСчетаОрганизаций.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(
ДанныеЗаполнения.ОрганизацияОтправитель, ДанныеЗаполнения.Валюта,, ДанныеЗаполнения.БанковскийСчет);
КонецЕсли;
ДанныеЗаполнения.Вставить("СтатьяДвиженияДенежныхСредств",
Справочники.СтатьиДвиженияДенежныхСредств.СтатьяДвиженияДенежныхСредствПоХозяйственнойОперации(ДанныеЗаполнения.ХозяйственнаяОперация));
Если ЗначениеЗаполнено(ДанныеЗаполнения.СтатьяДвиженияДенежныхСредств) Тогда
Для каждого Стр Из РасшифровкаПлатежа Цикл
Стр.СтатьяДвиженияДенежныхСредств = ДанныеЗаполнения.СтатьяДвиженияДенежныхСредств;
КонецЦикла;
КонецЕсли;
КонецЕсли;
СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма");
КонецПроцедуры
Процедура ЗаполнитьПоМассивуОснований(ДанныеЗаполнения, МассивОснований)
ДенежныеСредстваСервер.ЗаполнитьРеквизитыДокументаПоФормеОплаты(Перечисления.ФормыОплаты.Безналичная, ДанныеЗаполнения);
Если ДанныеЗаполнения.Свойство("ХозяйственнаяОперация")
И ДанныеЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоступлениеДенежныхСредствИзДругойОрганизации Тогда
БанковскийСчетОтправитель = Справочники.БанковскиеСчетаОрганизаций.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(
ДанныеЗаполнения.Контрагент, ДанныеЗаполнения.Валюта,, ДанныеЗаполнения.БанковскийСчет);
Иначе
БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьБанковскийСчетПоУмолчанию(
ДанныеЗаполнения.Контрагент, ДанныеЗаполнения.Валюта, ДанныеЗаполнения.БанковскийСчет);
КонецЕсли;
Если МассивОснований.Количество() Тогда
Если Метаданные.ОпределяемыеТипы.ОбъектРасчетовСПоставщиками.Тип.СодержитТип(ТипЗнч(МассивОснований[0].ОбъектОплаты))
Или Метаданные.ОпределяемыеТипы.ОбъектРасчетовСКлиентами.Тип.СодержитТип(ТипЗнч(МассивОснований[0].ОбъектОплаты)) Тогда
Для каждого СтрокаОснования Из МассивОснований Цикл
ПараметрыЗаполненияРасшифровки = ВзаиморасчетыСервер.ПараметрыЗаполненияРасшифровкиПлатежаПоЗаказу();
ЗаполнитьЗначенияСвойств(ПараметрыЗаполненияРасшифровки, СтрокаОснования);
ПараметрыЗаполненияРасшифровки.ВалютаДокумента = ДанныеЗаполнения.Валюта;
Если ТипЗнч(ПараметрыЗаполненияРасшифровки.ОснованиеПлатежа) <> Тип("ДокументСсылка.ВозвратТоваровПоставщику") Тогда
ВзаиморасчетыСервер.ЗаполнитьРасшифровкуПлатежаПоЗаказуКлиента(
ПараметрыЗаполненияРасшифровки,
РасшифровкаПлатежа,
СтрокаОснования.СуммаКОплате);
Иначе
ЗаполнитьПоВозвратуТоваровПоставщику(ПараметрыЗаполненияРасшифровки.ОснованиеПлатежа, ДанныеЗаполнения);
КонецЕсли;
КонецЦикла;
Иначе
Для каждого Основание Из МассивОснований Цикл
НоваяСтрока = РасшифровкаПлатежа.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Основание);
КонецЦикла;
КонецЕсли;
СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма");
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьПоВыкупуТоваровХранителем(Знач ДокументОснование, ДанныеЗаполнения, СуммаКОплате = 0)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
Запрос.Текст =
"ВЫБРАТЬ
| ВЫБОР
| КОГДА ДанныеДокумента.БанковскийСчетОрганизации <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка)
| ТОГДА ДанныеДокумента.БанковскийСчетОрганизации.Владелец
| ИНАЧЕ ДанныеДокумента.Организация
| КОНЕЦ КАК Организация,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Договор КАК Договор,
| ВЫБОР
| КОГДА ЕСТЬNULL(ДанныеДокумента.Договор.ПорядокРасчетов, ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПустаяСсылка)) = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов)
| ТОГДА ДанныеДокумента.Договор.СтатьяДвиженияДенежныхСредств
| ИНАЧЕ
| ВЫБОР
| КОГДА ЕСТЬNULL(ДанныеДокумента.Договор.СтатьяДвиженияДенежныхСредств, ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ПустаяСсылка)) = ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ПустаяСсылка)
| ТОГДА ЕСТЬNULL(ДанныеДокумента.Соглашение.СтатьяДвиженияДенежныхСредств, ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ПустаяСсылка))
| ИНАЧЕ ДанныеДокумента.Договор.СтатьяДвиженияДенежныхСредств
| КОНЕЦ
| КОНЕЦ КАК СтатьяДвиженияДенежныхСредств,
| ДанныеДокумента.СуммаДокумента КАК Сумма,
| ДанныеДокумента.Ссылка КАК ДокументОснование,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента) КАК ХозяйственнаяОперация,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.БанковскийСчетОрганизации КАК БанковскийСчет
|ИЗ
| Документ.ВыкупТоваровХранителем КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка";
РезультатЗапроса = Запрос.Выполнить();
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
ДенежныеСредстваСервер.ЗаполнитьРеквизитыДокументаПоФормеОплаты(
Перечисления.ФормыОплаты.Безналичная,
ДанныеЗаполнения);
БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьБанковскийСчетПоУмолчанию(
ДанныеЗаполнения.Контрагент,
ДанныеЗаполнения.Валюта);
ПараметрыЗаполненияРасшифровки = ВзаиморасчетыСервер.ПараметрыЗаполненияРасшифровкиПлатежаПоЗаказу();
ПараметрыЗаполненияРасшифровки.ЗаказКлиента = ДокументОснование;
ПараметрыЗаполненияРасшифровки.Договор = Выборка.Договор;
ПараметрыЗаполненияРасшифровки.ВалютаДокумента = ДанныеЗаполнения.Валюта;
ПараметрыЗаполненияРасшифровки.Партнер = Выборка.Партнер;
ПараметрыЗаполненияРасшифровки.ОснованиеПлатежа = ДокументОснование;
ПараметрыЗаполненияРасшифровки.СтатьяДвиженияДенежныхСредств = Выборка.СтатьяДвиженияДенежныхСредств;
ВзаиморасчетыСервер.ЗаполнитьРасшифровкуПлатежаПоЗаказуКлиента(
ПараметрыЗаполненияРасшифровки,
РасшифровкаПлатежа,
СуммаКОплате);
КонецЕсли;
СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма");
КонецПроцедуры
Процедура ЗаполнитьПоПодарочномуСертификату(Знач ДокументОснование, ДанныеЗаполнения, СуммаКОплате = 0)
ПодарочныйСертификат = ДокументОснование;
Если ТипЗнч(ДокументОснование) = Тип("Структура") Тогда
Если ТипЗнч(ДанныеЗаполнения.ПодарочныйСертификат) = Тип("Массив") Тогда
ПодарочныйСертификат = ДанныеЗаполнения.ПодарочныйСертификат[0];
Иначе
ПодарочныйСертификат = ДанныеЗаполнения.ПодарочныйСертификат;
КонецЕсли;
КонецЕсли;
ДанныеПодарочногоСертификата = ПодарочныеСертификатыВызовСервера.ПолучитьДанныеПодарочногоСертификата(ПодарочныйСертификат);
Если Не ДанныеПодарочногоСертификата.УчетПодарочныхСертификатов2_5 Тогда
Текст = НСтр("ru = 'Данная операция поддерживается только для видов подарочных сертификатов, использующих учет подарочных сертификатов 2.5.'");
ВызватьИсключение Текст;
КонецЕсли;
Если ДанныеПодарочногоСертификата.СтатусАктивации Тогда
Текст = НСтр("ru = 'Данная операция поддерживается только для не активированных подарочных сертификатов.'");
ВызватьИсключение Текст;
КонецЕсли;
Если ДанныеПодарочногоСертификата.Номинал <= 0 Тогда
Текст = НСтр("ru = 'Данная операция поддерживается только для подарочных сертификатов с ненулевым номиналом.'");
ВызватьИсключение Текст;
КонецЕсли;
ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента");
Организация = ДанныеПодарочногоСертификата.Организация;
СуммаДокумента = ДанныеПодарочногоСертификата.Номинал;
Контрагент = Справочники.Контрагенты.РозничныйПокупатель;
Партнер = Справочники.Партнеры.РозничныйПокупатель;
Если ТипЗнч(ДокументОснование) = Тип("Структура") И ДанныеЗаполнения.Свойство("Контрагент") Тогда
Контрагент = ДанныеЗаполнения.Контрагент;
Партнер = ДенежныеСредстваСервер.ПолучитьПартнераПоКонтрагенту(Контрагент, ХозяйственнаяОперация);
КонецЕсли;
НалогообложениеНДС = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДанныеПодарочногоСертификата.ОбъектРасчетов, "НалогообложениеНДС");
ВалютаРеглУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Организация);
Валюта = ДанныеПодарочногоСертификата.Валюта;
НоваяСтрока = РасшифровкаПлатежа.Добавить();
НоваяСтрока.Организация = Организация;
НоваяСтрока.Партнер = Партнер;
НоваяСтрока.ОбъектРасчетов = ДанныеПодарочногоСертификата.ОбъектРасчетов;
НоваяСтрока.Сумма = СуммаДокумента;
НоваяСтрока.СтатьяДвиженияДенежныхСредств = ДанныеПодарочногоСертификата.СтатьяДвиженияДенежныхСредствПродажа;
НоваяСтрока.КурсЧислительВзаиморасчетов = 1;
НоваяСтрока.КурсЗнаменательВзаиморасчетов = 1;
НоваяСтрока.ВалютаВзаиморасчетов = Валюта;
УчетНДСУП.ЗаполнитьСтавкуНДСДляПлатежей(НоваяСтрока.СтавкаНДС, НалогообложениеНДС, Организация, Дата);
СтруктураПересчетаСуммы = Новый Структура;
СтруктураПересчетаСуммы.Вставить("ЦенаВключаетНДС", Истина);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, Неопределено);
КурсИКратность = ДенежныеСредстваСервер.КурсЧислительИКурсЗнаменательВзаиморасчетов(Валюта, НоваяСтрока.ВалютаВзаиморасчетов,
ВалютаРеглУчета, ?(ЗначениеЗаполнено(ДатаПроведенияБанком), ДатаПроведенияБанком, Дата), ДанныеПодарочногоСертификата.ОбъектРасчетов);
НоваяСтрока.КурсЧислительВзаиморасчетов = КурсИКратность.КурсЧислитель;
НоваяСтрока.КурсЗнаменательВзаиморасчетов = КурсИКратность.КурсЗнаменатель;
ДенежныеСредстваКлиентСервер.РассчитатьСуммуВзаиморасчетовВСтрокеРасшифровки(
НоваяСтрока, Валюта, ВалютаРеглУчета);
КонецПроцедуры
Процедура ЗаполнитьКодВалютнойОперации() Экспорт
ТекстНазначениеПлатежа = ВРег(СтрЗаменить(НазначениеПлатежа, " ", ""));
НачальнаяПозицияVO = СтрНайти(ТекстНазначениеПлатежа, "{VO");
НачальнаяПозицияКВВО = СтрНайти(ТекстНазначениеПлатежа, "КВВО");
Если НачальнаяПозицияVO <> 0 Тогда
ИскомаяСтрока = Сред(ТекстНазначениеПлатежа, НачальнаяПозицияVO + 3, 5);
ИначеЕсли НачальнаяПозицияКВВО <> 0 Тогда
ИскомаяСтрока = Сред(ТекстНазначениеПлатежа, НачальнаяПозицияКВВО + 4, 5);
Иначе
Возврат;
КонецЕсли;
НайденнаяСсылка = Справочники.КодыВалютныхОпераций.НайтиПоКоду(ИскомаяСтрока);
Если НайденнаяСсылка <> Неопределено Тогда
КодВалютнойОперации = НайденнаяСсылка;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Инициализация
Процедура ИнициализироватьДокумент(ДанныеЗаполнения = Неопределено)
Если ТипЗнч(ДанныеЗаполнения) <> Тип("Структура")
Или Не ДанныеЗаполнения.Свойство("БанковскийСчет")
Или Не ЗначениеЗаполнено(ДанныеЗаполнения.БанковскийСчет) Тогда
БанковскийСчет = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ТекущийБанковскийСчет", "");
ЭтоКаталогБанковскихСчетов = Ложь;
Если ЗначениеЗаполнено(БанковскийСчет) Тогда
ЭтоКаталогБанковскихСчетов = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(БанковскийСчет, "ЭтоГруппа");
КонецЕсли;
Если Не ЗначениеЗаполнено(БанковскийСчет)
ИЛИ ЭтоКаталогБанковскихСчетов Тогда
БанковскийСчет = Справочники.БанковскиеСчетаОрганизаций.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(
?(ЗначениеЗаполнено(Организация), Организация, Неопределено),
?(ЗначениеЗаполнено(Валюта), Валюта, Неопределено));
КонецЕсли;
Если ЗначениеЗаполнено(БанковскийСчет) Тогда
СтруктураРеквизитов = Справочники.БанковскиеСчетаОрганизаций.ПолучитьРеквизитыБанковскогоСчетаОрганизации(БанковскийСчет);
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
И ДанныеЗаполнения.Свойство("Организация")
И ЗначениеЗаполнено(ДанныеЗаполнения.Организация)
И ДанныеЗаполнения.Организация <> СтруктураРеквизитов.Организация Тогда
БанковскийСчет = Неопределено;
Иначе
Организация = СтруктураРеквизитов.Организация;
Валюта = СтруктураРеквизитов.Валюта;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ТипЗнч(ДанныеЗаполнения) <> Тип("Структура")
Или Не ДанныеЗаполнения.Свойство("КассаОтправитель")
Или Не ЗначениеЗаполнено(ДанныеЗаполнения.КассаОтправитель) Тогда
Если Не ЗначениеЗаполнено(КассаОтправитель) Тогда
КассаОтправитель = Справочники.Кассы.ПолучитьКассуПоУмолчанию(
?(ЗначениеЗаполнено(Организация), Организация, Неопределено),
?(ЗначениеЗаполнено(Валюта), Валюта, Неопределено));
КонецЕсли;
КонецЕсли;
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
И ДанныеЗаполнения.Свойство("СуммаДокумента") Тогда
СуммаДокумента = ДанныеЗаполнения.СуммаДокумента;
КонецЕсли;
Если ТипЗнч(ДанныеЗаполнения) <> Тип("Структура") Или Не ДанныеЗаполнения.Свойство("Организация") Тогда
Организация = ЗначениеНастроекПовтИсп.ПолучитьОрганизациюПоУмолчанию(Организация);
КонецЕсли;
Если ТипЗнч(ДанныеЗаполнения) <> Тип("Структура") Или Не ДанныеЗаполнения.Свойство("Валюта") Тогда
Если Не ЗначениеЗаполнено(Валюта) Тогда
Валюта = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Организация);
КонецЕсли;
КонецЕсли;
Если ТипЗнч(ДанныеЗаполнения) <> Тип("Структура") Или Не ДанныеЗаполнения.Свойство("ПроведеноБанком") Тогда
ПроведеноБанком = ЗначениеЗаполнено(ТипПлатежногоДокумента) И
Не (ТипПлатежногоДокумента = Перечисления.ТипыПлатежныхДокументов.ПлатежноеТребование
Или ТипПлатежногоДокумента = Перечисления.ТипыПлатежныхДокументов.ПлатежноеПоручение);
КонецЕсли;
Если ТипЗнч(ДанныеЗаполнения) <> Тип("Структура") Тогда
Если ПроведеноБанком Тогда
ДатаПроведенияБанком = ТекущаяДатаСеанса();
КонецЕсли;
ИначеЕсли Не ДанныеЗаполнения.Свойство("ДатаПроведенияБанком")
И ДанныеЗаполнения.Свойство("ПроведеноБанком") И ДанныеЗаполнения.ПроведеноБанком Тогда
ДатаПроведенияБанком = ТекущаяДатаСеанса();
КонецЕсли;
ДенежныеСредстваСервер.ЗаполнитьСтатьюДвиженияДенежныхСредств(
ЭтотОбъект,
ДанныеЗаполнения,
?(ЗначениеЗаполнено(ХозяйственнаяОперация), ХозяйственнаяОперация, Перечисления.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента));
ЕстьДанныеВалюты = ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
И ДанныеЗаполнения.Свойство("Валюта")
И ЗначениеЗаполнено(ДанныеЗаполнения.Валюта);
ЕстьДанныеПартнера = ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
И ДанныеЗаполнения.Свойство("Партнер")
И ЗначениеЗаполнено(ДанныеЗаполнения.Партнер);
ВалютаРеглУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Организация);
Для каждого СтрокаТЧ Из РасшифровкаПлатежа Цикл
Если Не ЗначениеЗаполнено(СтрокаТЧ.Партнер)
И ЕстьДанныеПартнера Тогда
СтрокаТЧ.Партнер = ДанныеЗаполнения.Партнер;
КонецЕсли;
Если ЕстьДанныеВалюты Тогда
КурсИКратность = ДенежныеСредстваСервер.КурсЧислительИКурсЗнаменательВзаиморасчетов(
ДанныеЗаполнения.Валюта, СтрокаТЧ.ВалютаВзаиморасчетов, ВалютаРеглУчета, Дата, СтрокаТЧ.ОбъектРасчетов, Договор);
СтрокаТЧ.КурсЧислительВзаиморасчетов = КурсИКратность.КурсЧислитель;
СтрокаТЧ.КурсЗнаменательВзаиморасчетов = КурсИКратность.КурсЗнаменатель;
Иначе
СтрокаТЧ.КурсЧислительВзаиморасчетов = 1;
СтрокаТЧ.КурсЗнаменательВзаиморасчетов = 1;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
Процедура ПроверитьДатыПогашения(Отказ, ФлагОбменСБанками = Ложь, ОшибкиЗаполнения = "") Экспорт
Для Каждого СтрокаРасшифровки Из РасшифровкаПлатежа Цикл
Если ЗначениеЗаполнено(СтрокаРасшифровки.ДатаПогашения)
И (Не ПроведеноБанком И СтрокаРасшифровки.ДатаПогашения < НачалоДня(Дата)
Или ПроведеноБанком И СтрокаРасшифровки.ДатаПогашения < НачалоДня(ДатаПроведенияБанком)) Тогда
ТекстОшибки = НСтр("ru = 'Дата погашения не может быть раньше даты платежа.'");
Если ФлагОбменСБанками Тогда
ДенежныеСредстваСервер.ДобавитьОшибкуЗаполнения(ОшибкиЗаполнения, ТекстОшибки);
Иначе
Если ДополнительныеСвойства.Свойство("РасшифровкаБезРазбиения")
И ДополнительныеСвойства.РасшифровкаБезРазбиения Тогда
ПутьКДаннымОшибки = "ДатаПогашенияБезРазбиения";
Иначе
ПутьКДаннымОшибки = "Объект.РасшифровкаПлатежа" + "[" + (СтрокаРасшифровки.НомерСтроки - 1) + "].ДатаПогашения";
КонецЕсли;
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , ПутьКДаннымОшибки, , Отказ);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#КонецЕсли