Таможенная декларация на импорт / Рабочее место / Модуль формы

файл

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

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

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

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

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура ПериодВариантПриИзменении(Элемент)
	
	УстановитьОтборПоДате(Период, ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ПериодДатаНачалаПриИзменении(Элемент)
	
	УстановитьОтборПоДате(Период, ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ПериодДатаОкончанияПриИзменении(Элемент)
	
	УстановитьОтборПоДате(Период, ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ОрганизацияОтборПриИзменении(Элемент)
	
	Если ОрганизацияСохраненноеЗначение <> Организация Тогда
		
		УстановитьОтборПоОрганизации();
		ОрганизацияСохраненноеЗначение = Организация;
		
	КонецЕсли;
	
КонецПроцедуры

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

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

#Область ОбработчикиСобытийЭлементовТаблицыФормыКОформлению

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

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

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура СоздатьТаможеннуюДекларацию(Команда)
	СписокКОформлению = Элементы.КОформлению;
	ТекущаяСтрокаКОформлению = СписокКОформлению.ТекущиеДанные;
	
	Если ТекущаяСтрокаКОформлению = Неопределено Тогда
		ТекстПредупреждения = НСтр("ru = 'Команда не может быть выполнена для указанного объекта!'");
		ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
		Возврат;
	КонецЕсли;

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

&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
	
	СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
	
КонецПроцедуры

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

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

#Область ПриИзмененииРеквизитов

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьОтборПоДате(Период, Форма)
	
	Если ЗначениеЗаполнено(Период.ДатаНачала)
		И ЗначениеЗаполнено(Период.ДатаОкончания) 
		И Период.ДатаНачала > Период.ДатаОкончания Тогда
		
		Период.ДатаОкончания = Период.ДатаНачала;			
		
	КонецЕсли;
	
	ДатаНачала =
		?(ЗначениеЗаполнено(Период.ДатаНачала), НачалоДня(Период.ДатаНачала), '00010101');
	Форма.КОформлению.Параметры.УстановитьЗначениеПараметра("ДатаНачала", ДатаНачала);
	
	ДатаОкончания =
		?(ЗначениеЗаполнено(Период.ДатаОкончания), КонецДня(Период.ДатаОкончания) + 1, '39991231235959');
	Форма.КОформлению.Параметры.УстановитьЗначениеПараметра("ДатаОкончания", ДатаОкончания);
	
КонецПроцедуры

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

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

&НаСервере
Функция ТекстЗапросаТаможеннаяДекларацияИмпортКОформлению()

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

	Возврат ТекстЗапроса;
	
КонецФункции

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

&НаСервере
Процедура УстановитьОтборПоТипуДокументаИмпорта()
	
	КОформлению.Параметры.УстановитьЗначениеПараметра("ТипДокументаИмпорта", ИдентификаторТаможеннаяДекларацияИмпорт);
	
КонецПроцедуры

&НаКлиенте
Функция ПараметрыЖурнала()
	
	СтруктураБыстрогоОтбора = Новый Структура;
	СтруктураБыстрогоОтбора.Вставить("Организация",Организация);
	ПараметрыЖурнала = Новый Структура;
	ПараметрыЖурнала.Вставить("СтруктураБыстрогоОтбора",СтруктураБыстрогоОтбора);
	ПараметрыЖурнала.Вставить("КлючНазначенияФормы", "ТаможенныеДекларацииИмпорт");
	ПараметрыЖурнала.Вставить("ИмяРабочегоМеста","ЖурналДокументовЗакупки");
	ПараметрыЖурнала.Вставить("СинонимЖурнала",НСтр("ru = 'Документы закупки'"));
	
	Возврат ПараметрыЖурнала;
	
КонецФункции

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


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

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

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