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