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