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