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