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