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