Заявление о ввозе товаров из ЕАЭС / Модуль объекта

файл
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ОбработчикиСобытий

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
	
	ТипДанныхЗаполнения = ТипЗнч(ДанныеЗаполнения);
	Если ДанныеЗаполнения <> Неопределено И ТипДанныхЗаполнения <> Тип("Структура")
		И Метаданные().ВводитсяНаОсновании.Содержит(ДанныеЗаполнения.Метаданные()) Тогда
			
		ЗаполнитьПоДокументуОснованию(ДанныеЗаполнения, СтандартнаяОбработка);
		
	ИначеЕсли ДанныеЗаполнения <> Неопределено И ТипДанныхЗаполнения = Тип("Структура")
		И ДанныеЗаполнения.Свойство("ДокументОснование")
		И Метаданные().ВводитсяНаОсновании.Содержит(ДанныеЗаполнения.ДокументОснование.Метаданные()) Тогда
		
		ЗаполнитьПоДокументуОснованию(ДанныеЗаполнения.ДокументОснование, СтандартнаяОбработка);
		
	ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ПриобретениеУслугПрочихАктивов") Тогда
		
		ЗаполнитьПоДокументуОснованию(ДанныеЗаполнения, СтандартнаяОбработка);
		
	ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаявлениеОВвозеТоваров") Тогда 
		
 		ИсправлениеДокументов.ЗаполнитьИсправление(ЭтотОбъект, ДанныеЗаполнения);
	
	КонецЕсли;
	
	ИнициализироватьДокумент(ДанныеЗаполнения);
	
КонецПроцедуры

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
	
	ПроведениеДокументов.ОбработкаПроведенияДокумента(ЭтотОбъект, Отказ);
	
	ЗаявлениеОВвозеЛокализация.ОбработкаПроведения(ЭтотОбъект, Отказ, РежимПроведения);
	
КонецПроцедуры

Процедура ОбработкаУдаленияПроведения(Отказ)
	
	ПроведениеДокументов.ОбработкаУдаленияПроведенияДокумента(ЭтотОбъект, Отказ);
	
КонецПроцедуры

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
	
	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;

	ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);
	
	ИсправлениеДокументов.ПередЗаписью(ЭтотОбъект, Отказ, РежимЗаписи, РежимПроведения);
	
	ПроведениеДокументов.ПередЗаписьюДокумента(ЭтотОбъект, РежимЗаписи, РежимПроведения);
	
	ОбщегоНазначенияУТ.ЗаполнитьИдентификаторыДокумента(ЭтотОбъект, "Товары");
	
	СуммаДокумента = Товары.Итог("СуммаНДС");
	
	Если РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения Тогда
		РучнаяКорректировкаЖурналаСФ = Ложь;
	КонецЕсли;
	
КонецПроцедуры

Процедура ПриЗаписи(Отказ)
	
	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;
	
	ПроведениеДокументов.ПриЗаписиДокумента(ЭтотОбъект, Отказ);
	
	Если НЕ Отказ Тогда
		МассивДокументов = Новый Массив;
		МассивДокументов.Добавить(Ссылка);
		УчетНДСУП.СформироватьЗаданияПоДокументам(МассивДокументов);
	КонецЕсли;
	
КонецПроцедуры

Процедура ПриКопировании(ОбъектКопирования)
	
	ИсправлениеДокументов.ПриКопировании(ЭтотОбъект, ОбъектКопирования);
	
	ОплатаПодтверждена               = Ложь;
	ДатаПодтвержденияОплаты          = Неопределено;
	ДатаДокументаПеречисленияНалога  = Неопределено;
	НомерДокументаПеречисленияНалога = "";
	ДатаОтправки                     = Неопределено;
	
	ИнициализироватьДокумент();
	
	ОбщегоНазначенияУТ.ОчиститьИдентификаторыДокумента(ЭтотОбъект, "Товары");
	
КонецПроцедуры

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
	
	Килограммы = Справочники.УпаковкиЕдиницыИзмерения.НайтиПоКоду("166");
	
	Для ТекИндекс = 0 По Товары.Количество()-1 Цикл
		
		ЕдиницаИзмеренияКодаТНВЭД = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Товары[ТекИндекс].КодТНВЭД, "ЕдиницаИзмерения");
		
		Если Не ЗначениеЗаполнено(Товары[ТекИндекс].КоличествоПоТНВЭД) И
			ЕдиницаИзмеренияКодаТНВЭД <> Килограммы Тогда
			
			ТекстОшибки = НСтр("ru='Не заполнена колонка ""Количество по ТН ВЭД"" в строке %НомерСтроки% списка ""Товары""'");
			ТекстОшибки =  СтрЗаменить(ТекстОшибки, "%НомерСтроки%", Товары[ТекИндекс].НомерСтроки);
			
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
				ТекстОшибки,
				ЭтотОбъект,
				ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Товары", Товары[ТекИндекс].НомерСтроки, "КоличествоПоТНВЭД"),
				,
				Отказ);
			
		КонецЕсли;
		
		ШаблонТекстаОшибкиТовар = НСтр("ru='Не заполнена колонка ""Товар"" в строке %НомерСтроки% списка ""Товары""'");
		
		Если Не ЗначениеЗаполнено(Товары[ТекИндекс].Номенклатура)
			И Не ЗначениеЗаполнено(Товары[ТекИндекс].Содержание) Тогда
				
			ТекстОшибки =  СтрЗаменить(ШаблонТекстаОшибкиТовар, "%НомерСтроки%", Товары[ТекИндекс].НомерСтроки);
			
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
				ТекстОшибки,
				ЭтотОбъект,
				ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Товары", Товары[ТекИндекс].НомерСтроки, "Товар"),
				,
				Отказ);	
				
		КонецЕсли;
		
	КонецЦикла;
	
	ИсправлениеДокументов.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

#Область ИнициализацияИЗаполнение

Процедура ИнициализироватьДокумент(ДанныеЗаполнения = Неопределено)

	СтруктураЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(ЭтотОбъект);
	СтруктураЗаполненияСтавкиНДС.ИнициализацияВходящегоДокумента = Истина;
	КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
	
	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("СкорректироватьСтавкуНДС", СтруктураЗаполненияСтавкиНДС);
	ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Товары, СтруктураДействий, КэшированныеЗначения);

	Для Каждого Строка Из КэшированныеЗначения.ОбработанныеСтроки Цикл
		Строка.СуммаНДС = УчетНДСУПКлиентСервер.РассчитатьСуммуНДС(
			Строка.НалоговаяБазаНДС,
			УчетНДСУПКлиентСервер.ЗначениеСтавкиНДС(Строка.СтавкаНДС),
			Ложь);
	КонецЦикла;
	
КонецПроцедуры

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

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

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


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

#КонецОбласти

#КонецОбласти

#КонецЕсли

Связанные материалы