#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Функция УстановитьСтатус(НовыйСтатус, ДополнительныеПараметры) Экспорт
Статус = Перечисления.СтатусыРаспоряженийНаПеремещениеДенежныхСредств[НовыйСтатус];
Возврат ПроверитьЗаполнение();
КонецФункции
#КонецОбласти
#Область ОбработчикиСобытий
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Автор = Пользователи.ТекущийПользователь();
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда
Если ДанныеЗаполнения.Свойство("Организация") Тогда
Организация = ДанныеЗаполнения.Организация;
КонецЕсли;
Если ДанныеЗаполнения.Свойство("Валюта") Тогда
Валюта = ДанныеЗаполнения.Валюта;
КонецЕсли;
КонецЕсли;
ЗаполнениеОбъектовПоСтатистике.ЗаполнитьРеквизитыОбъекта(ЭтотОбъект, ДанныеЗаполнения);
ИнициализироватьДокумент(ДанныеЗаполнения);
КонецПроцедуры
Процедура ПриКопировании(ОбъектКопирования)
Статус = Перечисления.СтатусыРаспоряженийНаПеремещениеДенежныхСредств.НеСогласовано;
ДатаПлатежа = Дата(1, 1, 1);
КтоРешил = Неопределено;
Автор = Пользователи.ТекущийПользователь();
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если (Статус = Перечисления.СтатусыРаспоряженийНаПеремещениеДенежныхСредств.КОплате
Или Статус = Перечисления.СтатусыРаспоряженийНаПеремещениеДенежныхСредств.Согласовано)
И ЗначениеЗаполнено(ДатаПлатежа)
И ДатаПлатежа < НачалоДня(Дата) Тогда
ТекстОшибки = НСтр("ru='Дата платежа не может быть меньше даты документа'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстОшибки,
ЭтотОбъект,
"ДатаПлатежа",,
Отказ);
КонецЕсли;
МассивВсехРеквизитов = Новый Массив;
МассивРеквизитовОперации = Новый Массив;
МассивНепроверяемыхРеквизитов = Новый Массив;
Документы.РаспоряжениеНаПеремещениеДенежныхСредств.ЗаполнитьИменаРеквизитовПоХозяйственнойОперации(
ХозяйственнаяОперация,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
ОбщегоНазначенияУТКлиентСервер.ЗаполнитьМассивНепроверяемыхРеквизитов(
МассивВсехРеквизитов,
МассивРеквизитовОперации,
МассивНепроверяемыхРеквизитов);
ДенежныеСредстваСервер.ПроверитьКассуПолучателя(ЭтотОбъект, Отказ);
ДенежныеСредстваСервер.ПроверитьБанковскийСчетПолучатель(ЭтотОбъект, Отказ);
Если Статус = Перечисления.СтатусыРаспоряженийНаПеремещениеДенежныхСредств.Согласовано Тогда
ПравоСогласования = ПраваПользователяПовтИсп.СогласованиеРаспоряженийНаПеремещениеДенежныхСредств();
Если Не ПравоСогласования Тогда
ТекстОшибки = НСтр("ru='У вас нет права согласования распоряжений на перемещение денежных средств.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстОшибки,
ЭтотОбъект,,,
Отказ);
КонецЕсли;
ИначеЕсли Статус = Перечисления.СтатусыРаспоряженийНаПеремещениеДенежныхСредств.КОплате Тогда
ПравоУтверждения = ПраваПользователяПовтИсп.УтверждениеРаспоряженийНаПеремещениеДенежныхСредств();
Если Не ПравоУтверждения Тогда
ТекстОшибки = НСтр("ru='У вас нет права утверждения к оплате распоряжений на перемещение денежных средств.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстОшибки,
ЭтотОбъект,,,
Отказ);
КонецЕсли;
КонецЕсли;
ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, МассивНепроверяемыхРеквизитов);
РаспоряжениеНаПеремещениеДенежныхСредствЛокализация.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);
ПроведениеДокументов.ПередЗаписьюДокумента(ЭтотОбъект, РежимЗаписи, РежимПроведения);
Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
Если Статус = Перечисления.СтатусыРаспоряженийНаПеремещениеДенежныхСредств.Согласовано Тогда
Если КтоРешил <> Пользователи.ТекущийПользователь() Тогда
КтоРешил = Пользователи.ТекущийПользователь();
КонецЕсли;
ИначеЕсли Статус = Перечисления.СтатусыРаспоряженийНаПеремещениеДенежныхСредств.КОплате Тогда
Если Не ЗначениеЗаполнено(КтоРешил) Тогда
КтоРешил = Пользователи.ТекущийПользователь();
КонецЕсли;
КонецЕсли;
КонецЕсли;
СтатьяДвиженияДенежныхСредств = Справочники.СтатьиДвиженияДенежныхСредств.ПредопределеннаяСтатьяДДС(ХозяйственнаяОперация, Валюта);
МассивВсехРеквизитов = Новый Массив;
МассивРеквизитовОперации = Новый Массив;
Документы.РаспоряжениеНаПеремещениеДенежныхСредств.ЗаполнитьИменаРеквизитовПоХозяйственнойОперации(
ХозяйственнаяОперация,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
ДенежныеСредстваСервер.ОчиститьНеиспользуемыеРеквизиты(
ЭтотОбъект,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
ПроведениеДокументов.ПриЗаписиДокумента(ЭтотОбъект, Отказ);
КонецПроцедуры
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
ПроведениеДокументов.ОбработкаПроведенияДокумента(ЭтотОбъект, Отказ);
КонецПроцедуры
Процедура ОбработкаУдаленияПроведения(Отказ)
ПроведениеДокументов.ОбработкаУдаленияПроведенияДокумента(ЭтотОбъект, Отказ);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ИнициализацияИЗаполнение
Процедура ИнициализироватьДокумент(ДанныеЗаполнения = Неопределено)
Если ТипЗнч(ДанныеЗаполнения) <> Тип("Структура") Или НЕ ДанныеЗаполнения.Свойство("Организация") Тогда
Организация = ЗначениеНастроекПовтИсп.ПолучитьОрганизациюПоУмолчанию(Организация);
КонецЕсли;
Если Не ЗначениеЗаполнено(Валюта) Тогда
Валюта = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Организация);
КонецЕсли;
Если ЗначениеЗаполнено(Организация) Тогда
Касса = Справочники.Кассы.ПолучитьКассуПоУмолчанию(Организация, Валюта);
КассаПолучатель = Касса;
БанковскийСчет = Справочники.БанковскиеСчетаОрганизаций.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(Организация, Валюта);
БанковскийСчетПолучатель = БанковскийСчет;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецЕсли