#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОбработчикиСобытий
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Документы.ЗаявкаНаРасходованиеДенежныхСредств.ЗаполнитьФормуОплатыПоХозОперации(ДанныеЗаполнения);
ТипОснования = ТипЗнч(ДанныеЗаполнения);
Если ТипОснования = Тип("ДокументСсылка.ЗаказПоставщику") Тогда
ЗаполнитьПоЗаказуПоставщику(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.АвансовыйОтчет") Тогда
ЗаполнитьПоАвансовомуОтчету(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ЗаявкаНаВозвратТоваровОтКлиента") Тогда
ЗаполнитьПоЗаявкеНаВозвратТоваровОтКлиента(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ВозвратТоваровОтКлиента") Тогда
ЗаполнитьПоВозвратуТоваровОтКлиента(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ПриобретениеТоваровУслуг") Тогда
ЗаполнитьПоПоступлениюТоваровУслуг(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ПриобретениеУслугПрочихАктивов") Тогда
ЗаполнитьПоПоступлениюУслугИВнеоборотныхАктивов(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ОтчетКомитенту") Тогда
ЗаполнитьПоОтчетуКомитенту(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ОтчетКомитентуОСписании") Тогда
ЗаполнитьПоОтчетуКомитентуОСписании(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ОтчетКомиссионера") Тогда
ЗаполнитьПоОтчетуКомиссионера(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ПередачаТоваровМеждуОрганизациями") Тогда
ЗаполнитьПоПередачеТоваров(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ОтчетПоКомиссииМеждуОрганизациями") Тогда
ЗаполнитьПоОтчетуПоКомиссии(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ТаможеннаяДекларацияИмпорт") Тогда
ЗаполнитьПоТаможеннойДекларацииИмпорта(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипОснования = Тип("СправочникСсылка.ДоговорыКонтрагентов") Тогда
ЗаполнитьПоДоговору(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипОснования = Тип("СправочникСсылка.ДоговорыКредитовИДепозитов") Тогда
ЗаполнитьПоДоговоруКредитаДепозита(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ВозвратТоваровМеждуОрганизациями") Тогда
ЗаполнитьПоВозвратуМеждуОрганизациями(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
И ДанныеЗаполнения.Свойство("ХозяйственнаяОперация")
И ДанныеЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВыдачаДенежныхСредствПодотчетнику
И ДанныеЗаполнения.Свойство("ПодотчетноеЛицо") Тогда
Если Не ДанныеЗаполнения.Свойство("Подразделение") Тогда
ДанныеЗаполнения.Вставить("Подразделение", ФизическиеЛицаУТ.ПодразделениеФизическогоЛица(ДанныеЗаполнения.ПодотчетноеЛицо));
КонецЕсли;
НоваяСтрока = РасшифровкаПлатежа.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ДанныеЗаполнения);
ИначеЕсли ТипОснования = Тип("СправочникСсылка.ДоговорыАренды") Тогда
ЗаполнитьПоДоговоруАренды(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ВыкупПринятыхНаХранениеТоваров") Тогда
ЗаполнитьПоВыкупуПринятыхНаХранениеТоваров(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ОтчетОСписанииТоваровСХранения") Тогда
ЗаполнитьПоСписаниюПринятыхНаХранениеТоваров(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипОснования = Тип("СправочникСсылка.ПодарочныеСертификаты")
Или ТипОснования = Тип("Структура")
И ДанныеЗаполнения.Свойство("ПодарочныйСертификат")
И ДанныеЗаполнения.Свойство("Контрагент") Тогда
ЗаполнитьПоПодарочномуСертификату(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ЗаказПереработчику") Тогда
ЗаполнитьПоЗаказуПереработчику(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ЗаказПереработчику2_5") Тогда
ЗаполнитьПоЗаказуПереработчику2_5(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ОтчетПереработчика") Тогда
ЗаполнитьПоОтчетуПереработчика(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ОтчетПереработчика2_5") Тогда
ЗаполнитьПоОтчетуПереработчика2_5(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
И ДанныеЗаполнения.Свойство("ОтчетПоКомиссииМеждуОрганизациями")
И ТипЗнч(ДанныеЗаполнения.ОтчетПоКомиссииМеждуОрганизациями) = Тип("ДокументСсылка.ОтчетПоКомиссииМеждуОрганизациями") Тогда
ОтчетПоКомиссии = ДанныеЗаполнения.ОтчетПоКомиссииМеждуОрганизациями;
Если ОтчетПоКомиссии.УдержатьВознаграждение Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не требуется вводить Заявку на расходование ДС: Вознаграждение на основании документа %1, поскольку в нем удержано вознаграждение'"),
ОтчетПоКомиссии);
ВызватьИсключение Текст;
КонецЕсли;
ЗаполнитьПоОтчетуПоКомиссии(ОтчетПоКомиссии, ДанныеЗаполнения, ОтчетПоКомиссии.Организация);
ИначеЕсли ТипОснования = Тип("ДокументСсылка.ПоступлениеУслугПоАренде") Тогда
ЗаполнитьПоПоступлениюУслугПоАренде(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаказКлиента") Тогда
ЗаполнитьПоЗаказуКлиента(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ПриходныйКассовыйОрдер") Тогда
ЗаполнитьПоПриходномуКассовомуОрдеру(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ПоступлениеБезналичныхДенежныхСредств") Тогда
ЗаполнитьПоПоступлениюБезналичныхДенежныхСредств(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ОперацияПоПлатежнойКарте") Тогда
ЗаполнитьПоОперацииПоПлатежнойКарте(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ОтчетПоКомиссииМеждуОрганизациямиОСписании") Тогда
ЗаполнитьПоОтчетуПоКомиссии(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.АктПремииКлиенту") Тогда
ЗаполнитьПоАктуПремииКлиенту(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
И ДанныеЗаполнения.Свойство("Основание")
И ТипЗнч(ДанныеЗаполнения.Основание) = Тип("Массив") Тогда
ЗаполнитьПоМассивуОснований(ДанныеЗаполнения, ДанныеЗаполнения.Основание);
КонецЕсли;
ДополнительныеСвойства.Вставить("НеобходимостьЗаполненияКассыПриФОИспользоватьНесколькоКассЛожь", Ложь);
ДополнительныеСвойства.Вставить("НеобходимостьЗаполненияСчетаПриФОИспользоватьНесколькоСчетовЛожь", Ложь);
ЗаявкаНаРасходованиеДенежныхСредствЛокализация.ОбработкаЗаполнения(ЭтотОбъект, ДанныеЗаполнения, СтандартнаяОбработка);
Автор = Пользователи.ТекущийПользователь();
КтоЗаявил = Пользователи.ТекущийПользователь();
ЗаполнениеОбъектовПоСтатистике.ЗаполнитьРеквизитыОбъекта(ЭтотОбъект, ДанныеЗаполнения);
ИнициализироватьДокумент(ДанныеЗаполнения);
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") И ДанныеЗаполнения.Свойство("ХозяйственнаяОперация") Тогда
ПараметрыВыбораСтатейИАналитик = Документы.ЗаявкаНаРасходованиеДенежныхСредств.ПараметрыВыбораСтатейИАналитик(
ДанныеЗаполнения.ХозяйственнаяОперация);
Иначе
ПараметрыВыбораСтатейИАналитик = Документы.ЗаявкаНаРасходованиеДенежныхСредств.ПараметрыВыбораСтатейИАналитик(
ХозяйственнаяОперация);
КонецЕсли;
ДоходыИРасходыСервер.ОбработкаЗаполнения(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
КонтролироватьОплатуПоОбъектамРасчетов = Документы.ЗаявкаНаРасходованиеДенежныхСредств.КонтролироватьОплатуПоОбъектамРасчетов(
ХозяйственнаяОперация,
РасшифровкаПлатежа.ВыгрузитьКолонку("ОбъектРасчетов"));
КонецПроцедуры
Процедура ПриКопировании(ОбъектКопирования)
КтоЗаявил = Пользователи.ТекущийПользователь();
КтоРешил = Справочники.Пользователи.ПустаяСсылка();
Статус = Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.НеСогласована;
РаспределениеПоСчетам.Очистить();
ДатаПлатежа = Дата(1, 1, 1);
ЖелательнаяДатаПлатежа = Дата(1, 1, 1);
ДокументОснование = Неопределено;
ВзаиморасчетыСервер.ПриКопировании(ЭтотОбъект);
ЗаявкаНаРасходованиеДенежныхСредствЛокализация.ПриКопировании(ЭтотОбъект, ОбъектКопирования);
Автор = Пользователи.ТекущийПользователь();
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
ВсеРеквизиты = Новый Массив;
РеквизитыОперации = Новый Массив;
НепроверяемыеРеквизиты = Новый Массив;
РасшифровкаБезРазбиения = Ложь;
Если ДополнительныеСвойства.Свойство("РасшифровкаБезРазбиения") И ДополнительныеСвойства.РасшифровкаБезРазбиения Тогда
РасшифровкаБезРазбиения = Истина;
КонецЕсли;
Если ЗначениеЗаполнено(Организация)
И ЗначениеЗаполнено(ОрганизацияПолучатель)
И Организация = ОрганизацияПолучатель Тогда
Текст = НСтр("ru = 'Одна и та же организация не может являться отправителем и получателем одновременно'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Текст, ЭтотОбъект, "Организация",, Отказ);
КонецЕсли;
Если ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВозвратОплатыКлиенту
И (ФормаОплатыПлатежнаяКарта Или ФормаОплатыЗаявки = Перечисления.ФормыОплаты.ПлатежнаяКарта) Тогда
ТекстОшибки = НСтр("ru = 'Оплату платежной картой можно выбирать только для возврата оплаты клиенту'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, ЭтотОбъект, "ХозяйственнаяОперация",, Отказ);
КонецЕсли;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВнутренняяПередачаДенежныхСредств
И ЗначениеЗаполнено(Организация)
И ЗначениеЗаполнено(ОрганизацияПолучатель)
И Не Справочники.Организации.ОрганизацииВзаимосвязаныПоОрганизационнойСтруктуре(
Организация, ОрганизацияПолучатель) Тогда
ТекстОшибки = НСтр("ru = 'Организация-получатель должна быть взаимосвязана с организацией-отправителем по организационной структуре.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, ЭтотОбъект, "ОрганизацияПолучатель",, Отказ);
КонецЕсли;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВыдачаДенежныхСредствПодотчетнику Тогда
НепроверяемыеРеквизиты.Добавить("ДатаАвансовогоОтчета");
Если Не ЗначениеЗаполнено(ДатаАвансовогоОтчета) Тогда
ТекстОшибки = НСтр("ru = 'Поле ""Отчитаться"" не заполнено'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "ПериодАвансовогоОтчета",, Отказ);
КонецЕсли;
КонецЕсли;
Если РаспределениеПоСчетам.Итог("Сумма") > СуммаДокумента Тогда
ТекстОшибки = НСтр("ru = 'Сумма распределения по счетам не может превышать сумму документа'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, ЭтотОбъект, "РаспределениеПоСчетам",, Отказ);
КонецЕсли;
Если ЖелательнаяДатаПлатежа < НачалоДня(Дата) Тогда
Текст = НСтр("ru = 'Желательная дата платежа не может быть меньше даты документа'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Текст, ЭтотОбъект, "ЖелательнаяДатаПлатежа",, Отказ);
КонецЕсли;
Для каждого СтрокаРаспределения Из РаспределениеПоСчетам Цикл
Если СтрокаРаспределения.ДатаПлатежа < НачалоДня(Дата) Тогда
Текст = НСтр("ru = 'Дата платежа не может быть меньше даты документа'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
Текст,
ЭтотОбъект,
"РаспределениеПоСчетам[" + РаспределениеПоСчетам.Индекс(СтрокаРаспределения) + "].ДатаПлатежа",,
Отказ);
КонецЕсли;
КонецЦикла;
Если Статус = Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.Согласована
И Не ПраваПользователяПовтИсп.СогласованиеЗаявокНаРасходованиеДенежныхСредств() Тогда
ТекстОшибки = НСтр("ru = 'У вас нет права согласования заявок на расходование денежных средств'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, ЭтотОбъект,,, Отказ);
ИначеЕсли Статус = Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.КОплате
И Не ПраваПользователяПовтИсп.УтверждениеЗаявокНаРасходованиеДенежныхСредств() Тогда
ТекстОшибки = НСтр("ru = 'У вас нет права утверждения к оплате заявок на расходование денежных средств'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, ЭтотОбъект,,, Отказ);
КонецЕсли;
Если Не (ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВыдачаДенежныхСредствПодотчетнику И СписокФизЛиц) Тогда
ДенежныеСредстваСервер.ПроверитьЗаполнениеРасшифровкиПлатежа(ЭтотОбъект, СуммаДокумента, ХозяйственнаяОперация, Отказ);
ИначеЕсли ПеречислениеСотрудникуЧерезБанк Тогда
ДенежныеСредстваСервер.ПроверитьЛицевыеСчетаСотрудниковПоБанку(ЭтотОбъект, Отказ);
КонецЕсли;
Если ПланированиеСуммы = Перечисления.СпособыПланированияОплатыЗаявок.ВВалютеВзаиморасчетов
И ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВнутренняяПередачаДенежныхСредств
И ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.КонвертацияВалюты
И ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВыплатаЗарплаты Тогда
ВзаиморасчетыСервер.ЗаполнитьСуммуВзаиморасчетовВТабличнойЧасти(Валюта, Дата, РасшифровкаПлатежа, Организация);
ПроверитьСоответствиеВалютыВзаиморасчетов(Отказ);
КонецЕсли;
Документы.ЗаявкаНаРасходованиеДенежныхСредств.ЗаполнитьИменаРеквизитовПоХозяйственнойОперации(
ЭтотОбъект, ВсеРеквизиты, РеквизитыОперации);
ОбщегоНазначенияУТКлиентСервер.ЗаполнитьМассивНепроверяемыхРеквизитов(
ВсеРеквизиты, РеквизитыОперации, НепроверяемыеРеквизиты);
Если ФормаОплатыЗаявки <> Перечисления.ФормыОплаты.Безналичная Тогда
НепроверяемыеРеквизиты.Добавить("БанковскийСчетКонтрагента");
КонецЕсли;
Если РасшифровкаБезРазбиения Тогда
НепроверяемыеРеквизиты.Добавить("РасшифровкаПлатежа.Сумма");
КонецЕсли;
Если Статус = Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.НеСогласована
Или Статус = Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.Отклонена Тогда
НепроверяемыеРеквизиты.Добавить("СтатьяДвиженияДенежныхСредств");
НепроверяемыеРеквизиты.Добавить("РасшифровкаПлатежа.СтатьяДвиженияДенежныхСредств");
НепроверяемыеРеквизиты.Добавить("Контрагент");
НепроверяемыеРеквизиты.Добавить("БанковскийСчетКонтрагента");
НепроверяемыеРеквизиты.Добавить("РасшифровкаПлатежа.Партнер");
НепроверяемыеРеквизиты.Добавить("СтатьяАктивовПассивов");
НепроверяемыеРеквизиты.Добавить("РасшифровкаПлатежа.СтатьяРасходов");
НепроверяемыеРеквизиты.Добавить("ЛицевыеСчетаСотрудников.ЛицевойСчет");
НепроверяемыеРеквизиты.Добавить("ЛицевыеСчетаСотрудников.СтатьяДвиженияДенежныхСредств");
НепроверяемыеРеквизиты.Добавить("РасшифровкаПлатежа.Контрагент");
ИначеЕсли Статус = Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.Согласована Тогда
НепроверяемыеРеквизиты.Добавить("БанковскийСчетКонтрагента");
КонецЕсли;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ОплатаДенежныхСредствВДругуюОрганизацию
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратДенежныхСредствВДругуюОрганизацию
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВнутренняяПередачаДенежныхСредств Тогда
Если ФормаОплатыЗаявки = Перечисления.ФормыОплаты.Наличная Тогда
НепроверяемыеРеквизиты.Добавить("БанковскийСчетПолучатель");
ИначеЕсли ФормаОплатыЗаявки = Перечисления.ФормыОплаты.Безналичная Тогда
НепроверяемыеРеквизиты.Добавить("КассаПолучатель");
Иначе
НепроверяемыеРеквизиты.Добавить("БанковскийСчетПолучатель");
НепроверяемыеРеквизиты.Добавить("КассаПолучатель");
КонецЕсли;
КонецЕсли;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.КонвертацияВалюты Тогда
НепроверяемыеРеквизиты.Добавить("БанковскийСчетПолучатель");
НепроверяемыеРеквизиты.Добавить("КассаПолучатель");
КонецЕсли;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеречислениеВБюджет Тогда
КонецЕсли;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВыдачаДенежныхСредствПодотчетнику Тогда
Если СписокФизЛиц Тогда
НепроверяемыеРеквизиты.Добавить("ПодотчетноеЛицо");
НепроверяемыеРеквизиты.Добавить("РасшифровкаПлатежа");
НепроверяемыеРеквизиты.Добавить("РасшифровкаПлатежа.СтатьяДвиженияДенежныхСредств");
НепроверяемыеРеквизиты.Добавить("РасшифровкаПлатежа.Сумма");
Если Не ПеречислениеСотрудникуЧерезБанк Тогда
НепроверяемыеРеквизиты.Добавить("БанковскийСчетКонтрагента");
КонецЕсли;
Иначе
НепроверяемыеРеквизиты.Добавить("ЛицевыеСчетаСотрудников");
НепроверяемыеРеквизиты.Добавить("ЛицевыеСчетаСотрудников.ФизическоеЛицо");
НепроверяемыеРеквизиты.Добавить("ЛицевыеСчетаСотрудников.ЛицевойСчет");
НепроверяемыеРеквизиты.Добавить("ЛицевыеСчетаСотрудников.Сумма");
НепроверяемыеРеквизиты.Добавить("ЛицевыеСчетаСотрудников.СтатьяДвиженияДенежныхСредств");
КонецЕсли;
Если ФормаОплатыЗаявки = Перечисления.ФормыОплаты.Наличная Тогда
НепроверяемыеРеквизиты.Добавить("ЛицевыеСчетаСотрудников.ЛицевойСчет");
НепроверяемыеРеквизиты.Добавить("Контрагент");
КонецЕсли;
КонецЕсли;
ДенежныеСредстваСервер.ДобавитьНепроверяемыеРеквизитыПоВыплатеЗаработнойПлаты(
ЭтотОбъект, НепроверяемыеРеквизиты, ХозяйственнаяОперацияПоЗарплате);
Если ПеречислениеСотрудникуЧерезБанк Тогда
Если ФормаОплатыЗаявки <> Перечисления.ФормыОплаты.Наличная Тогда
РеквизитыОперации.Добавить("Контрагент");
РеквизитыОперации.Добавить("БанковскийСчетКонтрагента");
КонецЕсли;
Иначе
Если (ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВыдачаДенежныхСредствПодотчетнику
ИЛИ ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВыдачаЗаймаСотруднику)
И НепроверяемыеРеквизиты.Найти("Контрагент") = Неопределено Тогда
НепроверяемыеРеквизиты.Добавить("Контрагент");
КонецЕсли;
КонецЕсли;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеречислениеВБюджет
И Не ПолучитьФункциональнуюОпцию("ИспользоватьУчетПрочихАктивовПассивов") Тогда
НепроверяемыеРеквизиты.Добавить("РасшифровкаПлатежа.СтатьяРасходов");
КонецЕсли;
ДенежныеСредстваСервер.ПроверитьЗаполнениеПартнера(
ЭтотОбъект, ХозяйственнаяОперация, НепроверяемыеРеквизиты, РасшифровкаБезРазбиения, Отказ);
НепроверяемыеРеквизиты.Добавить("СтатьяРасходов");
Если ОтражатьКомиссию И СуммаКомиссии<>0 И Не ЗначениеЗаполнено(СтатьяРасходов) Тогда
Текст = НСтр("ru = 'Поле ""Статья расходов"" по эквайринговой комиссии не заполнено'");
ОбщегоНазначения.СообщитьПользователю(Текст, ЭтотОбъект, "СтатьяРасходов",, Отказ);
КонецЕсли;
Если Не СписокКонтрагентов Тогда
НепроверяемыеРеквизиты.Добавить("РасшифровкаПлатежа.Контрагент");
Иначе
Если ФормаОплатыЗаявки = Перечисления.ФормыОплаты.Наличная Тогда
НепроверяемыеРеквизиты.Добавить("Контрагент");
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(БанковскийСчет) Тогда
ДенежныеСредстваСервер.ПроверитьДоступностьБанковскогоСчета(ЭтотОбъект, БанковскийСчет, "БанковскийСчет");
КонецЕсли;
Если РаспределениеПоСчетам.Количество() <> 0
И ФормаОплатыЗаявки <> Перечисления.ФормыОплаты.Наличная Тогда
ДенежныеСредстваСервер.ПроверитьДоступностьБанковскогоСчетаТабличнойЧасти(
ЭтотОбъект, "РаспределениеПоСчетам", "БанковскийСчетКасса");
КонецЕсли;
Если ЗначениеЗаполнено(БанковскийСчетКонтрагента)
И РеквизитыОперации.Найти("БанковскийСчетКонтрагента") <> Неопределено Тогда
ДенежныеСредстваСервер.ПроверитьДоступностьБанковскогоСчета(
ЭтотОбъект, БанковскийСчетКонтрагента, "БанковскийСчетКонтрагента");
КонецЕсли;
Если ЗначениеЗаполнено(БанковскийСчетПолучатель)
И РеквизитыОперации.Найти("БанковскийСчетПолучатель") <> Неопределено Тогда
ДенежныеСредстваСервер.ПроверитьДоступностьБанковскогоСчета(
ЭтотОбъект, БанковскийСчетПолучатель, "БанковскийСчетПолучатель");
КонецЕсли;
Если ЗначениеЗаполнено(БанковскийСчетСписанияКомиссии)
И РеквизитыОперации.Найти("БанковскийСчетСписанияКомиссии") <> Неопределено Тогда
ДенежныеСредстваСервер.ПроверитьДоступностьБанковскогоСчета(
ЭтотОбъект, БанковскийСчетСписанияКомиссии, "БанковскийСчетСписанияКомиссии");
КонецЕсли;
ПараметрыВыбораСтатейИАналитик = Документы.ЗаявкаНаРасходованиеДенежныхСредств.ПараметрыВыбораСтатейИАналитик(ХозяйственнаяОперация);
ДоходыИРасходыСервер.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты, ПараметрыВыбораСтатейИАналитик);
ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, НепроверяемыеРеквизиты);
ДенежныеСредстваСервер.ПроверитьБанковскийСчетПолучатель(ЭтотОбъект, Отказ);
ДенежныеСредстваСервер.ПроверитьВалютуКонвертации(ЭтотОбъект, Отказ);
ПроверитьНаличиеОплатыЗаявки(Отказ);
ПроверитьДатыПогашения(Отказ);
ЗаявкаНаРасходованиеДенежныхСредствЛокализация.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
Если РасшифровкаБезРазбиения Тогда
ДенежныеСредстваСервер.ПроверитьЗаполнениеРасшифровкиБезРазбиения(
ЭтотОбъект, ПроверяемыеРеквизиты, "РасшифровкаПлатежа", "РасшифровкаБезРазбиения", Отказ);
КонецЕсли;
КонецПроцедуры
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);
ПроведениеДокументов.ПередЗаписьюДокумента(ЭтотОбъект, РежимЗаписи, РежимПроведения);
ДенежныеСредстваСервер.ПередЗаписью(ЭтотОбъект, Отказ);
ВзаиморасчетыСервер.ПередЗаписью(ЭтотОбъект, Отказ, РежимЗаписи);
НеиспользуемыеРеквизиты = Новый Массив;
МассивВсехРеквизитов = Новый Массив;
МассивРеквизитовОперации = Новый Массив;
Документы.ЗаявкаНаРасходованиеДенежныхСредств.ЗаполнитьИменаРеквизитовПоХозяйственнойОперации(
ЭтотОбъект, МассивВсехРеквизитов, МассивРеквизитовОперации);
Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
Если МассивРеквизитовОперации.Найти("РасшифровкаПлатежа.СуммаВзаиморасчетов") <> Неопределено Тогда
ВзаиморасчетыСервер.ЗаполнитьСуммуВзаиморасчетовВТабличнойЧасти(Валюта, Дата, РасшифровкаПлатежа, Организация);
КонецЕсли;
ДенежныеСредстваСервер.ЗаполнитьОрганизациюВТабличнойЧасти(РасшифровкаПлатежа, Организация, ХозяйственнаяОперация);
КонецЕсли;
Если ХозяйственнаяОперацияПоЗарплате = Перечисления.ХозяйственныеОперации.ВыплатаЗарплатыЧерезКассу Тогда
НеиспользуемыеРеквизиты.Добавить("Контрагент");
Если ЛицевыеСчетаСотрудников.Количество() <> 1 Тогда
НеиспользуемыеРеквизиты.Добавить("БанковскийСчетКонтрагента");
КонецЕсли;
ИначеЕсли ХозяйственнаяОперацияПоЗарплате = Перечисления.ХозяйственныеОперации.ВыплатаЗарплатыНаЛицевыеСчета Тогда
Если НЕ ПеречислениеСотрудникуЧерезБанк Тогда
НеиспользуемыеРеквизиты.Добавить("Контрагент");
Если ЛицевыеСчетаСотрудников.Количество() <> 1 Тогда
НеиспользуемыеРеквизиты.Добавить("БанковскийСчетКонтрагента");
КонецЕсли;
КонецЕсли;
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВыдачаЗаймаСотруднику
И Не ПолучитьФункциональнуюОпцию("ИспользоватьНачислениеЗарплатыУТ") Тогда
РасшифровкаПлатежа.Очистить();
КонецЕсли;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВыдачаДенежныхСредствПодотчетнику Тогда
Если СписокФизЛиц Тогда
НеиспользуемыеРеквизиты.Добавить("ПодотчетноеЛицо");
Если НЕ ЗначениеЗаполнено(Контрагент) Тогда
НеиспользуемыеРеквизиты.Добавить("БанковскийСчетКонтрагента");
КонецЕсли;
РасшифровкаПлатежа.Очистить();
Иначе
ЛицевыеСчетаСотрудников.Очистить();
КонецЕсли;
Если ФормаОплатыЗаявки = Перечисления.ФормыОплаты.Наличная Тогда
НеиспользуемыеРеквизиты.Добавить("Контрагент");
НеиспользуемыеРеквизиты.Добавить("БанковскийСчетКонтрагента");
КонецЕсли;
Иначе
НеиспользуемыеРеквизиты.Добавить("СписокФизЛиц");
КонецЕсли;
Если ФормаОплатыЗаявки = Перечисления.ФормыОплаты.Наличная Тогда
НеиспользуемыеРеквизиты.Добавить("БанковскийСчетКонтрагента");
КонецЕсли;
Если ПеречислениеСотрудникуЧерезБанк Тогда
Если ФормаОплатыЗаявки <> Перечисления.ФормыОплаты.Наличная Тогда
МассивРеквизитовОперации.Добавить("Контрагент");
МассивРеквизитовОперации.Добавить("БанковскийСчетКонтрагента");
КонецЕсли;
Иначе
Если (ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВыдачаДенежныхСредствПодотчетнику
ИЛИ ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВыдачаЗаймаСотруднику)
И НеиспользуемыеРеквизиты.Найти("Контрагент") = Неопределено Тогда
НеиспользуемыеРеквизиты.Добавить("Контрагент");
КонецЕсли;
КонецЕсли;
Если МассивРеквизитовОперации.Найти("РасшифровкаПлатежа.Контрагент") <> Неопределено Тогда
ДенежныеСредстваСервер.ЗаполнитьКонтрагентаРасшифровкиПлатежаБезСпискаКонтрагентов(ЭтотОбъект, РасшифровкаПлатежа);
КонецЕсли;
Если МассивРеквизитовОперации.Найти("РасшифровкаПлатежа.Партнер") <> Неопределено Тогда
ДенежныеСредстваСервер.ЗаполнитьПартнераРасшифровкиПлатежа(ЭтотОбъект, РасшифровкаПлатежа);
КонецЕсли;
Если СписокКонтрагентов
И ЗначениеЗаполнено(Договор) Тогда
НеиспользуемыеРеквизиты.Добавить("Договор");
КонецЕсли;
Для каждого НеиспользуемыйРеквизит Из НеиспользуемыеРеквизиты Цикл
УдаляемыйРеквизит = МассивРеквизитовОперации.Найти(НеиспользуемыйРеквизит);
Если УдаляемыйРеквизит <> Неопределено Тогда
МассивРеквизитовОперации.Удалить(УдаляемыйРеквизит);
КонецЕсли;
КонецЦикла;
ДенежныеСредстваСервер.ОчиститьНеиспользуемыеРеквизиты(ЭтотОбъект, МассивВсехРеквизитов, МассивРеквизитовОперации);
ДенежныеСредстваСервер.ОчиститьНеиспользуемыеРеквизитыФормыОплаты(ЭтотОбъект, ФормаОплатыЗаявки, Истина);
Если ПланированиеСуммы <> Перечисления.СпособыПланированияОплатыЗаявок.ВВалютеВзаиморасчетов Тогда
ПлатежСКонвертацией = ДенежныеСредстваСервер.ОпределитьПлатежСКонвертацией(ЭтотОбъект);
Иначе
ПлатежСКонвертацией = Ложь;
КонецЕсли;
Если РежимЗаписи = РежимЗаписиДокумента.Проведение
И ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВыплатаЗарплаты
И СтатьяАктивовПассивов <> ПланыВидовХарактеристик.СтатьиАктивовПассивов.ОплатаТруда Тогда
СтатьяАктивовПассивов = ПланыВидовХарактеристик.СтатьиАктивовПассивов.ПустаяСсылка();
АналитикаАктивовПассивов = Неопределено;
КонецЕсли;
Если ЛицевыеСчетаСотрудников.Количество() = 1
И (ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВыплатаЗарплаты
И ХозяйственнаяОперацияПоЗарплате = Перечисления.ХозяйственныеОперации.ВыплатаЗарплатыНаЛицевыеСчета
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВыдачаДенежныхСредствПодотчетнику
И СписокФизЛиц)
И НЕ ЗначениеЗаполнено(Контрагент) Тогда
БанковскийСчетКонтрагента = ЛицевыеСчетаСотрудников[0].ЛицевойСчет;
КонецЕсли;
Если РаспределениеПоСчетам.Количество() Тогда
ДатыПлатежей = РаспределениеПоСчетам.Выгрузить(,"ДатаПлатежа");
ДатыПлатежей.Сортировать("ДатаПлатежа");
ДатаПлатежа = ДатыПлатежей[0].ДатаПлатежа;
Иначе
ДатаПлатежа = ЖелательнаяДатаПлатежа;
КонецЕсли;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВыдачаДенежныхСредствПодотчетнику
И СписокФизЛиц Тогда
МассивСтатейДДС = ОбщегоНазначенияУТ.УдалитьПовторяющиесяЭлементыМассива(
ЛицевыеСчетаСотрудников.ВыгрузитьКолонку("СтатьяДвиженияДенежныхСредств"));
Иначе
МассивСтатейДДС = ОбщегоНазначенияУТ.УдалитьПовторяющиесяЭлементыМассива(
РасшифровкаПлатежа.ВыгрузитьКолонку("СтатьяДвиженияДенежныхСредств"));
КонецЕсли;
Если МассивСтатейДДС.Количество() = 1 Тогда
СтатьяДвиженияДенежныхСредств = МассивСтатейДДС[0];
ИначеЕсли МассивСтатейДДС.Количество() > 1 Тогда
СтатьяДвиженияДенежныхСредств = Неопределено;
КонецЕсли;
ТаблицаРаспределения = РаспределениеПоСчетам.Выгрузить();
ТаблицаРаспределения.Свернуть("БанковскийСчетКасса, ДатаПлатежа", "Сумма");
РаспределениеПоСчетам.Загрузить(ТаблицаРаспределения);
РаспределениеПоСчетам.Сортировать("ДатаПлатежа");
КонтролироватьОплатуПоОбъектамРасчетов = Документы.ЗаявкаНаРасходованиеДенежныхСредств.КонтролироватьОплатуПоОбъектамРасчетов(
ХозяйственнаяОперация,
РасшифровкаПлатежа.ВыгрузитьКолонку("ОбъектРасчетов"));
НастройкаСчетовУчетаСервер.ПередЗаписью(ЭтотОбъект,
Документы.ЗаявкаНаРасходованиеДенежныхСредств.ПараметрыНастройкиСчетовУчета(ХозяйственнаяОперация, ТипНалога));
ПараметрыВыбораСтатейИАналитик = Документы.ЗаявкаНаРасходованиеДенежныхСредств.ПараметрыВыбораСтатейИАналитик(ХозяйственнаяОперация);
ДоходыИРасходыСервер.ПередЗаписью(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
ЗаявкаНаРасходованиеДенежныхСредствЛокализация.ПередЗаписью(ЭтотОбъект, Отказ, РежимЗаписи, РежимПроведения);
Если Не ЗначениеЗаполнено(Автор) И ЭтоНовый() Тогда
Автор = Пользователи.ТекущийПользователь();
КонецЕсли;
КонецПроцедуры
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
ПроведениеДокументов.ОбработкаПроведенияДокумента(ЭтотОбъект, Отказ);
ЗаявкаНаРасходованиеДенежныхСредствЛокализация.ОбработкаПроведения(ЭтотОбъект, Отказ, РежимПроведения);
КонецПроцедуры
Процедура ОбработкаУдаленияПроведения(Отказ)
ПроведениеДокументов.ОбработкаУдаленияПроведенияДокумента(ЭтотОбъект, Отказ);
ЗаявкаНаРасходованиеДенежныхСредствЛокализация.ОбработкаУдаленияПроведения(ЭтотОбъект, Отказ);
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
ПроведениеДокументов.ПриЗаписиДокумента(ЭтотОбъект, Отказ);
ЗаявкаНаРасходованиеДенежныхСредствЛокализация.ПриЗаписи(ЭтотОбъект, Отказ);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ИнициализацияИЗаполнение
Процедура ЗаполнитьРеквизитыПоРезультатуЗапроса(ДокументОснование, РезультатЗапроса, ДанныеЗаполнения, ЗаполнениеПоДоговору = Ложь, СуммаКОплате = Неопределено) Экспорт
Если РезультатЗапроса.Пустой() Тогда
Если ЗаполнениеПоДоговору Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не требуется вводить Заявку на расходование ДС на основании договора %1'"),
ДокументОснование);
Иначе
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не требуется вводить Заявку на расходование ДС на основании документа %1'"),
ДокументОснование);
КонецЕсли;
ВызватьИсключение Текст;
Иначе
ДанныеЗаполнения = Новый Структура;
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
ДанныеЗаполнения.Вставить("ЖелательнаяДатаПлатежа");
ДанныеЗаполнения.Вставить("ИдентификаторПлатежа");
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(Выборка, "ТипДоговора")
И ДенежныеСредстваСервер.ТипыДоговоровОплатыПоставщику().Найти(Выборка.ТипДоговора) = Неопределено
И ДенежныеСредстваСервер.ТипыДоговоровВозвратаВозмещения().Найти(Выборка.ТипДоговора) = Неопределено Тогда
ВызватьИсключение ДенежныеСредстваСервер.ТекстОбИсключенииОплатыПоДоговору(
Метаданные().Синоним,
Выборка.ТипДоговора);
КонецЕсли;
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
Если Не ЗначениеЗаполнено(ДанныеЗаполнения.ФормаОплатыЗаявки) Тогда
ДанныеЗаполнения.ФормаОплатыНаличная = Истина;
ДанныеЗаполнения.ФормаОплатыБезналичная = Истина;
КонецЕсли;
ДенежныеСредстваСервер.ЗаполнитьРеквизитыДокументаПоФормеОплаты(ДанныеЗаполнения.ФормаОплатыЗаявки, ДанныеЗаполнения);
Если Не ЗначениеЗаполнено(ДанныеЗаполнения.БанковскийСчетКонтрагента) Тогда
Если ЗначениеЗаполнено(ДанныеЗаполнения.Валюта) Тогда
БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьБанковскийСчетПоУмолчанию(
ДанныеЗаполнения.Контрагент,
ДанныеЗаполнения.Валюта);
Иначе
БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьБанковскийСчетПоУмолчанию(
ДанныеЗаполнения.Контрагент);
КонецЕсли;
КонецЕсли;
РеквизитыСчета = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьРеквизитыБанковскогоСчета(
БанковскийСчетКонтрагента);
НазначениеПлатежа = РеквизитыСчета.ТекстНазначения;
ЗаказыПоставщику = ДокументОснование;
Если ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ПриобретениеТоваровУслуг") Тогда
Запрос = Новый Запрос("
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаТовары.ЗаказПоставщику КАК ЗаказПоставщику
|ИЗ
| Документ.ПриобретениеТоваровУслуг.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.Ссылка.ПоступлениеПоЗаказам
| И ТаблицаТовары.Ссылка.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным)
| И ТаблицаТовары.Ссылка.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамНакладным)
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапросаПоЗаказам = Запрос.Выполнить();
Если НЕ РезультатЗапросаПоЗаказам.Пустой() Тогда
ЗаказыПоставщику = РезультатЗапросаПоЗаказам.Выгрузить().ВыгрузитьКолонку("ЗаказПоставщику");
ЗаказыПоставщику.Добавить(ДокументОснование);
КонецЕсли;
ИначеЕсли ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ОтчетПереработчика") Тогда
Запрос = Новый Запрос("
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаТовары.ЗаказПереработчику КАК ЗаказПереработчику
|ИЗ
| Документ.ОтчетПереработчика.Продукция КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.Ссылка.ПоЗаказам
| И ТаблицаТовары.Ссылка.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным)
| И ТаблицаТовары.Ссылка.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамНакладным)
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапросаПоЗаказам = Запрос.Выполнить();
Если НЕ РезультатЗапросаПоЗаказам.Пустой() Тогда
ЗаказыПоставщику = РезультатЗапросаПоЗаказам.Выгрузить().ВыгрузитьКолонку("ЗаказПереработчику");
ЗаказыПоставщику.Добавить(ДокументОснование);
КонецЕсли;
ИначеЕсли ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ОтчетПереработчика2_5") Тогда
Запрос = Новый Запрос("
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаТовары.ЗаказПереработчику КАК ЗаказПереработчику
|ИЗ
| Документ.ОтчетПереработчика2_5.ВыходныеИзделия КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.Ссылка.ПоЗаказам
| И ТаблицаТовары.Ссылка.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным)
| И ТаблицаТовары.Ссылка.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамНакладным)
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапросаПоЗаказам = Запрос.Выполнить();
Если НЕ РезультатЗапросаПоЗаказам.Пустой() Тогда
ЗаказыПоставщику = РезультатЗапросаПоЗаказам.Выгрузить().ВыгрузитьКолонку("ЗаказПереработчику");
ЗаказыПоставщику.Добавить(ДокументОснование);
КонецЕсли;
ИначеЕсли ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ПоступлениеУслугПоАренде") Тогда
Возврат;
ИначеЕсли ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.АктПремииКлиенту") Тогда
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(Выборка.Договор) Тогда
РеквизитыДоговора = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
Выборка.Договор, "ГрафикИсполненияДоговора, ИдентификаторПлатежа");
Если ЗначениеЗаполнено(РеквизитыДоговора.ГрафикИсполненияДоговора) Тогда
ЗаказыПоставщику = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Выборка.Договор);
ЗаказыПоставщику.Добавить(ДокументОснование);
КонецЕсли;
Если Не ЗначениеЗаполнено(ДанныеЗаполнения.ИдентификаторПлатежа) Тогда
ДанныеЗаполнения.ИдентификаторПлатежа = РеквизитыДоговора.ИдентификаторПлатежа;
КонецЕсли;
Иначе
ГрафикИсполненияДоговора = Неопределено;
КонецЕсли;
Если ЗаполнениеПоДоговору И Не ЗначениеЗаполнено(ГрафикИсполненияДоговора) Тогда
Если Выборка.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов
ИЛИ Выборка.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамНакладным Тогда
ВзаиморасчетыСервер.ЗаполнитьРасшифровкуПлатежаПоДоговоруСПоставщиком(
ДокументОснование, ДанныеЗаполнения.Валюта, РасшифровкаПлатежа, Выборка.Организация);
Иначе
СтрокаРасшифровки = РасшифровкаПлатежа.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаРасшифровки, Выборка);
КонецЕсли;
Иначе
ВзаиморасчетыСервер.ЗаполнитьРасшифровкуПлатежаПоЗаказуПоставщику(
ЗаказыПоставщику,
Выборка.Договор,
ДанныеЗаполнения.Валюта,
?(СуммаКОплате = Неопределено, ?(ДанныеЗаполнения.Свойство("Сумма"), ДанныеЗаполнения.Сумма, 0), СуммаКОплате),
РасшифровкаПлатежа,
?(ЗначениеЗаполнено(ДанныеЗаполнения.ЖелательнаяДатаПлатежа), Неопределено, ДанныеЗаполнения.ЖелательнаяДатаПлатежа));
КонецЕсли;
КонецЕсли;
СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма");
КонецПроцедуры
Процедура ЗаполнитьПоЗаказуПоставщику(Знач ДокументОснование, ДанныеЗаполнения)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчет <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчет.Владелец
| КОГДА ДанныеДокумента.Касса <> ЗНАЧЕНИЕ(Справочник.Кассы.ПустаяСсылка) ТОГДА
| ДанныеДокумента.Касса.Владелец
| ИНАЧЕ
| ДанныеДокумента.Организация
| КОНЕЦ КАК Организация,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Договор КАК Договор,
| ЕСТЬNULL(ДанныеДокумента.Договор.ПлатежиПо275ФЗ, Ложь) КАК ПлатежиПо275ФЗ,
| ЕСТЬNULL(ДанныеДокумента.Договор.ДоговорСУчастникомГОЗ, Ложь) КАК ДоговорСУчастникомГОЗ,
| ЕСТЬNULL(ДанныеДокумента.Договор.ОплатаРасходовПоТарифамСГосрегулированием, Ложь) КАК ОплатаРасходовПоТарифамСГосрегулированием,
| ДанныеДокумента.Приоритет КАК Приоритет,
| ДанныеДокумента.Валюта КАК ВалютаВзаиморасчетов,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Наличная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыНаличная,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Безналичная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыБезналичная,
| ДанныеДокумента.ФормаОплаты КАК ФормаОплатыЗаявки,
|
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчет <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчет
| ИНАЧЕ
| ДанныеДокумента.Договор.БанковскийСчет
| КОНЕЦ КАК БанковскийСчет,
|
| ДанныеДокумента.Касса КАК Касса,
| ДанныеДокумента.Договор.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента,
| ДанныеДокумента.ИдентификаторПлатежа КАК ИдентификаторПлатежа,
|
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчет <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчет.ВалютаДенежныхСредств
| КОГДА ДанныеДокумента.Касса <> ЗНАЧЕНИЕ(Справочник.Кассы.ПустаяСсылка) ТОГДА
| ДанныеДокумента.Касса.ВалютаДенежныхСредств
| ИНАЧЕ
| ЕСТЬNULL(ДанныеДокумента.Договор.БанковскийСчет.ВалютаДенежныхСредств, ДанныеДокумента.Валюта)
| КОНЕЦ КАК Валюта,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику) КАК ХозяйственнаяОперация,
| ДанныеДокумента.ОперацияССамозанятым КАК ОперацияССамозанятым,
| &Ссылка КАК ДокументОснование
|ИЗ
| Документ.ЗаказПоставщику КАК ДанныеДокумента
|
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И НЕ ДанныеДокумента.ХозяйственнаяОперация В(
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПриемНаКомиссию),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПриемНаХранениеСПравомПродажи))
| И ДанныеДокумента.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоНакладным)
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
ЗаполнитьРеквизитыПоРезультатуЗапроса(ДокументОснование, РезультатЗапроса, ДанныеЗаполнения);
КонецПроцедуры
Процедура ЗаполнитьПоАвансовомуОтчету(Знач ДокументОснование, ДанныеЗаполнения)
ТекстЗапроса = "
|ВЫБРАТЬ
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыдачаДенежныхСредствПодотчетнику) КАК ХозяйственнаяОперация,
| ДанныеДокумента.Организация КАК Организация,
| ЕСТЬNULL(ДенежныеСредства.Валюта,ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) КАК Валюта,
| ЕСТЬNULL(ДенежныеСредства.Валюта,ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.ПодотчетноеЛицо КАК ПодотчетноеЛицо,
| ДанныеДокумента.ПодотчетноеЛицо.Наименование КАК Выдать,
| ДанныеДокумента.Ссылка КАК АвансовыйОтчет,
| ПРЕДСТАВЛЕНИЕ(ДанныеДокумента.Ссылка) КАК Основание,
| ДенежныеСредства.ЦельВыдачи КАК СтатьяДвиженияДенежныхСредств,
| ЕСТЬNULL(-ДенежныеСредства.СуммаОстаток,0) КАК Сумма,
| ЕСТЬNULL(-ДенежныеСредства.СуммаОстаток,0) КАК СуммаВзаиморасчетов,
| ЕСТЬNULL(-ДенежныеСредства.СуммаОстаток,0) КАК СуммаДокумента,
| &Ссылка КАК ДокументОснование
|ИЗ
| Документ.АвансовыйОтчет КАК ДанныеДокумента
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрНакопления.ДенежныеСредстваУПодотчетныхЛиц.Остатки(, ) КАК ДенежныеСредства
| ПО
| ДенежныеСредства.Организация = ДанныеДокумента.Организация
| И ДенежныеСредства.ПодотчетноеЛицо = ДанныеДокумента.ПодотчетноеЛицо
| И ДенежныеСредства.СуммаОстаток < 0
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|";
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
УстановитьПривилегированныйРежим(Истина);
РезультатЗапроса = Запрос.Выполнить();
УстановитьПривилегированныйРежим(Ложь);
ДанныеЗаполнения = Новый Структура;
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
ВалютаДокумента = Неопределено;
Пока Выборка.Следующий() Цикл
Если ВалютаДокумента = Неопределено Тогда
ВалютаДокумента = Выборка.Валюта;
КонецЕсли;
Если ВалютаДокумента = Выборка.Валюта Тогда
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
ВалютыПолучателя = Новый Массив;
ВалютыПолучателя.Добавить(Неопределено);
ВалютыПолучателя.Добавить(Выборка.Валюта);
Если ВалютыПолучателя.Найти(ДанныеЗаполнения.Валюта) = Неопределено Тогда
ВалютыПолучателя.Добавить(ДанныеЗаполнения.Валюта);
КонецЕсли;
ДенежныеСредстваСервер.БанковскийСчетКонтрагентаПоУмолчанию(
БанковскийСчетКонтрагента, ДанныеЗаполнения.ПодотчетноеЛицо, ВалютыПолучателя);
РеквизитыСчета = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьРеквизитыБанковскогоСчета(БанковскийСчетКонтрагента);
НазначениеПлатежа = РеквизитыСчета.ТекстНазначения;
НоваяСтрока = РасшифровкаПлатежа.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ЗаполнитьПоВозвратуТоваровОтКлиента(Знач ДокументОснование, ДанныеЗаполнения)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.ЗаявкаНаВозвратТоваровОтКлиента КАК ЗаявкаНаВозвратТоваровОтКлиента,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.СуммаДокумента КАК Сумма,
|
| ВЫБОР КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя) ТОГДА
| ЛОЖЬ
| ИНАЧЕ
| ИСТИНА
| КОНЕЦ КАК ФормаОплатыБезналичная,
|
| ВЫБОР КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Наличная)
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.ПустаяСсылка)
| КОНЕЦ КАК ФормаОплатыЗаявки,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОплатыКлиенту) КАК ХозяйственнаяОперация,
| ДанныеДокумента.СпособКомпенсации КАК СпособКомпенсации,
| ДанныеДокумента.ИдентификаторПлатежа КАК ИдентификаторПлатежа,
| &Ссылка КАК ДокументОснование,
| ДанныеДокумента.КлиентДоговор КАК КлиентДоговор,
| ВЫБОР
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровЧерезКомиссионера)
| И ДанныеДокумента.Договор.ВестиРасчетыЧерезКонечныхПокупателей
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ИспользоватьДоговорСКлиентом
|ИЗ
| Документ.ВозвратТоваровОтКлиента КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера)
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не требуется вводить заявку на основании документа %1'"),
ДокументОснование);
ВызватьИсключение Текст;
Иначе
ДанныеЗаполнения = Новый Структура;
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
Если ЗначениеЗаполнено(ДанныеЗаполнения.Договор) Тогда
БанковскийСчетКонтрагента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДанныеЗаполнения.Договор, "БанковскийСчетКонтрагента");
Иначе
БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьБанковскийСчетПоУмолчанию(
ДанныеЗаполнения.Контрагент,
ДанныеЗаполнения.Валюта);
КонецЕсли;
РеквизитыСчета = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьРеквизитыБанковскогоСчета(БанковскийСчетКонтрагента);
НазначениеПлатежа = РеквизитыСчета.ТекстНазначения;
ОбъектыРасчетов = Новый Массив;
Если Выборка.СпособКомпенсации = Перечисления.СпособыКомпенсацииВозвратовТоваров.ВернутьДенежныеСредства Тогда
ОбъектыРасчетов.Добавить(ДокументОснование);
Иначе
ОбъектыРасчетов.Добавить(Неопределено);
КонецЕсли;
Если ЗначениеЗаполнено(Выборка.ЗаявкаНаВозвратТоваровОтКлиента) Тогда
ОбъектыРасчетов.Добавить(Выборка.ЗаявкаНаВозвратТоваровОтКлиента);
КонецЕсли;
Если Выборка.ИспользоватьДоговорСКлиентом Тогда
ОбъектыРасчетов.Добавить(Выборка.КлиентДоговор);
Иначе
ОбъектыРасчетов.Добавить(Выборка.Договор);
КонецЕсли;
ВзаиморасчетыСервер.ЗаполнитьРасшифровкуПлатежаПоВозвратуТоваровОтКлиента(
ОбъектыРасчетов,
ДанныеЗаполнения.Организация,
ДанныеЗаполнения.Валюта,
ДанныеЗаполнения.Сумма,
ДанныеЗаполнения.Партнер,
РасшифровкаПлатежа);
КонецЕсли;
СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма");
КонецПроцедуры
Процедура ЗаполнитьПоЗаявкеНаВозвратТоваровОтКлиента(Знач ДокументОснование, ДанныеЗаполнения)
ТекстЗапроса = "
|ВЫБРАТЬ
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчет <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчет.Владелец
| КОГДА ДанныеДокумента.Касса <> ЗНАЧЕНИЕ(Справочник.Кассы.ПустаяСсылка) ТОГДА
| ДанныеДокумента.Касса.Владелец
| ИНАЧЕ
| ДанныеДокумента.Организация
| КОНЕЦ КАК Организация,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Приоритет КАК Приоритет,
| ДанныеДокумента.Контрагент КАК Контрагент,
| &ОбъектРасчетов КАК ОбъектРасчетов,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.Валюта КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.ПорядокРасчетов КАК ПорядокРасчетов,
| ДанныеДокумента.СуммаДокумента - ДанныеДокумента.СуммаЗамены КАК Сумма,
| ДанныеДокумента.СуммаДокумента - ДанныеДокумента.СуммаЗамены КАК СуммаВзаиморасчетов,
| НЕ ДанныеДокумента.Проведен КАК ЕстьОшибкиПроведен,
| ДанныеДокумента.Статус КАК СтатусДокумента,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОплатыКлиенту) КАК ХозяйственнаяОперация,
| &Ссылка КАК ДокументОснование,
|
| ВЫБОР КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя) ТОГДА
| ЛОЖЬ
| ИНАЧЕ
| ИСТИНА
| КОНЕЦ КАК ФормаОплатыБезналичная,
|
| ВЫБОР КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Наличная)
| ИНАЧЕ
| Неопределено
| КОНЕЦ КАК ФормаОплатыЗаявки,
| Неопределено КАК Касса,
| ДанныеДокумента.БанковскийСчет КАК БанковскийСчет
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|";
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
Если ДокументОснование.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов Тогда
ДоговорОснования = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументОснование, "Договор");
ОснованиеРасчетов = ОбъектыРасчетовСервер.ПолучитьОбъектРасчетовПоСсылке(ДоговорОснования);
Иначе
ОснованиеРасчетов = ОбъектыРасчетовСервер.ПолучитьОбъектРасчетовПоСсылке(ДокументОснование);
КонецЕсли;
Запрос.УстановитьПараметр("ОбъектРасчетов", ОснованиеРасчетов);
РезультатЗапроса = Запрос.Выполнить();
ДанныеЗаполнения = Новый Структура;
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
Документы.ЗаявкаНаВозвратТоваровОтКлиента.ПроверитьВозможностьВводаНаОсновании(
Выборка.ДокументОснование,
Выборка.СтатусДокумента,
Выборка.ЕстьОшибкиПроведен,
Истина);
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьБанковскийСчетПоУмолчанию(
ДанныеЗаполнения.Контрагент,
ДанныеЗаполнения.Валюта);
РеквизитыСчета = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьРеквизитыБанковскогоСчета(БанковскийСчетКонтрагента);
НазначениеПлатежа = РеквизитыСчета.ТекстНазначения;
ДенежныеСредстваСервер.ЗаполнитьРеквизитыДокументаПоФормеОплаты(ДанныеЗаполнения.ФормаОплатыЗаявки, ДанныеЗаполнения);
Если Выборка.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоЗаказам Тогда
ОбъектыРасчетов = Новый Массив;
ОбъектыРасчетов.Добавить(ДокументОснование);
ВзаиморасчетыСервер.ЗаполнитьРасшифровкуПлатежаПоВозвратуТоваровОтКлиента(
ОбъектыРасчетов,
ДанныеЗаполнения.Организация,
ДанныеЗаполнения.Валюта,
ДанныеЗаполнения.Сумма,
ДанныеЗаполнения.Партнер,
РасшифровкаПлатежа);
Иначе
НоваяСтрока = РасшифровкаПлатежа.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
КонецЕсли;
СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма");
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьПоПоступлениюТоваровУслуг(Знач ДокументОснование, ДанныеЗаполнения)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчетОрганизации <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчетОрганизации.Владелец
| ИНАЧЕ
| ДанныеДокумента.Организация
| КОНЕЦ КАК Организация,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Договор КАК Договор,
| ЕСТЬNULL(ДанныеДокумента.Договор.ПлатежиПо275ФЗ, Ложь) КАК ПлатежиПо275ФЗ,
| ЕСТЬNULL(ДанныеДокумента.Договор.ДоговорСУчастникомГОЗ, Ложь) КАК ДоговорСУчастникомГОЗ,
| ЕСТЬNULL(ДанныеДокумента.Договор.ОплатаРасходовПоТарифамСГосрегулированием, Ложь) КАК ОплатаРасходовПоТарифамСГосрегулированием,
| ДанныеДокумента.БанковскийСчетОрганизации КАК БанковскийСчет,
| ДанныеДокумента.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента,
| НЕОПРЕДЕЛЕНО КАК Касса,
|
| ЕСТЬNULL(ОбъектыРасчетов.Ссылка, ЗНАЧЕНИЕ(Справочник.ОбъектыРасчетов.ПустаяСсылка)) КАК ОбъектРасчетов,
|
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчетОрганизации <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчетОрганизации.ВалютаДенежныхСредств
| ИНАЧЕ
| ДанныеДокумента.Валюта
| КОНЕЦ КАК Валюта,
|
| ДанныеДокумента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| ДанныеДокумента.СуммаДокумента КАК Сумма,
| ДанныеДокумента.ФормаОплаты КАК ФормаОплатыЗаявки,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Наличная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыНаличная,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Безналичная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыБезналичная,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику) КАК ХозяйственнаяОперация,
| ДанныеДокумента.ОперацияССамозанятым КАК ОперацияССамозанятым,
| ДанныеДокумента.ИдентификаторПлатежа КАК ИдентификаторПлатежа,
| &Ссылка КАК ДокументОснование
|ИЗ
| Документ.ПриобретениеТоваровУслуг КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриобретениеТоваровУслуг.ЭтапыГрафикаОплаты КАК ЭтапыОплаты
| ПО ДанныеДокумента.Ссылка = ЭтапыОплаты.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ОбъектыРасчетов КАК ОбъектыРасчетов
| ПО ВЫБОР КОГДА ДанныеДокумента.ЗаказПоставщику = ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)
| ТОГДА &Ссылка
| ИНАЧЕ ДанныеДокумента.ЗаказПоставщику
| КОНЕЦ = ОбъектыРасчетов.Объект
| И НЕ ОбъектыРасчетов.ПометкаУдаления
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И (ДанныеДокумента.ХозяйственнаяОперация В (&ХозОперацииЗакупкаУПоставщика)
| ИЛИ ДанныеДокумента.ХозяйственнаяОперация В (&ХозОперацииЗакупкаПоИмпорту)
| ИЛИ ДанныеДокумента.ХозяйственнаяОперация В (&ХозОперацииЗакупкаВСтранахЕАЭС)
| ИЛИ ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаРеглУчет))
|СГРУППИРОВАТЬ ПО
| ДанныеДокумента.Ссылка,
| ОбъектыРасчетов.Ссылка
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
Запрос.УстановитьПараметр("ХозОперацииЗакупкаУПоставщика",
ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика));
Запрос.УстановитьПараметр("ХозОперацииЗакупкаПоИмпорту",
ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпорту));
Запрос.УстановитьПараметр("ХозОперацииЗакупкаВСтранахЕАЭС",
ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭС));
РезультатЗапроса = Запрос.Выполнить();
ЗаполнитьРеквизитыПоРезультатуЗапроса(ДокументОснование, РезультатЗапроса, ДанныеЗаполнения,, 0);
КонецПроцедуры
Процедура ЗаполнитьПоПоступлениюУслугПоАренде(Знач ДокументОснование, ДанныеЗаполнения)
ТекстЗапроса = Документы.ПоступлениеУслугПоАренде.ПолучитьТекстДляЗаполненияНаОсновании();
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
ЗаполнитьРеквизитыПоРезультатуЗапроса(ДокументОснование, РезультатЗапроса, ДанныеЗаполнения,, 0);
Документы.ПоступлениеУслугПоАренде.ЗаполнитьРасшифровкуПоПоступлениюУслугПоАренде(ЭтотОбъект, РезультатЗапроса, ДанныеЗаполнения);
КонецПроцедуры
Процедура ЗаполнитьПоПоступлениюУслугИВнеоборотныхАктивов(Знач ДокументОснование, ДанныеЗаполнения)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчетОрганизации <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчетОрганизации.Владелец
| ИНАЧЕ
| ДанныеДокумента.Организация
| КОНЕЦ КАК Организация,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Договор КАК Договор,
| ЕСТЬNULL(ОбъектыРасчетов.Ссылка, ЗНАЧЕНИЕ(Справочник.ОбъектыРасчетов.ПустаяСсылка)) КАК ОбъектРасчетов,
| ДанныеДокумента.БанковскийСчетОрганизации КАК БанковскийСчет,
| ДанныеДокумента.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента,
| НЕОПРЕДЕЛЕНО КАК Касса,
|
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчетОрганизации <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчетОрганизации.ВалютаДенежныхСредств
| ИНАЧЕ
| ДанныеДокумента.Валюта
| КОНЕЦ КАК Валюта,
|
| ДанныеДокумента.ДатаПлатежа КАК ЖелательнаяДатаПлатежа,
| ДанныеДокумента.ФормаОплаты КАК ФормаОплатыЗаявки,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Наличная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыНаличная,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Безналичная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыБезналичная,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику) КАК ХозяйственнаяОперация,
| ДанныеДокумента.ОперацияССамозанятым КАК ОперацияССамозанятым,
| ДанныеДокумента.ИдентификаторПлатежа КАК ИдентификаторПлатежа,
| &Ссылка КАК ДокументОснование
|ИЗ
| Документ.ПриобретениеУслугПрочихАктивов КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ОбъектыРасчетов КАК ОбъектыРасчетов
| ПО &Ссылка = ОбъектыРасчетов.Объект
| И НЕ ОбъектыРасчетов.ПометкаУдаления
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
ЗаполнитьРеквизитыПоРезультатуЗапроса(ДокументОснование, РезультатЗапроса, ДанныеЗаполнения);
КонецПроцедуры
Процедура ЗаполнитьПоОтчетуКомитенту(Знач ДокументОснование, ДанныеЗаполнения)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчет <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчет.Владелец
| КОГДА ДанныеДокумента.Касса <> ЗНАЧЕНИЕ(Справочник.Кассы.ПустаяСсылка) ТОГДА
| ДанныеДокумента.Касса.Владелец
| ИНАЧЕ
| ДанныеДокумента.Организация
| КОНЕЦ КАК Организация,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.Валюта КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.Подразделение КАК Подразделение,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Наличная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыНаличная,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Безналичная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыБезналичная,
| ДанныеДокумента.ФормаОплаты КАК ФормаОплатыЗаявки,
| ДанныеДокумента.БанковскийСчет КАК БанковскийСчет,
| ДанныеДокумента.Касса КАК Касса,
| ДанныеДокумента.Договор.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента,
| ДанныеДокумента.ИдентификаторПлатежа КАК ИдентификаторПлатежа,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику) КАК ХозяйственнаяОперация,
| &Ссылка КАК ДокументОснование
|ИЗ
| Документ.ОтчетКомитенту КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
ЗаполнитьРеквизитыПоРезультатуЗапроса(ДокументОснование, РезультатЗапроса, ДанныеЗаполнения);
КонецПроцедуры
Процедура ЗаполнитьПоОтчетуКомитентуОСписании(Знач ДокументОснование, ДанныеЗаполнения)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.Валюта КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.Подразделение КАК Подразделение,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Наличная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыНаличная,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Безналичная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыБезналичная,
| ДанныеДокумента.ФормаОплаты КАК ФормаОплатыЗаявки,
| Неопределено КАК БанковскийСчет,
| Неопределено КАК Касса,
| ДанныеДокумента.Договор.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента,
| ДанныеДокумента.ИдентификаторПлатежа КАК ИдентификаторПлатежа,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику) КАК ХозяйственнаяОперация,
| &Ссылка КАК ДокументОснование
|ИЗ
| Документ.ОтчетКомитентуОСписании КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
ЗаполнитьРеквизитыПоРезультатуЗапроса(ДокументОснование, РезультатЗапроса,ДанныеЗаполнения);
КонецПроцедуры
Процедура ЗаполнитьПоОтчетуКомиссионера(Знач ДокументОснование, ДанныеЗаполнения)
ТекстЗапроса = "
|ВЫБРАТЬ
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчет <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчет.Владелец
| КОГДА ДанныеДокумента.Касса <> ЗНАЧЕНИЕ(Справочник.Кассы.ПустаяСсылка) ТОГДА
| ДанныеДокумента.Касса.Владелец
| ИНАЧЕ
| ДанныеДокумента.Организация
| КОНЕЦ КАК Организация,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.Валюта КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.ДатаПлатежа КАК ЖелательнаяДатаПлатежа,
| ДанныеДокумента.ФормаОплаты КАК ФормаОплатыЗаявки,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Наличная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыНаличная,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Безналичная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыБезналичная,
|
| ДанныеДокумента.БанковскийСчет КАК БанковскийСчет,
| ДанныеДокумента.Касса КАК Касса,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику) КАК ХозяйственнаяОперация,
| ДанныеДокумента.СуммаВознаграждения КАК Сумма,
| &Ссылка КАК ДокументОснование
|ИЗ
| Документ.ОтчетКомиссионера КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.СуммаВознаграждения > 0
| И НЕ ДанныеДокумента.УдержатьВознаграждение
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.Валюта КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.ДатаПлатежа КАК ЖелательнаяДатаПлатежа,
| ДанныеДокумента.ФормаОплаты КАК ФормаОплатыЗаявки,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Наличная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыНаличная,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Безналичная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыБезналичная,
|
| Неопределено КАК БанковскийСчет,
| Неопределено КАК Касса,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОплатыКлиенту) КАК ХозяйственнаяОперация,
| -ДанныеДокумента.СуммаДокумента КАК Сумма,
| &Ссылка КАК ДокументОснование
|ИЗ
| Документ.ОтчетКомиссионера КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.СуммаДокумента < 0
|";
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не требуется вводить заявку на основании документа %1'"),
ДокументОснование);
ВызватьИсключение Текст;
Иначе
ДанныеЗаполнения = Новый Структура;
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
Если Не ЗначениеЗаполнено(ДанныеЗаполнения.ФормаОплатыЗаявки) Тогда
ДанныеЗаполнения.ФормаОплатыНаличная = Истина;
ДанныеЗаполнения.ФормаОплатыБезналичная = Истина;
КонецЕсли;
БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьБанковскийСчетПоУмолчанию(
ДанныеЗаполнения.Контрагент,
ДанныеЗаполнения.Валюта);
РеквизитыСчета = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьРеквизитыБанковскогоСчета(БанковскийСчетКонтрагента);
НазначениеПлатежа = РеквизитыСчета.ТекстНазначения;
ДенежныеСредстваСервер.ЗаполнитьРеквизитыДокументаПоФормеОплаты(ДанныеЗаполнения.ФормаОплатыЗаявки, ДанныеЗаполнения);
Если Выборка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОплатыКлиенту Тогда
ОбъектыРасчетов = Новый Массив;
ОбъектыРасчетов.Добавить(ДокументОснование);
ОбъектыРасчетов.Добавить(Выборка.Договор);
ВзаиморасчетыСервер.ЗаполнитьРасшифровкуПлатежаПоВозвратуТоваровОтКлиента(
ОбъектыРасчетов,
ДанныеЗаполнения.Организация,
ДанныеЗаполнения.Валюта,
Выборка.Сумма,
ДанныеЗаполнения.Партнер,
РасшифровкаПлатежа);
Иначе
ВзаиморасчетыСервер.ЗаполнитьРасшифровкуПлатежаПоЗаказуПоставщику(
ДокументОснование,
Выборка.Договор,
ДанныеЗаполнения.Валюта,
0,
РасшифровкаПлатежа,
ЖелательнаяДатаПлатежа);
КонецЕсли;
СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма");
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьПоПередачеТоваров(Знач ДокументОснование, ДанныеЗаполнения)
ТекстЗапроса = "
|ВЫБРАТЬ
| ДанныеДокумента.ОрганизацияПолучатель КАК Организация,
| ДанныеДокумента.Организация КАК ОрганизацияПолучатель,
| НЕОПРЕДЕЛЕНО КАК Контрагент,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.ДатаПлатежа КАК ЖелательнаяДатаПлатежа,
| ДанныеДокумента.ФормаОплаты КАК ФормаОплатыЗаявки,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Наличная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыНаличная,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Безналичная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыБезналичная,
|
| ДанныеДокумента.БанковскийСчетОрганизацииПолучателя КАК БанковскийСчет,
| ДанныеДокумента.БанковскийСчетОрганизации КАК БанковскийСчетПолучатель,
| НЕОПРЕДЕЛЕНО КАК БанковскийСчетКонтрагента,
| НЕОПРЕДЕЛЕНО КАК Касса,
| НЕОПРЕДЕЛЕНО КАК КассаПолучатель,
| ДанныеДокумента.ИдентификаторПлатежа КАК ИдентификаторПлатежа,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаДенежныхСредствВДругуюОрганизацию) КАК ХозяйственнаяОперация,
|
| ДанныеДокумента.СуммаДокумента КАК СуммаДокумента,
| &Ссылка КАК ДокументОснование
|ИЗ
| Документ.ПередачаТоваровМеждуОрганизациями КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияТоваровВДругуюОрганизацию)
| И НЕ ДанныеДокумента.РасчетыЧерезОтдельногоКонтрагента
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокумента.ОрганизацияПолучатель КАК Организация,
| НЕОПРЕДЕЛЕНО КАК ОрганизацияПолучатель,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.ДатаПлатежа КАК ЖелательнаяДатаПлатежа,
| ДанныеДокумента.ФормаОплаты КАК ФормаОплатыЗаявки,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Наличная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыНаличная,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Безналичная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыБезналичная,
|
| ДанныеДокумента.БанковскийСчетОрганизацииПолучателя КАК БанковскийСчет,
| НЕОПРЕДЕЛЕНО КАК БанковскийСчетПолучатель,
| ДанныеДокумента.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента,
| НЕОПРЕДЕЛЕНО КАК Касса,
| Неопределено КАК КассаПолучатель,
| ДанныеДокумента.ИдентификаторПлатежа КАК ИдентификаторПлатежа,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику) КАК ХозяйственнаяОперация,
|
| ДанныеДокумента.СуммаДокумента КАК СуммаДокумента,
| &Ссылка КАК ДокументОснование
|ИЗ
| Документ.ПередачаТоваровМеждуОрганизациями КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияТоваровВДругуюОрганизацию)
| И ДанныеДокумента.РасчетыЧерезОтдельногоКонтрагента
|";
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не требуется вводить заявку на расходование денежных средств на основании документа %1'"),
ДокументОснование);
ВызватьИсключение Текст;
Иначе
ДанныеЗаполнения = Новый Структура;
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
Если Не ЗначениеЗаполнено(ДанныеЗаполнения.ФормаОплатыЗаявки) Тогда
ДанныеЗаполнения.ФормаОплатыНаличная = Истина;
ДанныеЗаполнения.ФормаОплатыБезналичная = Истина;
КонецЕсли;
ДенежныеСредстваСервер.ЗаполнитьРеквизитыДокументаПоФормеОплаты(
ДанныеЗаполнения.ФормаОплатыЗаявки,
ДанныеЗаполнения);
БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьБанковскийСчетПоУмолчанию(
ДанныеЗаполнения.Контрагент,
ДанныеЗаполнения.Валюта);
РеквизитыСчета = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьРеквизитыБанковскогоСчета(БанковскийСчетКонтрагента);
НазначениеПлатежа = РеквизитыСчета.ТекстНазначения;
БанковскийСчетПолучатель = Справочники.БанковскиеСчетаОрганизаций.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(
ДанныеЗаполнения.ОрганизацияПолучатель,
ДанныеЗаполнения.Валюта);
ВзаиморасчетыСервер.ЗаполнитьРасшифровкуПлатежаПоЗаказуПоставщику(
ДокументОснование,
Неопределено,
ДанныеЗаполнения.Валюта,
0,
РасшифровкаПлатежа,
ЖелательнаяДатаПлатежа);
СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьПоОтчетуПоКомиссии(Знач ДокументОснование, ДанныеЗаполнения, КОплате = 0, Вознаграждение = Ложь)
ТекстЗапроса = "
|ВЫБРАТЬ
| ДанныеДокумента.Организация КАК ОрганизацияПолучатель,
| ДанныеДокумента.Комиссионер КАК Организация,
| Неопределено КАК Контрагент,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.Валюта КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.ДатаПлатежа КАК ЖелательнаяДатаПлатежа,
| ДанныеДокумента.ФормаОплаты КАК ФормаОплатыЗаявки,
|
| ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Наличная) КАК ФормаОплатыНаличная,
| ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Безналичная) КАК ФормаОплатыБезналичная,
|
| ДанныеДокумента.Договор.БанковскийСчетПолучателя КАК БанковскийСчет,
| ДанныеДокумента.Договор.БанковскийСчет КАК БанковскийСчетПолучатель,
| Неопределено КАК Касса,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаДенежныхСредствВДругуюОрганизацию) КАК ХозяйственнаяОперация,
|
| ДанныеДокумента.СуммаДокумента КАК СуммаДокумента,
| &Ссылка КАК ДокументОснование
|ИЗ
| ИмяДокумента КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И НЕ ДанныеДокумента.РасчетыЧерезОтдельногоКонтрагента
| И ДанныеДокумента.СуммаДокумента > 0
| И НЕ &Вознаграждение
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Неопределено КАК ОрганизацияПолучатель,
| ДанныеДокумента.Комиссионер КАК Организация,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.Валюта КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.ДатаПлатежа КАК ЖелательнаяДатаПлатежа,
| ДанныеДокумента.ФормаОплаты КАК ФормаОплатыЗаявки,
|
| ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Наличная) КАК ФормаОплатыНаличная,
| ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Безналичная) КАК ФормаОплатыБезналичная,
|
| Неопределено КАК БанковскийСчет,
| Неопределено КАК БанковскийСчетПолучатель,
| Неопределено КАК Касса,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику) КАК ХозяйственнаяОперация,
|
| ДанныеДокумента.СуммаДокумента КАК СуммаДокумента,
| &Ссылка КАК ДокументОснование
|ИЗ
| ИмяДокумента КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.РасчетыЧерезОтдельногоКонтрагента
| И ДанныеДокумента.СуммаДокумента > 0
| И НЕ &Вознаграждение
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокумента.Комиссионер КАК ОрганизацияПолучатель,
| ДанныеДокумента.Организация КАК Организация,
| Неопределено КАК Контрагент,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.Валюта КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.ДатаПлатежа КАК ЖелательнаяДатаПлатежа,
| ДанныеДокумента.ФормаОплаты КАК ФормаОплатыЗаявки,
|
| ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Наличная) КАК ФормаОплатыНаличная,
| ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Безналичная) КАК ФормаОплатыБезналичная,
|
| ДанныеДокумента.Договор.БанковскийСчет КАК БанковскийСчет,
| ДанныеДокумента.Договор.БанковскийСчетПолучателя КАК БанковскийСчетПолучатель,
| Неопределено КАК Касса,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаДенежныхСредствВДругуюОрганизацию) КАК ХозяйственнаяОперация,
|
| ДанныеДокумента.СуммаДокумента КАК СуммаДокумента,
| &Ссылка КАК ДокументОснование
|ИЗ
| ИмяДокумента КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И НЕ ДанныеДокумента.РасчетыЧерезОтдельногоКонтрагента
| И ДанныеДокумента.СуммаДокумента > 0
| И &Вознаграждение
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Неопределено КАК ОрганизацияПолучатель,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.Валюта КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.ДатаПлатежа КАК ЖелательнаяДатаПлатежа,
| ДанныеДокумента.ФормаОплаты КАК ФормаОплатыЗаявки,
|
| ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Наличная) КАК ФормаОплатыНаличная,
| ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Безналичная) КАК ФормаОплатыБезналичная,
|
| Неопределено КАК БанковскийСчет,
| Неопределено КАК БанковскийСчетПолучатель,
| Неопределено КАК Касса,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику) КАК ХозяйственнаяОперация,
|
| ДанныеДокумента.СуммаДокумента КАК СуммаДокумента,
| &Ссылка КАК ДокументОснование
|ИЗ
| ИмяДокумента КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.РасчетыЧерезОтдельногоКонтрагента
| И ДанныеДокумента.СуммаДокумента > 0
| И &Вознаграждение
|";
ИмяДокументаОснования = ДокументОснование.Метаданные().ПолноеИмя();
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ИмяДокумента", ИмяДокументаОснования);
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
Запрос.УстановитьПараметр("Вознаграждение", Вознаграждение);
РезультатЗапроса = Запрос.Выполнить();
ДанныеЗаполнения = Новый Структура;
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
Если Не ЗначениеЗаполнено(ДанныеЗаполнения.ФормаОплатыЗаявки) Тогда
ДанныеЗаполнения.ФормаОплатыНаличная = Истина;
ДанныеЗаполнения.ФормаОплатыБезналичная = Истина;
КонецЕсли;
ДенежныеСредстваСервер.ЗаполнитьРеквизитыДокументаПоФормеОплаты(ДанныеЗаполнения.ФормаОплатыЗаявки, ДанныеЗаполнения);
БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьБанковскийСчетПоУмолчанию(
ДанныеЗаполнения.Контрагент, ДанныеЗаполнения.Валюта);
РеквизитыСчета = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьРеквизитыБанковскогоСчета(БанковскийСчетКонтрагента);
НазначениеПлатежа = РеквизитыСчета.ТекстНазначения;
Если Не ЗначениеЗаполнено(ДанныеЗаполнения.БанковскийСчетПолучатель) Тогда
ДанныеЗаполнения.БанковскийСчетПолучатель = Справочники.БанковскиеСчетаОрганизаций.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(
ДанныеЗаполнения.ОрганизацияПолучатель, ДанныеЗаполнения.Валюта);
КонецЕсли;
ВзаиморасчетыСервер.ЗаполнитьРасшифровкуПлатежаПоЗаказуПоставщику(
ДокументОснование,
Неопределено,
ДанныеЗаполнения.Валюта,
0,
РасшифровкаПлатежа,
ЖелательнаяДатаПлатежа,
ДанныеЗаполнения.Организация);
ДанныеЗаполнения.Вставить("СтатьяДвиженияДенежныхСредств",
Справочники.СтатьиДвиженияДенежныхСредств.СтатьяДвиженияДенежныхСредствПоХозяйственнойОперации(ДанныеЗаполнения.ХозяйственнаяОперация));
Если ЗначениеЗаполнено(ДанныеЗаполнения.СтатьяДвиженияДенежныхСредств) Тогда
Для Каждого Стр Из РасшифровкаПлатежа Цикл
Стр.СтатьяДвиженияДенежныхСредств = ДанныеЗаполнения.СтатьяДвиженияДенежныхСредств;
КонецЦикла;
КонецЕсли;
ДанныеЗаполнения.СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма");
Иначе
ВызватьИсключение
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Заявка на расходование ДС не требуется для документа %1'"), ДокументОснование);
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьПоТаможеннойДекларацииИмпорта(Знач ДокументОснование, ДанныеЗаполнения)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.БанковскийСчетОрганизации КАК БанковскийСчет,
| ДанныеДокумента.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента,
| НЕОПРЕДЕЛЕНО КАК Касса,
|
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчетОрганизации <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка)
| ТОГДА ДанныеДокумента.БанковскийСчетОрганизации.ВалютаДенежныхСредств ИНАЧЕ ДанныеДокумента.Валюта КОНЕЦ КАК Валюта,
|
| ДанныеДокумента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| ДанныеДокумента.СуммаДокумента КАК Сумма,
| ДанныеДокумента.ДатаПлатежа КАК ЖелательнаяДатаПлатежа,
| ДанныеДокумента.ИдентификаторПлатежа КАК ИдентификаторПлатежа,
| ДанныеДокумента.ФормаОплаты КАК ФормаОплатыЗаявки,
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Наличная)
| ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК ФормаОплатыНаличная,
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Безналичная)
| ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК ФормаОплатыБезналичная,
|
| ВЫБОР КОГДА ДанныеДокумента.ВариантОформления = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОформлениеГТДСамостоятельно)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеречислениеТаможне)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику) КОНЕЦ КАК ХозяйственнаяОперация,
| &Ссылка КАК ДокументОснование
|ИЗ
| Документ.ТаможеннаяДекларацияИмпорт КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
ЗаполнитьРеквизитыПоРезультатуЗапроса(ДокументОснование, РезультатЗапроса, ДанныеЗаполнения);
КонецПроцедуры
Процедура ЗаполнитьПоВозвратуМеждуОрганизациями(Знач ДокументОснование, ДанныеЗаполнения)
ТекстЗапроса = "
|ВЫБРАТЬ
| ДанныеДокумента.ОрганизацияПолучатель КАК Организация,
| (ВЫБОР КОГДА ДанныеДокумента.РасчетыЧерезОтдельногоКонтрагента
| ТОГДА Неопределено
| ИНАЧЕ ДанныеДокумента.Организация КОНЕЦ) КАК ОрганизацияПолучатель,
| (ВЫБОР КОГДА ДанныеДокумента.РасчетыЧерезОтдельногоКонтрагента
| ТОГДА ДанныеДокумента.Контрагент
| ИНАЧЕ Неопределено КОНЕЦ) КАК Контрагент,
| (ВЫБОР КОГДА ДанныеДокумента.РасчетыЧерезОтдельногоКонтрагента
| ТОГДА ДанныеДокумента.Партнер
| ИНАЧЕ Неопределено КОНЕЦ) КАК Партнер,
| ЕСТЬNULL(ОбъектыРасчетов.Ссылка, ЗНАЧЕНИЕ(Справочник.ОбъектыРасчетов.ПустаяСсылка)) КАК ОбъектРасчетов,
| ДанныеДокумента.РасшифровкаПлатежа.(ОбъектРасчетов) КАК ОбъектРасчетовРасшифровки,
| ДОБАВИТЬКДАТЕ(ДанныеДокумента.Дата,ДЕНЬ,
| РАЗНОСТЬДАТ(ДанныеДокумента.ДокументПередачи.Дата,ДанныеДокумента.ДокументПередачи.ДатаПлатежа,ДЕНЬ)
| ) КАК ЖелательнаяДатаПлатежа,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.Подразделение КАК Подразделение,
|
| Неопределено КАК ФормаОплатыЗаявки,
| ИСТИНА КАК ФормаОплатыНаличная,
| ИСТИНА КАК ФормаОплатыБезналичная,
|
| ДанныеДокумента.БанковскийСчетОрганизацииПолучателя КАК БанковскийСчет,
| (ВЫБОР КОГДА ДанныеДокумента.РасчетыЧерезОтдельногоКонтрагента
| ТОГДА Неопределено ИНАЧЕ ДанныеДокумента.БанковскийСчетОрганизации КОНЕЦ) КАК БанковскийСчетПолучатель,
| (ВЫБОР КОГДА ДанныеДокумента.РасчетыЧерезОтдельногоКонтрагента
| ТОГДА ДанныеДокумента.БанковскийСчетКонтрагента ИНАЧЕ Неопределено КОНЕЦ) КАК БанковскийСчетКонтрагента,
| Неопределено КАК Касса,
| Неопределено КАК КассаПолучатель,
| ДанныеДокумента.ИдентификаторПлатежа КАК ИдентификаторПлатежа,
|
| (ВЫБОР КОГДА ДанныеДокумента.РасчетыЧерезОтдельногоКонтрагента
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОплатыКлиенту)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратДенежныхСредствВДругуюОрганизацию) КОНЕЦ) КАК ХозяйственнаяОперация,
|
| ДанныеДокумента.СуммаДокумента КАК Сумма,
| &Ссылка КАК ДокументОснование
|ИЗ
| Документ.ВозвратТоваровМеждуОрганизациями КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ОбъектыРасчетов КАК ОбъектыРасчетов
| ПО ДанныеДокумента.ДокументПередачи = ОбъектыРасчетов.Объект
| И НЕ ОбъектыРасчетов.ПометкаУдаления
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровМеждуОрганизациями)
|";
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не требуется вводить заявку на расходование денежных средств на основании документа %1'"),
ДокументОснование);
ВызватьИсключение Текст;
Иначе
ДанныеЗаполнения = Новый Структура;
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
ОбъектыРасчетов = Выборка.ОбъектРасчетовРасшифровки.Выгрузить().ВыгрузитьКолонку("ОбъектРасчетов");
ОбъектыРасчетов.Добавить(ДанныеЗаполнения.ОбъектРасчетов);
ДенежныеСредстваСервер.ЗаполнитьРеквизитыДокументаПоФормеОплаты(
ДанныеЗаполнения.ФормаОплатыЗаявки,
ДанныеЗаполнения);
БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьБанковскийСчетПоУмолчанию(
ДанныеЗаполнения.Контрагент,
ДанныеЗаполнения.Валюта);
РеквизитыСчета = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьРеквизитыБанковскогоСчета(БанковскийСчетКонтрагента);
НазначениеПлатежа = РеквизитыСчета.ТекстНазначения;
БанковскийСчетПолучатель = Справочники.БанковскиеСчетаОрганизаций.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(
ДанныеЗаполнения.ОрганизацияПолучатель,
ДанныеЗаполнения.Валюта);
ВзаиморасчетыСервер.ЗаполнитьРасшифровкуПлатежаПоВозвратуТоваровОтКлиента(
ОбъектыРасчетов,
ДанныеЗаполнения.Организация,
ДанныеЗаполнения.Валюта,
Выборка.Сумма,
ДанныеЗаполнения.Партнер,
РасшифровкаПлатежа);
СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьПоДоговору(Знач ДокументОснование, ДанныеЗаполнения)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Ссылка КАК Договор,
|
| ЛОЖЬ КАК ФормаОплатыНаличная,
| ВЫБОР
| КОГДА ДанныеДокумента.БанковскийСчет <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка)
| И ДанныеДокумента.БанковскийСчетКонтрагента <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаКонтрагентов.ПустаяСсылка) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыБезналичная,
| ВЫБОР
| КОГДА ДанныеДокумента.БанковскийСчет <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка)
| И ДанныеДокумента.БанковскийСчетКонтрагента <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаКонтрагентов.ПустаяСсылка) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Безналичная)
| ИНАЧЕ
| НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК ФормаОплатыЗаявки,
|
| ДанныеДокумента.БанковскийСчет КАК БанковскийСчет,
| ДанныеДокумента.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента,
|
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчет <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчет.ВалютаДенежныхСредств
| ИНАЧЕ
| ДанныеДокумента.ВалютаВзаиморасчетов
| КОНЕЦ КАК Валюта,
|
| ВЫБОР
| КОГДА ДанныеДокумента.ТипДоговора В (&ТипыДоговоровКлиента) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОплатыКлиенту)
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику)
| КОНЕЦ КАК ХозяйственнаяОперация,
|
| ЕСТЬNULL(ОбъектыРасчетов.Ссылка, ЗНАЧЕНИЕ(Справочник.ОбъектыРасчетов.ПустаяСсылка)) КАК ОбъектРасчетов,
| &Ссылка КАК ДокументОснование,
|
| ДанныеДокумента.ГруппаФинансовогоУчета КАК ГруппаФинансовогоУчета,
| ДанныеДокумента.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств,
| ДанныеДокумента.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ДанныеДокумента.Подразделение КАК Подразделение,
|
| ДанныеДокумента.ПлатежиПо275ФЗ КАК ПлатежиПо275ФЗ,
| ДанныеДокумента.ДоговорСУчастникомГОЗ КАК ДоговорСУчастникомГОЗ,
| ДанныеДокумента.ОплатаРасходовПоТарифамСГосрегулированием КАК ОплатаРасходовПоТарифамСГосрегулированием,
| ДанныеДокумента.ПорядокРасчетов КАК ПорядокРасчетов,
| ДанныеДокумента.ТипДоговора КАК ТипДоговора,
| ДанныеДокумента.ИдентификаторПлатежа КАК ИдентификаторПлатежа
|
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ОбъектыРасчетов КАК ОбъектыРасчетов
| ПО ДанныеДокумента.Ссылка = ОбъектыРасчетов.Объект
| И НЕ ОбъектыРасчетов.ПометкаУдаления
|
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияКлиенту)
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
Запрос.УстановитьПараметр("ТипыДоговоровКлиента", ДенежныеСредстваСервер.ТипыДоговоровВозвратаВозмещения());
РезультатЗапроса = Запрос.Выполнить();
ЗаполнитьРеквизитыПоРезультатуЗапроса(ДокументОснование, РезультатЗапроса, ДанныеЗаполнения, Истина);
КонецПроцедуры
Процедура ЗаполнитьПоДоговоруКредитаДепозита(Знач ДокументОснование, ДанныеЗаполнения)
ДенежныеСредстваСервер.ЗаполнитьПоДоговоруКредитаДепозита(ДокументОснование, ДанныеЗаполнения, РасшифровкаПлатежа, Ложь);
ДанныеЗаполнения.Вставить("ЖелательнаяДатаПлатежа", ТекущаяДатаСеанса());
ДанныеЗаполнения.Вставить("ФормаОплатыЗаявки", Перечисления.ФормыОплаты.Безналичная);
ДанныеЗаполнения.Вставить("Статус", Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.НеСогласована);
Если ДанныеЗаполнения.Свойство("БанковскийСчетКонтрагента") Тогда
НазначениеПлатежа = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьРеквизитыБанковскогоСчета(
ДанныеЗаполнения.БанковскийСчетКонтрагента).ТекстНазначения;
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьПоМассивуОснований(ДанныеЗаполнения, МассивОснований)
Если МассивОснований.Количество() Тогда
ДанныеЗаполнения.Вставить("ЖелательнаяДатаПлатежа", Макс(МассивОснований[0].ДатаПлатежа, ТекущаяДатаСеанса()));
ДанныеЗаполнения.Вставить("БанковскийСчетКонтрагента", МассивОснований[0].БанковскийСчетКонтрагента);
ДанныеЗаполнения.Вставить("ФормаОплатыЗаявки", МассивОснований[0].ФормаОплаты);
Если ДанныеЗаполнения.ФормаОплатыЗаявки = Перечисления.ФормыОплаты.Безналичная Тогда
ДанныеЗаполнения.Вставить("ФормаОплатыБезналичная", Истина);
ДанныеЗаполнения.Вставить("ФормаОплатыНаличная", Ложь);
ИначеЕсли ДанныеЗаполнения.ФормаОплатыЗаявки = Перечисления.ФормыОплаты.Наличная Тогда
ДанныеЗаполнения.Вставить("ФормаОплатыНаличная", Истина);
ДанныеЗаполнения.Вставить("ФормаОплатыБезналичная", Ложь);
КонецЕсли;
Если Метаданные.ОпределяемыеТипы.ОбъектРасчетовСПоставщиками.Тип.СодержитТип(ТипЗнч(МассивОснований[0].ОбъектОплаты))
Или Метаданные.ОпределяемыеТипы.ОбъектРасчетовСКлиентами.Тип.СодержитТип(ТипЗнч(МассивОснований[0].ОбъектОплаты)) Тогда
Для каждого СтрокаОснования Из МассивОснований Цикл
ВзаиморасчетыСервер.ЗаполнитьРасшифровкуПлатежаПоЗаказуПоставщику(
СтрокаОснования.ОбъектОплаты,
Неопределено,
СтрокаОснования.ВалютаДокумента,
СтрокаОснования.СуммаКОплате,
РасшифровкаПлатежа,,
СтрокаОснования.Организация);
КонецЦикла;
Иначе
Для каждого Основание Из МассивОснований Цикл
НоваяСтрока = РасшифровкаПлатежа.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Основание);
КонецЦикла;
КонецЕсли;
СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма");
КонецЕсли;
КонецПроцедуры
Процедура ИнициализироватьДокумент(ДанныеЗаполнения = Неопределено)
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
И ДанныеЗаполнения.Свойство("Дата")
И ЗначениеЗаполнено(ДанныеЗаполнения.Дата) Тогда
Дата = ДанныеЗаполнения.Дата;
КонецЕсли;
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
И ДанныеЗаполнения.Свойство("ФормаОплатыЗаявки")
И ЗначениеЗаполнено(ДанныеЗаполнения.ФормаОплатыЗаявки) Тогда
ФормаОплатыНаличная = (ДанныеЗаполнения.ФормаОплатыЗаявки = Перечисления.ФормыОплаты.Наличная);
ФормаОплатыБезналичная = (ДанныеЗаполнения.ФормаОплатыЗаявки = Перечисления.ФормыОплаты.Безналичная);
ФормаОплатыПлатежнаяКарта = (ДанныеЗаполнения.ФормаОплатыЗаявки = Перечисления.ФормыОплаты.ПлатежнаяКарта);
ИначеЕсли ЗначениеЗаполнено(ФормаОплатыЗаявки) Тогда
ФормаОплатыНаличная = (ФормаОплатыЗаявки = Перечисления.ФормыОплаты.Наличная);
ФормаОплатыБезналичная = (ФормаОплатыЗаявки = Перечисления.ФормыОплаты.Безналичная);
ФормаОплатыПлатежнаяКарта = (ФормаОплатыЗаявки = Перечисления.ФормыОплаты.ПлатежнаяКарта);
КонецЕсли;
Если ТипЗнч(ДанныеЗаполнения) <> Тип("Структура") Или НЕ ДанныеЗаполнения.Свойство("Организация") Тогда
Организация = ЗначениеНастроекПовтИсп.ПолучитьОрганизациюПоУмолчанию(Организация);
КонецЕсли;
Если ТипЗнч(ДанныеЗаполнения) <> Тип("Структура") Или НЕ ДанныеЗаполнения.Свойство("Валюта") Тогда
Если Не ЗначениеЗаполнено(Валюта) Тогда
Валюта = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Организация);
КонецЕсли;
КонецЕсли;
ПриоритетОплаты = Справочники.ПриоритетыОплаты.ПолучитьПриоритетПоУмолчанию(ПриоритетОплаты);
ДенежныеСредстваСервер.ЗаполнитьСтатьюДвиженияДенежныхСредств(
ЭтотОбъект, ДанныеЗаполнения, Перечисления.ХозяйственныеОперации.ОплатаПоставщику);
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
И ДанныеЗаполнения.Свойство("ЖелательнаяДатаПлатежа")
И ЗначениеЗаполнено(ДанныеЗаполнения.ЖелательнаяДатаПлатежа) Тогда
Если ДанныеЗаполнения.ЖелательнаяДатаПлатежа < ТекущаяДатаСеанса() Тогда
ДанныеЗаполнения.ЖелательнаяДатаПлатежа = ТекущаяДатаСеанса();
КонецЕсли;
ИначеЕсли ЗначениеЗаполнено(ЖелательнаяДатаПлатежа) Тогда
Если ЖелательнаяДатаПлатежа < ТекущаяДатаСеанса() Тогда
ЖелательнаяДатаПлатежа = ТекущаяДатаСеанса();
КонецЕсли;
КонецЕсли;
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
И ДанныеЗаполнения.Свойство("Валюта")
И ЗначениеЗаполнено(ДанныеЗаполнения.Валюта) Тогда
ВалютаРеглУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Организация);
Для каждого СтрокаТЧ Из РасшифровкаПлатежа Цикл
КурсИКратность = ДенежныеСредстваСервер.КурсЧислительИКурсЗнаменательВзаиморасчетов(
ДанныеЗаполнения.Валюта, СтрокаТЧ.ВалютаВзаиморасчетов, ВалютаРеглУчета, Дата, СтрокаТЧ.ОбъектРасчетов, Договор);
СтрокаТЧ.КурсЧислительВзаиморасчетов = КурсИКратность.КурсЧислитель;
СтрокаТЧ.КурсЗнаменательВзаиморасчетов = КурсИКратность.КурсЗнаменатель;
КонецЦикла;
Иначе
Для каждого СтрокаТЧ Из РасшифровкаПлатежа Цикл
СтрокаТЧ.КурсЧислительВзаиморасчетов = 1;
СтрокаТЧ.КурсЗнаменательВзаиморасчетов = 1;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьРеквизитыЗначениямиПоУмолчанию() Экспорт
КтоЗаявил = Пользователи.ТекущийПользователь();
ПриоритетОплаты = Справочники.ПриоритетыОплаты.ПолучитьПриоритетПоУмолчанию(Неопределено);
Если Не ЗначениеЗаполнено(ФормаОплатыЗаявки) Тогда
ФормаОплатыНаличная = Истина;
ФормаОплатыБезналичная = Истина;
Иначе
ФормаОплатыНаличная = (ФормаОплатыЗаявки = Перечисления.ФормыОплаты.Наличная);
ФормаОплатыБезналичная = (ФормаОплатыЗаявки = Перечисления.ФормыОплаты.Безналичная);
ФормаОплатыПлатежнаяКарта = (ФормаОплатыЗаявки = Перечисления.ФормыОплаты.ПлатежнаяКарта);
КонецЕсли;
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияБанковскогоСчетаОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = Организация;
СтруктураПараметров.ФормаОплаты = ФормаОплатыЗаявки;
СтруктураПараметров.Валюта = Валюта;
БанковскийСчет = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(СтруктураПараметров);
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияКассыОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = Организация;
СтруктураПараметров.ФормаОплаты = ФормаОплатыЗаявки;
СтруктураПараметров.Валюта = Валюта;
Касса = ЗначениеНастроекПовтИсп.ПолучитьКассуОрганизацииПоУмолчанию(СтруктураПараметров);
БанковскийСчетКонтрагента =
Справочники.БанковскиеСчетаКонтрагентов.ПолучитьБанковскийСчетПоУмолчанию(Контрагент, Валюта);
НазначениеПлатежа =
Справочники.БанковскиеСчетаКонтрагентов.ПолучитьРеквизитыБанковскогоСчета(БанковскийСчетКонтрагента).ТекстНазначения;
КонецПроцедуры
Процедура ЗаполнитьПоДоговоруАренды(Знач ДокументОснование, ДанныеЗаполнения)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Ссылка КАК Договор,
|
| ЛОЖЬ КАК ФормаОплатыНаличная,
| ВЫБОР
| КОГДА ДанныеДокумента.БанковскийСчет <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка)
| И ДанныеДокумента.БанковскийСчетКонтрагента <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаКонтрагентов.ПустаяСсылка) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыБезналичная,
| ВЫБОР
| КОГДА ДанныеДокумента.БанковскийСчет <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка)
| И ДанныеДокумента.БанковскийСчетКонтрагента <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаКонтрагентов.ПустаяСсылка) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Безналичная)
| ИНАЧЕ
| НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК ФормаОплатыЗаявки,
|
| ДанныеДокумента.БанковскийСчет КАК БанковскийСчет,
| ДанныеДокумента.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента,
|
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчет <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчет.ВалютаДенежныхСредств
| ИНАЧЕ
| ДанныеДокумента.ВалютаВзаиморасчетов
| КОНЕЦ КАК Валюта,
| ДанныеДокумента.НалогообложениеНДС КАК НалогообложениеНДС,
| ДанныеДокумента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаАрендодателю) КАК ХозяйственнаяОперация,
| &Ссылка КАК ДокументОснование,
| &Ссылка КАК ДоговорАренды,
| ДанныеДокумента.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств,
| УсловияДоговоровАренды.СтавкаНДС КАК СтавкаНДС
|
|ИЗ
| Справочник.ДоговорыАренды КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.УсловияДоговоровАренды.СрезПоследних(, Договор = &Ссылка) КАК УсловияДоговоровАренды
| ПО УсловияДоговоровАренды.Договор = &Ссылка
|
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
ДанныеЗаполнения = Новый Структура;
Для каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
ДанныеЗаполнения.Вставить("ЖелательнаяДатаПлатежа");
Если Не ЗначениеЗаполнено(ДанныеЗаполнения.ФормаОплатыЗаявки) Тогда
ДанныеЗаполнения.ФормаОплатыНаличная = Истина;
ДанныеЗаполнения.ФормаОплатыБезналичная = Истина;
КонецЕсли;
ДенежныеСредстваСервер.ЗаполнитьРеквизитыДокументаПоФормеОплаты(ДанныеЗаполнения.ФормаОплатыЗаявки, ДанныеЗаполнения);
Если ЗначениеЗаполнено(ДанныеЗаполнения.Валюта) Тогда
БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьБанковскийСчетПоУмолчанию(
ДанныеЗаполнения.Контрагент,
ДанныеЗаполнения.Валюта);
Иначе
БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьБанковскийСчетПоУмолчанию(
ДанныеЗаполнения.Контрагент);
КонецЕсли;
РеквизитыСчета = Справочники.БанковскиеСчетаКонтрагентов.ПолучитьРеквизитыБанковскогоСчета(
БанковскийСчетКонтрагента);
НазначениеПлатежа = РеквизитыСчета.ТекстНазначения;
ЗаполнитьЗначенияСвойств(РасшифровкаПлатежа.Добавить(), Выборка);
СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма");
КонецПроцедуры
Процедура ЗаполнитьПоЗаказуПереработчику(Знач ДокументОснование, ДанныеЗаполнения)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчет <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчет.Владелец
| КОГДА ДанныеДокумента.Касса <> ЗНАЧЕНИЕ(Справочник.Кассы.ПустаяСсылка) ТОГДА
| ДанныеДокумента.Касса.Владелец
| ИНАЧЕ
| ДанныеДокумента.Организация
| КОНЕЦ КАК Организация,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.Приоритет КАК Приоритет,
| ДанныеДокумента.Валюта КАК ВалютаВзаиморасчетов,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Наличная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыНаличная,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Безналичная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыБезналичная,
| ДанныеДокумента.ФормаОплаты КАК ФормаОплатыЗаявки,
|
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчет <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчет
| ИНАЧЕ
| ДанныеДокумента.Договор.БанковскийСчет
| КОНЕЦ КАК БанковскийСчет,
|
| ДанныеДокумента.Касса КАК Касса,
| ДанныеДокумента.Договор.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента,
| ДанныеДокумента.ИдентификаторПлатежа КАК ИдентификаторПлатежа,
|
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчет <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчет.ВалютаДенежныхСредств
| КОГДА ДанныеДокумента.Касса <> ЗНАЧЕНИЕ(Справочник.Кассы.ПустаяСсылка) ТОГДА
| ДанныеДокумента.Касса.ВалютаДенежныхСредств
| ИНАЧЕ
| ЕСТЬNULL(ДанныеДокумента.Договор.БанковскийСчет.ВалютаДенежныхСредств, ДанныеДокумента.Валюта)
| КОНЕЦ КАК Валюта,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику) КАК ХозяйственнаяОперация,
| &Ссылка КАК ДокументОснование
|ИЗ
| Документ.ЗаказПереработчику КАК ДанныеДокумента
|
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоНакладным)
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
ЗаполнитьРеквизитыПоРезультатуЗапроса(ДокументОснование, РезультатЗапроса, ДанныеЗаполнения);
КонецПроцедуры
Процедура ЗаполнитьПоЗаказуПереработчику2_5(Знач ДокументОснование, ДанныеЗаполнения)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчет <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчет.Владелец
| КОГДА ДанныеДокумента.Касса <> ЗНАЧЕНИЕ(Справочник.Кассы.ПустаяСсылка) ТОГДА
| ДанныеДокумента.Касса.Владелец
| ИНАЧЕ
| ДанныеДокумента.Организация
| КОНЕЦ КАК Организация,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.Приоритет КАК Приоритет,
| ДанныеДокумента.Валюта КАК ВалютаВзаиморасчетов,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Наличная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыНаличная,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Безналичная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыБезналичная,
| ДанныеДокумента.ФормаОплаты КАК ФормаОплатыЗаявки,
|
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчет <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчет
| ИНАЧЕ
| ДанныеДокумента.Договор.БанковскийСчет
| КОНЕЦ КАК БанковскийСчет,
|
| ДанныеДокумента.Касса КАК Касса,
| ДанныеДокумента.Договор.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента,
| ДанныеДокумента.ИдентификаторПлатежа КАК ИдентификаторПлатежа,
|
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчет <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчет.ВалютаДенежныхСредств
| КОГДА ДанныеДокумента.Касса <> ЗНАЧЕНИЕ(Справочник.Кассы.ПустаяСсылка) ТОГДА
| ДанныеДокумента.Касса.ВалютаДенежныхСредств
| ИНАЧЕ
| ЕСТЬNULL(ДанныеДокумента.Договор.БанковскийСчет.ВалютаДенежныхСредств, ДанныеДокумента.Валюта)
| КОНЕЦ КАК Валюта,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику) КАК ХозяйственнаяОперация,
| &Ссылка КАК ДокументОснование
|ИЗ
| Документ.ЗаказПереработчику2_5 КАК ДанныеДокумента
|
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоНакладным)
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
ЗаполнитьРеквизитыПоРезультатуЗапроса(ДокументОснование, РезультатЗапроса, ДанныеЗаполнения);
КонецПроцедуры
Процедура ЗаполнитьПоОтчетуПереработчика(Знач ДокументОснование, ДанныеЗаполнения)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчетОрганизации <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчетОрганизации.Владелец
| ИНАЧЕ
| ДанныеДокумента.Организация
| КОНЕЦ КАК Организация,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.Валюта КАК ВалютаВзаиморасчетов,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Наличная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыНаличная,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Безналичная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыБезналичная,
| ДанныеДокумента.ФормаОплаты КАК ФормаОплатыЗаявки,
|
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчетОрганизации <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчетОрганизации
| ИНАЧЕ
| ДанныеДокумента.Договор.БанковскийСчет
| КОНЕЦ КАК БанковскийСчет,
|
| НЕОПРЕДЕЛЕНО КАК Касса,
| ДанныеДокумента.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента,
| ДанныеДокумента.ИдентификаторПлатежа КАК ИдентификаторПлатежа,
|
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчетОрганизации <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчетОрганизации.ВалютаДенежныхСредств
| ИНАЧЕ
| ЕСТЬNULL(ДанныеДокумента.Договор.БанковскийСчет.ВалютаДенежныхСредств, ДанныеДокумента.Валюта)
| КОНЕЦ КАК Валюта,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику) КАК ХозяйственнаяОперация,
| &Ссылка КАК ДокументОснование
|ИЗ
| Документ.ОтчетПереработчика КАК ДанныеДокумента
|
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
ЗаполнитьРеквизитыПоРезультатуЗапроса(ДокументОснование, РезультатЗапроса, ДанныеЗаполнения);
КонецПроцедуры
Процедура ЗаполнитьПоОтчетуПереработчика2_5(Знач ДокументОснование, ДанныеЗаполнения)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчетОрганизации <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчетОрганизации.Владелец
| ИНАЧЕ
| ДанныеДокумента.Организация
| КОНЕЦ КАК Организация,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.Валюта КАК ВалютаВзаиморасчетов,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Наличная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыНаличная,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Безналичная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыБезналичная,
| ДанныеДокумента.ФормаОплаты КАК ФормаОплатыЗаявки,
|
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчетОрганизации <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчетОрганизации
| ИНАЧЕ
| ДанныеДокумента.Договор.БанковскийСчет
| КОНЕЦ КАК БанковскийСчет,
|
| НЕОПРЕДЕЛЕНО КАК Касса,
| ДанныеДокумента.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента,
| ДанныеДокумента.ИдентификаторПлатежа КАК ИдентификаторПлатежа,
|
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчетОрганизации <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчетОрганизации.ВалютаДенежныхСредств
| ИНАЧЕ
| ЕСТЬNULL(ДанныеДокумента.Договор.БанковскийСчет.ВалютаДенежныхСредств, ДанныеДокумента.Валюта)
| КОНЕЦ КАК Валюта,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику) КАК ХозяйственнаяОперация,
| &Ссылка КАК ДокументОснование
|ИЗ
| Документ.ОтчетПереработчика2_5 КАК ДанныеДокумента
|
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
ЗаполнитьРеквизитыПоРезультатуЗапроса(ДокументОснование, РезультатЗапроса, ДанныеЗаполнения);
КонецПроцедуры
Процедура ЗаполнитьПоВыкупуПринятыхНаХранениеТоваров(Знач ДокументОснование, ДанныеЗаполнения)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчетОрганизации <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчетОрганизации.Владелец
| ИНАЧЕ
| ДанныеДокумента.Организация
| КОНЕЦ КАК Организация,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.БанковскийСчетОрганизации КАК БанковскийСчет,
| ДанныеДокумента.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента,
| НЕОПРЕДЕЛЕНО КАК Касса,
|
| НЕОПРЕДЕЛЕНО КАК Заказ,
|
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчетОрганизации <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчетОрганизации.ВалютаДенежныхСредств
| ИНАЧЕ
| ДанныеДокумента.Валюта
| КОНЕЦ КАК Валюта,
|
| ДанныеДокумента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| ДанныеДокумента.СуммаДокумента КАК Сумма,
| ДанныеДокумента.ДатаПлатежа КАК ЖелательнаяДатаПлатежа,
| ДанныеДокумента.ИдентификаторПлатежа КАК ИдентификаторПлатежа,
| ДанныеДокумента.ФормаОплаты КАК ФормаОплатыЗаявки,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Наличная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыНаличная,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Безналичная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыБезналичная,
|
| ВЫБОР
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоставкаПодПринципала)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОплатыКлиенту)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику)
| КОНЕЦ КАК ХозяйственнаяОперация,
| &Ссылка КАК ДокументОснование
|ИЗ
| Документ.ВыкупПринятыхНаХранениеТоваров КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
ЗаполнитьРеквизитыПоРезультатуЗапроса(ДокументОснование, РезультатЗапроса, ДанныеЗаполнения);
КонецПроцедуры
Процедура ЗаполнитьПоСписаниюПринятыхНаХранениеТоваров(Знач ДокументОснование, ДанныеЗаполнения)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчетОрганизации <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчетОрганизации.Владелец
| ИНАЧЕ
| ДанныеДокумента.Организация
| КОНЕЦ КАК Организация,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.БанковскийСчетОрганизации КАК БанковскийСчет,
| НЕОПРЕДЕЛЕНО КАК Касса,
| ДанныеДокумента.Договор.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента,
|
| НЕОПРЕДЕЛЕНО КАК Заказ,
|
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчетОрганизации <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) ТОГДА
| ДанныеДокумента.БанковскийСчетОрганизации.ВалютаДенежныхСредств
| ИНАЧЕ
| ДанныеДокумента.Валюта
| КОНЕЦ КАК Валюта,
|
| ДанныеДокумента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| ДанныеДокумента.СуммаДокумента КАК Сумма,
| ДанныеДокумента.ДатаПлатежа КАК ЖелательнаяДатаПлатежа,
| ДанныеДокумента.ИдентификаторПлатежа КАК ИдентификаторПлатежа,
| ДанныеДокумента.ФормаОплаты КАК ФормаОплатыЗаявки,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Наличная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыНаличная,
|
| ВЫБОР КОГДА ДанныеДокумента.ФормаОплаты = ЗНАЧЕНИЕ(Перечисление.ФормыОплаты.Безналичная) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ФормаОплатыБезналичная,
|
| ВЫБОР
| КОГДА ДанныеДокумента.ХозяйственнаяОперация В(
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеПринятыхТоваровНаРасходы))
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОплатыКлиенту)
| КОНЕЦ
| КАК ХозяйственнаяОперация,
| &Ссылка КАК ДокументОснование
|ИЗ
| Документ.ОтчетОСписанииТоваровСХранения КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.ХозяйственнаяОперация В(
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеПринятыхТоваровНаРасходы))
|");
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
ЗаполнитьРеквизитыПоРезультатуЗапроса(ДокументОснование, РезультатЗапроса, ДанныеЗаполнения);
КонецПроцедуры
Процедура ЗаполнитьПоЗаказуКлиента(Знач ДокументОснование, ДанныеЗаполнения)
ДанныеЗаполнения = ДенежныеСредстваСервер.СформироватьДанныеЗаполненияПоВозвратуПлатежаОтЗаказКлиента(ДокументОснование, ЭтотОбъект);
ДенежныеСредстваСервер.ЗаполнитьРасшифровкуПлатежаПоЗаказуКлиента(ДанныеЗаполнения, РасшифровкаПлатежа);
СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма");
КонецПроцедуры
Процедура ЗаполнитьПоПриходномуКассовомуОрдеру(Знач ДокументОснование, ДанныеЗаполнения)
ДанныеЗаполнения = ДенежныеСредстваСервер.СформироватьДанныеЗаполненияПоВозвратуПлатежаОтПриходногоКассовогоОрдера(ДокументОснование);
ДенежныеСредстваСервер.ЗаполнитьРасшифровкуПлатежаПоДокументуОплаты(ДокументОснование, ДанныеЗаполнения.ХозяйственнаяОперация, РасшифровкаПлатежа);
КонецПроцедуры
Процедура ЗаполнитьПоПоступлениюБезналичныхДенежныхСредств(Знач ДокументОснование, ДанныеЗаполнения)
ДанныеЗаполнения = ДенежныеСредстваСервер.СформироватьДанныеЗаполненияПоВозвратуПлатежаОтПоступленияБезналичныхДенежныхСредств(ДокументОснование);
ДенежныеСредстваСервер.ЗаполнитьРасшифровкуПлатежаПоДокументуОплаты(ДокументОснование, ДанныеЗаполнения.ХозяйственнаяОперация, РасшифровкаПлатежа);
КонецПроцедуры
Процедура ЗаполнитьПоПодарочномуСертификату(Знач ДокументОснование, ДанныеЗаполнения)
ПодарочныйСертификат = ДокументОснование;
Если ТипЗнч(ДокументОснование) = Тип("Структура") Тогда
Если ТипЗнч(ДанныеЗаполнения.ПодарочныйСертификат) = Тип("Массив") Тогда
ПодарочныйСертификат = ДанныеЗаполнения.ПодарочныйСертификат[0];
Иначе
ПодарочныйСертификат = ДанныеЗаполнения.ПодарочныйСертификат;
КонецЕсли;
КонецЕсли;
ДанныеПодарочногоСертификата = ПодарочныеСертификатыВызовСервера.ПолучитьДанныеПодарочногоСертификата(ПодарочныйСертификат);
Если Не ДанныеПодарочногоСертификата.УчетПодарочныхСертификатов2_5 Тогда
Текст = НСтр("ru = 'Данная операция поддерживается только для видов подарочных сертификатов, использующих учет подарочных сертификатов 2.5.'");
ВызватьИсключение Текст;
КонецЕсли;
СтатусПодарочногоСертификата = ПодарочныеСертификатыКлиентСервер.ВычислитьСтатусПодарочногоСертификата2_5(ДанныеПодарочногоСертификата);
РазрешенныеСтатусы = Новый Массив;
РазрешенныеСтатусы.Добавить(Перечисления.СтатусыПодарочныхСертификатов.Активирован);
РазрешенныеСтатусы.Добавить(Перечисления.СтатусыПодарочныхСертификатов.ЧастичноПогашен);
Если РазрешенныеСтатусы.Найти(СтатусПодарочногоСертификата) = Неопределено Тогда
Текст = НСтр("ru = 'Данная операция поддерживается только для подарочных сертификатов в статусе ""Активирован"" или ""Частично погашен"".'");
ВызватьИсключение Текст;
КонецЕсли;
Если ДанныеПодарочногоСертификата.Номинал <= 0 Тогда
Текст = НСтр("ru = 'Данная операция поддерживается только для подарочных сертификатов с ненулевым номиналом.'");
ВызватьИсключение Текст;
КонецЕсли;
ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОплатыКлиенту");
Организация = ДанныеПодарочногоСертификата.Организация;
СуммаДокумента = ДанныеПодарочногоСертификата.Номинал;
ОбъектРасчетов = ДанныеПодарочногоСертификата.ОбъектРасчетов;
Контрагент = Справочники.Контрагенты.РозничныйПокупатель;
Партнер = Справочники.Партнеры.РозничныйПокупатель;
Если ТипЗнч(ДокументОснование) = Тип("Структура") И ДанныеЗаполнения.Свойство("Контрагент") Тогда
Контрагент = ДанныеЗаполнения.Контрагент;
Партнер = ДенежныеСредстваСервер.ПолучитьПартнераПоКонтрагенту(Контрагент, ХозяйственнаяОперация);
КонецЕсли;
НалогообложениеНДС = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДанныеПодарочногоСертификата.ОбъектРасчетов, "НалогообложениеНДС");
ВалютаРеглУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Организация);
Валюта = ДанныеПодарочногоСертификата.Валюта;
НоваяСтрока = РасшифровкаПлатежа.Добавить();
НоваяСтрока.Партнер = Партнер;
НоваяСтрока.ОбъектРасчетов = ОбъектРасчетов;
НоваяСтрока.Сумма = СуммаДокумента;
НоваяСтрока.СтатьяДвиженияДенежныхСредств = ДанныеПодарочногоСертификата.СтатьяДвиженияДенежныхСредствВозврат;
НоваяСтрока.КурсЧислительВзаиморасчетов = 1;
НоваяСтрока.КурсЗнаменательВзаиморасчетов = 1;
НоваяСтрока.ВалютаВзаиморасчетов = Валюта;
УчетНДСУП.ЗаполнитьСтавкуНДСДляПлатежей(НоваяСтрока.СтавкаНДС, НалогообложениеНДС, Организация, Дата);
СтруктураПересчетаСуммы = Новый Структура;
СтруктураПересчетаСуммы.Вставить("ЦенаВключаетНДС", Истина);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, Неопределено);
КурсИКратность = ДенежныеСредстваСервер.КурсЧислительИКурсЗнаменательВзаиморасчетов(Валюта, НоваяСтрока.ВалютаВзаиморасчетов,
ВалютаРеглУчета, Дата, ОбъектРасчетов);
НоваяСтрока.КурсЧислительВзаиморасчетов = КурсИКратность.КурсЧислитель;
НоваяСтрока.КурсЗнаменательВзаиморасчетов = КурсИКратность.КурсЗнаменатель;
ДенежныеСредстваКлиентСервер.РассчитатьСуммуВзаиморасчетовВСтрокеРасшифровки(
НоваяСтрока, Валюта, ВалютаРеглУчета);
КонецПроцедуры
Процедура ЗаполнитьПоОперацииПоПлатежнойКарте(Знач ДокументОснование, ДанныеЗаполнения)
ДанныеЗаполнения = ДенежныеСредстваСервер.ДанныеЗаполненияПоВозвратуПлатежаЭквайринговойОперации(ДокументОснование);
Если ЗначениеЗаполнено(ДокументОснование) Тогда
ДоговорЭквайринга = ДанныеЗаполнения.ДоговорЭквайринга;
КонецЕсли;
ДенежныеСредстваСервер.ЗаполнитьРасшифровкуПлатежаПоДокументуОплаты(ДокументОснование, ДанныеЗаполнения.ХозяйственнаяОперация, РасшифровкаПлатежа);
КонецПроцедуры
Процедура ЗаполнитьПоАктуПремииКлиенту(Знач ДокументОснование, ДанныеЗаполнения)
ШаблонСообщения = НСтр("ru = 'Документ %1 находится в статусе ""%2"". Ввод на основании разрешен только в статусе ""Получен"".'");
ТекстЗапроса = Документы.АктПремииКлиенту.ТекстЗапросаДляЗаполненияНаОснованииЗаявкиНаРасходДС();
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса());
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
Если Выборка.ЗапрещенВводПоСтатусу Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ШаблонСообщения,
Выборка.ПредставлениеДокумента,
Выборка.ПредставлениеСтатуса);
ВызватьИсключение Текст;
КонецЕсли;
ЗаполнитьРеквизитыПоРезультатуЗапроса(ДокументОснование, РезультатЗапроса, ДанныеЗаполнения,, 0);
Документы.АктПремииКлиенту.ЗаполнитьРасшифровкуПлатежаПриВводеНаОсновании(ЭтотОбъект, Выборка);
КонецПроцедуры
#КонецОбласти
#Область Прочее
Функция УстановитьСтатус(НовыйСтатус, ДополнительныеПараметры) Экспорт
ЗначениеНовогоСтатуса = Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств[НовыйСтатус];
Если ЗначениеНовогоСтатуса = Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.Согласована
Или Статус <> Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.Согласована
И ЗначениеНовогоСтатуса = Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.КОплате Тогда
КтоРешил = Пользователи.ТекущийПользователь();
КонецЕсли;
Статус = ЗначениеНовогоСтатуса;
Возврат ПроверитьЗаполнение();
КонецФункции
Процедура ПроверитьНаличиеОплатыЗаявки(Отказ)
Если Не ЭтоНовый() И Статус <> Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.КОплате Тогда
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДенежныеСредства.СуммаРасход КАК Оплачено
|ИЗ
| РегистрНакопления.ДенежныеСредстваКВыплате.Обороты(,,Период,
| ЗаявкаНаРасходованиеДенежныхСредств = &Заявка
| ) КАК ДенежныеСредства
|ГДЕ
| ДенежныеСредства.СуммаРасход > 0
|");
Запрос.УстановитьПараметр("Заявка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Текст = НСтр("ru = 'Заявка оплачена. Нельзя изменять статус заявки ""К оплате""'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Текст, ЭтотОбъект, "Статус",, Отказ);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ПроверитьСоответствиеВалютыВзаиморасчетов(Отказ)
Запрос = Новый Запрос("ВЫБРАТЬ
| *
|ПОМЕСТИТЬ ТаблицаДокумента
|ИЗ
| &ТаблицаДокумента КАК ТаблицаДокумента
|;
|
|
|ВЫБРАТЬ
| ТаблицаДокумента.НомерСтроки КАК НомерСтроки
|
|ИЗ
| ТаблицаДокумента КАК ТаблицаДокумента
|
|ГДЕ
| ТаблицаДокумента.ВалютаВзаиморасчетов <> &ВалютаЗаявки
|
|УПОРЯДОЧИТЬ ПО
| ТаблицаДокумента.НомерСтроки
|;
|");
ТаблицаДокумента = РасшифровкаПлатежа.Выгрузить();
Запрос.УстановитьПараметр("ТаблицаДокумента", ТаблицаДокумента);
Запрос.УстановитьПараметр("ВалютаЗаявки",Валюта);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Валюта взаиморасчетов в строке %1 списка ""Расшифровка платежа"" не соответствует валюте документа %2'"),
Выборка.НомерСтроки,
Валюта);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
Текст,
ЭтотОбъект,
"РасшифровкаПлатежа[" + (Выборка.НомерСтроки - 1) + "].ВалютаВзаиморасчетов",,
Отказ);
КонецЦикла;
КонецПроцедуры
Процедура ПроверитьДатыПогашения(Отказ)
Для Каждого СтрокаРасшифровки Из РасшифровкаПлатежа Цикл
Если ЗначениеЗаполнено(СтрокаРасшифровки.ДатаПогашения)
И СтрокаРасшифровки.ДатаПогашения < ЖелательнаяДатаПлатежа Тогда
ТекстОшибки = НСтр("ru = 'Дата погашения не может быть раньше даты платежа.'");
Если ДополнительныеСвойства.Свойство("РасшифровкаБезРазбиения")
И ДополнительныеСвойства.РасшифровкаБезРазбиения Тогда
ПутьКДаннымОшибки = "ДатаПогашенияБезРазбиения";
Иначе
ПутьКДаннымОшибки = "Объект.РасшифровкаПлатежа[" + (СтрокаРасшифровки.НомерСтроки - 1) + "].ДатаПогашения";
КонецЕсли;
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , ПутьКДаннымОшибки, , Отказ);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецЕсли