Поступление товаров на склад / Модуль объекта

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

#Область ПрограммныйИнтерфейс

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

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

// Инициализирует параметры заполнения видов запасов дополнительных свойств документа, используемых при записи документа
// в режиме 'Проведения' или 'Отмены проведения'.
//
// Параметры:
//	ДокументОбъект - ДокументОбъект.ПоступлениеТоваровНаСклад - документ, для которого выполняется инициализация параметров.
//	РежимЗаписи - РежимЗаписиДокумента - режим записи документа.
//
Процедура ИнициализироватьПараметрыЗаполненияВидовЗапасовДляПроведения(ДокументОбъект, РежимЗаписи = Неопределено) Экспорт
	
	ПараметрыЗаполненияВидовЗапасов = ЗапасыСервер.ПараметрыЗаполненияВидовЗапасов();
	ПараметрыЗаполненияВидовЗапасов.ИспользоватьРаздельноеОформлениеЗакупок = Истина;
	ДокументОбъект.ДополнительныеСвойства.Вставить("ПараметрыЗаполненияВидовЗапасов", ПараметрыЗаполненияВидовЗапасов);
	
КонецПроцедуры

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

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

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

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

КонецПроцедуры

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

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

КонецПроцедуры

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

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

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

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

	Автор = Пользователи.ТекущийПользователь();
	
КонецПроцедуры

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

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

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

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

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

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

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

Процедура ЗаполнитьДокументНаОснованииЗаказаПоставщику(ДокументОснование,
														СкладПоступления = Неопределено,
														ХозяйственнаяОперацияПриемки = Неопределено,
														ЗаполнятьПоНакладной = Ложь,
														ЗаполнятьПоОрдеру = Ложь)
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ЗаказПоставщику.Ссылка					КАК Ссылка,
	|	ЗаказПоставщику.Соглашение				КАК Соглашение,
	|	ЗаказПоставщику.Партнер					КАК Партнер,
	|	ЗаказПоставщику.Контрагент				КАК Контрагент,
	|	ЗаказПоставщику.Организация				КАК Организация,
	|	ЗаказПоставщику.Статус					КАК СтатусДокумента,
	|	ЗаказПоставщику.Договор					КАК Договор,
	|	ЗаказПоставщику.Сделка					КАК Сделка,
	|	ЗаказПоставщику.Валюта					КАК Валюта,
	|	ЕСТЬNULL(Соглашения.ВидЦеныПоставщика, ЗНАЧЕНИЕ(Справочник.ВидыЦенПоставщиков.ПустаяСсылка)) КАК ВидЦеныПоставщика,
	|	ЗаказПоставщику.ЦенаВключаетНДС			КАК ЦенаВключаетНДС,
	|	ЗаказПоставщику.НалогообложениеНДС		КАК НалогообложениеНДС,
	|	ЗаказПоставщику.ЗакупкаПодДеятельность	КАК ВидДеятельностиНДС,
	|	ЗаказПоставщику.НаправлениеДеятельности	КАК НаправлениеДеятельности,
	|	НЕ ЗаказПоставщику.Проведен				КАК ЕстьОшибкиПроведен,
	|	ВЫБОР
	|		КОГДА ЗаказПоставщику.Статус В (ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПоставщикам.НеСогласован),
	|										ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПоставщикам.Согласован))
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ									КАК ЕстьОшибкиСтатус
	|ПОМЕСТИТЬ ВТРаспоряжение
	|ИЗ
	|	Документ.ЗаказПоставщику КАК ЗаказПоставщику
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СоглашенияСПоставщиками КАК Соглашения
	|		ПО ЗаказПоставщику.Соглашение = Соглашения.Ссылка
	|ГДЕ
	|	ЗаказПоставщику.Ссылка = &ДокументОснование
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	Ссылка,
	|	Договор
	|;
	|
	|//////////////////////////////////////////////////////////////////////////////// 1
	|ВЫБРАТЬ
	|	ТоварыКПоступлению.ДокументПоступления	КАК ДокументПоступления,
	|	ТоварыКПоступлению.Склад				КАК Склад,
	|	ТоварыКПоступлению.Номенклатура			КАК Номенклатура,
	|	ТоварыКПоступлению.Характеристика		КАК Характеристика,
	|	ТоварыКПоступлению.Назначение			КАК Назначение,
	|	ТоварыКПоступлению.Серия				КАК Серия,
	|	ТоварыКПоступлению.КОформлениюПоступленийПоРаспоряжениюОстаток КАК Количество,
	|	ТоварыКПоступлению.КОформлениюПоступленийПоРаспоряжениюОстаток КАК КоличествоУпаковок
	|ПОМЕСТИТЬ ВТТовары
	|ИЗ
	|	РегистрНакопления.ТоварыКПоступлению.Остатки(
	|			,
	|			ДокументПоступления = &ДокументОснование
	|			И ВЫБОР
	|				КОГДА &СкладУказан
	|					ТОГДА Склад = &СкладПоступления
	|				ИНАЧЕ ИСТИНА
	|			КОНЕЦ
	|			И Номенклатура.ТипНоменклатуры В (&Товары)
	|	) КАК ТоварыКПоступлению
	|ГДЕ
	|	&ЗаполнятьПоЗаказу
	|	И ТоварыКПоступлению.КОформлениюПоступленийПоРаспоряжениюОстаток > 0
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ТоварыКПоступлению.ДокументПоступления	КАК ДокументПоступления,
	|	ТоварыКПоступлению.Склад				КАК Склад,
	|	ТоварыКПоступлению.Номенклатура			КАК Номенклатура,
	|	ТоварыКПоступлению.Характеристика		КАК Характеристика,
	|	ТоварыКПоступлению.Назначение			КАК Назначение,
	|	ТоварыКПоступлению.Серия				КАК Серия,
	|	ТоварыКПоступлению.КОформлениюПоступленийПоНакладнымОстаток КАК Количество,
	|	ТоварыКПоступлению.КОформлениюПоступленийПоНакладнымОстаток КАК КоличествоУпаковок
	|ИЗ
	|	РегистрНакопления.ТоварыКПоступлению.Остатки(
	|			,
	|			ДокументПоступления = &ДокументОснование
	|			И ВЫБОР
	|				КОГДА &СкладУказан
	|					ТОГДА Склад = &СкладПоступления
	|				ИНАЧЕ ИСТИНА
	|			КОНЕЦ
	|			И Номенклатура.ТипНоменклатуры В (&Товары)
	|	) КАК ТоварыКПоступлению
	|ГДЕ
	|	&ЗаполнятьПоНакладной
	|	И ТоварыКПоступлению.КОформлениюПоступленийПоНакладнымОстаток > 0
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ТоварыКПоступлению.ДокументПоступления	КАК ДокументПоступления,
	|	ТоварыКПоступлению.Склад				КАК Склад,
	|	ТоварыКПоступлению.Номенклатура			КАК Номенклатура,
	|	ТоварыКПоступлению.Характеристика		КАК Характеристика,
	|	ТоварыКПоступлению.Назначение			КАК Назначение,
	|	ТоварыКПоступлению.Серия				КАК Серия,
	|	ТоварыКПоступлению.КОформлениюПоступленийПоОрдерамОстаток КАК Количество,
	|	ТоварыКПоступлению.КОформлениюПоступленийПоОрдерамОстаток КАК КоличествоУпаковок
	|ИЗ
	|	РегистрНакопления.ТоварыКПоступлению.Остатки(
	|			,
	|			ДокументПоступления = &ДокументОснование
	|			И ВЫБОР
	|				КОГДА &СкладУказан
	|					ТОГДА Склад = &СкладПоступления
	|				ИНАЧЕ ИСТИНА
	|			КОНЕЦ
	|			И Номенклатура.ТипНоменклатуры В (&Товары)
	|	) КАК ТоварыКПоступлению
	|ГДЕ
	|	&ЗаполнятьПоОрдеру
	|	И ТоварыКПоступлению.КОформлениюПоступленийПоОрдерамОстаток > 0
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	ДокументПоступления,
	|	Номенклатура,
	|	Характеристика,
	|	Назначение,
	|	Серия,
	|	Склад
	|;
	|
	|//////////////////////////////////////////////////////////////////////////////// 2
	|ВЫБРАТЬ
	|	УпаковкиТоваров.ДокументПоступления			КАК ДокументПоступления,
	|	УпаковкиТоваров.Склад						КАК Склад,
	|	УпаковкиТоваров.Номенклатура				КАК Номенклатура,
	|	УпаковкиТоваров.Характеристика				КАК Характеристика,
	|	УпаковкиТоваров.Назначение					КАК Назначение,
	|	УпаковкиТоваров.Серия						КАК Серия,
	|	УпаковкиТоваров.Упаковка					КАК Упаковка,
	|	&ТекстЗапросаКоэффициентУпаковки			КАК КоэффициентУпаковки,
	|	СУММА(УпаковкиТоваров.Количество)			КАК Количество,
	|	СУММА(УпаковкиТоваров.КоличествоУпаковок)	КАК КоличествоУпаковок
	|ПОМЕСТИТЬ ВТУпаковкиТоваров
	|ИЗ
	|	(ВЫБРАТЬ
	|		ТоварыКПоступлению.ДокументПоступления	КАК ДокументПоступления,
	|		ТоварыКПоступлению.Склад				КАК Склад,
	|		ТоварыКПоступлению.Номенклатура			КАК Номенклатура,
	|		ТоварыКПоступлению.Характеристика		КАК Характеристика,
	|		ТоварыКПоступлению.Назначение			КАК Назначение,
	|		ТоварыКПоступлению.Серия				КАК Серия,
	|		ТоварыЗаказа.Упаковка					КАК Упаковка,
	|		СУММА(ТоварыЗаказа.Количество)			КАК Количество,
	|		СУММА(ТоварыЗаказа.КоличествоУпаковок)	КАК КоличествоУпаковок
	|	ИЗ
	|		ВТТовары КАК ТоварыКПоступлению
	|			ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику.Товары КАК ТоварыЗаказа
	|			ПО ТоварыКПоступлению.ДокументПоступления = ТоварыЗаказа.Ссылка
	|				И ТоварыКПоступлению.Склад = ТоварыЗаказа.Склад
	|				И ТоварыКПоступлению.Номенклатура = ТоварыЗаказа.Номенклатура
	|				И ТоварыКПоступлению.Характеристика = ТоварыЗаказа.Характеристика
	|				И ТоварыКПоступлению.Назначение = ТоварыЗаказа.Назначение
	|	ГДЕ
	|		НЕ ЕСТЬNULL(ТоварыЗаказа.Отменено, ЛОЖЬ)
	|	
	|	СГРУППИРОВАТЬ ПО
	|		ТоварыКПоступлению.ДокументПоступления,
	|		ТоварыКПоступлению.Склад,
	|		ТоварыКПоступлению.Номенклатура,
	|		ТоварыКПоступлению.Характеристика,
	|		ТоварыКПоступлению.Назначение,
	|		ТоварыКПоступлению.Серия,
	|		ТоварыЗаказа.Упаковка
	|	
	|	ОБЪЕДИНИТЬ ВСЕ
	|	
	|	ВЫБРАТЬ
	|		ТоварыКПоступлению.ДокументПоступления	КАК ДокументПоступления,
	|		ТоварыКПоступлению.Склад				КАК Склад,
	|		ТоварыКПоступлению.Номенклатура			КАК Номенклатура,
	|		ТоварыКПоступлению.Характеристика		КАК Характеристика,
	|		ТоварыКПоступлению.Назначение			КАК Назначение,
	|		ТоварыКПоступлению.Серия				КАК Серия,
	|		ТоварыПоступления.Упаковка				КАК Упаковка,
	|		-СУММА(ТоварыПоступления.Количество)	КАК Количество,
	|		-СУММА(ТоварыПоступления.КоличествоУпаковок) КАК КоличествоУпаковок
	|ИЗ
	|	ВТТовары КАК ТоварыКПоступлению
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровНаСклад КАК ПоступлениеНаСклад
	|		ПО ТоварыКПоступлению.ДокументПоступления = ПоступлениеНаСклад.Распоряжение
	|			И ТоварыКПоступлению.Склад = ПоступлениеНаСклад.Склад
	|		
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровНаСклад.Товары КАК ТоварыПоступления
	|		ПО ПоступлениеНаСклад.Ссылка = ТоварыПоступления.Ссылка
	|			И ТоварыКПоступлению.Номенклатура = ТоварыПоступления.Номенклатура
	|			И ТоварыКПоступлению.Характеристика = ТоварыПоступления.Характеристика
	|			И ТоварыКПоступлению.Назначение = ТоварыПоступления.Назначение
	|	ГДЕ
	|		ЕСТЬNULL(ПоступлениеНаСклад.Проведен, ЛОЖЬ)
	|	
	|	СГРУППИРОВАТЬ ПО
	|		ТоварыКПоступлению.ДокументПоступления,
	|		ТоварыКПоступлению.Склад,
	|		ТоварыКПоступлению.Номенклатура,
	|		ТоварыКПоступлению.Характеристика,
	|		ТоварыКПоступлению.Назначение,
	|		ТоварыКПоступлению.Серия,
	|		ТоварыПоступления.Упаковка
	|	) КАК УпаковкиТоваров
	|
	|СГРУППИРОВАТЬ ПО
	|	УпаковкиТоваров.ДокументПоступления,
	|	УпаковкиТоваров.Склад,
	|	УпаковкиТоваров.Номенклатура,
	|	УпаковкиТоваров.Характеристика,
	|	УпаковкиТоваров.Назначение,
	|	УпаковкиТоваров.Серия,
	|	УпаковкиТоваров.Упаковка
	|
	|ИМЕЮЩИЕ
	|	СУММА(УпаковкиТоваров.Количество) > 0
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	ДокументПоступления,
	|	Склад,
	|	Номенклатура,
	|	Характеристика,
	|	Назначение,
	|	Упаковка
	|;
	|
	|//////////////////////////////////////////////////////////////////////////////// 3
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ТоварыКПоступлению.ДокументПоступления	КАК ДокументПоступления,
	|	ТоварыКПоступлению.Склад				КАК Склад,
	|	ТоварыКПоступлению.Номенклатура			КАК Номенклатура,
	|	ТоварыКПоступлению.Характеристика		КАК Характеристика,
	|	ТоварыКПоступлению.Назначение			КАК Назначение,
	|	ТоварыКПоступлению.Серия				КАК Серия,
	|	ТоварыКПоступлению.Упаковка				КАК Упаковка,
	|	ТоварыКПоступлению.КоэффициентУпаковки	КАК КоэффициентУпаковки,
	|	ТоварыКПоступлению.Количество			КАК Количество,
	|	ТоварыКПоступлению.КоличествоУпаковок	КАК КоличествоУпаковок,
	|	ТоварыЗаказа.Цена						КАК Цена,
	|	ТоварыЗаказа.СтавкаНДС					КАК СтавкаНДС
	|ПОМЕСТИТЬ ВТЦеныТоваров
	|ИЗ
	|	ВТУпаковкиТоваров КАК ТоварыКПоступлению
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику.Товары КАК ТоварыЗаказа
	|		ПО ТоварыКПоступлению.ДокументПоступления = ТоварыЗаказа.Ссылка
	|			И ТоварыКПоступлению.Склад = ТоварыЗаказа.Склад
	|			И ТоварыКПоступлению.Номенклатура = ТоварыЗаказа.Номенклатура
	|			И ТоварыКПоступлению.Характеристика = ТоварыЗаказа.Характеристика
	|			И ТоварыКПоступлению.Назначение = ТоварыЗаказа.Назначение
	|			И ТоварыКПоступлению.Упаковка = ТоварыЗаказа.Упаковка
	|ГДЕ
	|	НЕ ЕСТЬNULL(ТоварыЗаказа.Отменено, ЛОЖЬ)
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	ДокументПоступления,
	|	Склад,
	|	Номенклатура,
	|	Характеристика,
	|	Назначение,
	|	Серия,
	|	Упаковка
	|;
	|
	|//////////////////////////////////////////////////////////////////////////////// 4
	|ВЫБРАТЬ
	|	ТоварыКПоступлению.ДокументПоступления				КАК ДокументПоступления,
	|	ТоварыКПоступлению.Склад							КАК Склад,
	|	ТоварыКПоступлению.Номенклатура						КАК Номенклатура,
	|	ТоварыКПоступлению.Характеристика					КАК Характеристика,
	|	ТоварыКПоступлению.Назначение						КАК Назначение,
	|	ТоварыКПоступлению.Серия							КАК Серия,
	|	ТоварыКПоступлению.Упаковка							КАК Упаковка,
	|	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТоварыКПоступлению.Цена)		КАК КоличествоЦен,
	|	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТоварыКПоступлению.СтавкаНДС)	КАК КоличествоСтавокНДС
	|ПОМЕСТИТЬ ВТЦеныТоваровГруппировка
	|ИЗ
	|	ВТЦеныТоваров КАК ТоварыКПоступлению
	|	
	|СГРУППИРОВАТЬ ПО
	|	ТоварыКПоступлению.ДокументПоступления,
	|	ТоварыКПоступлению.Склад,
	|	ТоварыКПоступлению.Номенклатура,
	|	ТоварыКПоступлению.Характеристика,
	|	ТоварыКПоступлению.Назначение,
	|	ТоварыКПоступлению.Серия,
	|	ТоварыКПоступлению.Упаковка
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	ДокументПоступления,
	|	Склад,
	|	Номенклатура,
	|	Характеристика,
	|	Назначение,
	|	Серия,
	|	Упаковка
	|;
	|
	|//////////////////////////////////////////////////////////////////////////////// 5
	|ВЫБРАТЬ
	|	ТаблицаРаспоряжение.Ссылка					КАК Ссылка,
	|	ТаблицаРаспоряжение.Соглашение				КАК Соглашение,
	|	ТаблицаРаспоряжение.Партнер					КАК Партнер,
	|	ТаблицаРаспоряжение.Контрагент				КАК Контрагент,
	|	ТаблицаРаспоряжение.Организация				КАК Организация,
	|	ТаблицаРаспоряжение.СтатусДокумента			КАК СтатусДокумента,
	|	ТаблицаРаспоряжение.Договор					КАК Договор,
	|	ТаблицаРаспоряжение.Сделка					КАК Сделка,
	|	ТаблицаРаспоряжение.Валюта					КАК Валюта,
	|	ТаблицаРаспоряжение.ВидЦеныПоставщика		КАК ВидЦеныПоставщика,
	|	ТаблицаРаспоряжение.ЦенаВключаетНДС			КАК ЦенаВключаетНДС,
	|	ТаблицаРаспоряжение.НалогообложениеНДС		КАК НалогообложениеНДС,
	|	ТаблицаРаспоряжение.ВидДеятельностиНДС		КАК ВидДеятельностиНДС,
	|	ТаблицаРаспоряжение.НаправлениеДеятельности	КАК НаправлениеДеятельности,
	|	ТаблицаРаспоряжение.ЕстьОшибкиПроведен		КАК ЕстьОшибкиПроведен,
	|	ТаблицаРаспоряжение.ЕстьОшибкиСтатус		КАК ЕстьОшибкиСтатус
	|ИЗ
	|	ВТРаспоряжение КАК ТаблицаРаспоряжение
	|;
	|
	|//////////////////////////////////////////////////////////////////////////////// 6
	|ВЫБРАТЬ
	|	ТаблицаТовары.ДокументПоступления		КАК ДокументПоступления,
	|	ТаблицаТовары.Номенклатура				КАК Номенклатура,
	|	ТаблицаТовары.Характеристика			КАК Характеристика,
	|	ТаблицаТовары.Назначение				КАК Назначение,
	|	ТаблицаТовары.Серия						КАК Серия,
	|	СУММА(ТаблицаТовары.Количество)			КАК Количество,
	|	СУММА(ТаблицаТовары.КоличествоУпаковок)	КАК КоличествоУпаковок
	|ИЗ
	|	ВТТовары КАК ТаблицаТовары
	|
	|СГРУППИРОВАТЬ ПО
	|	ТаблицаТовары.ДокументПоступления,
	|	ТаблицаТовары.Номенклатура,
	|	ТаблицаТовары.Характеристика,
	|	ТаблицаТовары.Назначение,
	|	ТаблицаТовары.Серия
	|
	|УПОРЯДОЧИТЬ ПО
	|	Номенклатура,
	|	Характеристика,
	|	Назначение,
	|	Серия,
	|	ДокументПоступления
	|;
	|
	|//////////////////////////////////////////////////////////////////////////////// 7
	|ВЫБРАТЬ
	|	Товары.ДокументПоступления			КАК ДокументПоступления,
	|	Товары.Номенклатура					КАК Номенклатура,
	|	Товары.Характеристика				КАК Характеристика,
	|	Товары.Назначение					КАК Назначение,
	|	Товары.Серия						КАК Серия,
	|	Товары.Упаковка						КАК Упаковка,
	|	Товары.КоэффициентУпаковки			КАК КоэффициентУпаковки,
	|	СУММА(Товары.Количество)			КАК Количество,
	|	СУММА(Товары.КоличествоУпаковок)	КАК КоличествоУпаковок,
	|	Товары.Цена							КАК Цена,
	|	Товары.СтавкаНДС					КАК СтавкаНДС
	|ИЗ
	|	(ВЫБРАТЬ РАЗЛИЧНЫЕ
	|		ТоварыКПоступлению.ДокументПоступления	КАК ДокументПоступления,
	|		ТоварыКПоступлению.Склад				КАК Склад,
	|		ТоварыКПоступлению.Номенклатура			КАК Номенклатура,
	|		ТоварыКПоступлению.Характеристика		КАК Характеристика,
	|		ТоварыКПоступлению.Назначение			КАК Назначение,
	|		ТоварыКПоступлению.Серия				КАК Серия,
	|		ТоварыКПоступлению.Упаковка				КАК Упаковка,
	|		ТоварыКПоступлению.КоэффициентУпаковки	КАК КоэффициентУпаковки,
	|		ТоварыКПоступлению.Количество			КАК Количество,
	|		ТоварыКПоступлению.КоличествоУпаковок	КАК КоличествоУпаковок,
	|		ВЫБОР
	|			КОГДА ЦеныТоваров.КоличествоЦен = 1
	|				ТОГДА ТоварыКПоступлению.Цена
	|			ИНАЧЕ 0
	|		КОНЕЦ									КАК Цена,
	|		ВЫБОР
	|			КОГДА ЦеныТоваров.КоличествоСтавокНДС = 1
	|				ТОГДА ТоварыКПоступлению.СтавкаНДС
	|			ИНАЧЕ 0
	|		КОНЕЦ									КАК СтавкаНДС
	|	ИЗ
	|		ВТЦеныТоваров КАК ТоварыКПоступлению
	|			ЛЕВОЕ СОЕДИНЕНИЕ ВТЦеныТоваровГруппировка ЦеныТоваров
	|			ПО ТоварыКПоступлению.ДокументПоступления = ЦеныТоваров.ДокументПоступления
	|				И ТоварыКПоступлению.Склад = ЦеныТоваров.Склад
	|				И ТоварыКПоступлению.Номенклатура = ЦеныТоваров.Номенклатура
	|				И ТоварыКПоступлению.Характеристика = ЦеныТоваров.Характеристика
	|				И ТоварыКПоступлению.Назначение = ЦеныТоваров.Назначение
	|				И ТоварыКПоступлению.Серия = ЦеныТоваров.Серия
	|				И ТоварыКПоступлению.Упаковка = ЦеныТоваров.Упаковка
	|	) КАК Товары
	|
	|СГРУППИРОВАТЬ ПО
	|	Товары.ДокументПоступления,
	|	Товары.Номенклатура,
	|	Товары.Характеристика,
	|	Товары.Назначение,
	|	Товары.Серия,
	|	Товары.Упаковка,
	|	Товары.КоэффициентУпаковки,
	|	Товары.Цена,
	|	Товары.СтавкаНДС
	|
	|УПОРЯДОЧИТЬ ПО
	|	Номенклатура,
	|	Характеристика,
	|	Назначение,
	|	Серия,
	|	Упаковка,
	|	ДокументПоступления,
	|	КоэффициентУпаковки УБЫВ";
	
	Запрос.Текст = СтрЗаменить(Запрос.Текст,
								"&ТекстЗапросаКоэффициентУпаковки",
								Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
									"УпаковкиТоваров.Упаковка",
									"УпаковкиТоваров.Номенклатура"));
	
	Запрос.УстановитьПараметр("ДокументОснование",		ДокументОснование);
	Запрос.УстановитьПараметр("СкладПоступления",		СкладПоступления);
	Запрос.УстановитьПараметр("СкладУказан",			ЗначениеЗаполнено(СкладПоступления));
	Запрос.УстановитьПараметр("ЗаполнятьПоЗаказу",		Не (ЗаполнятьПоНакладной = Истина Или ЗаполнятьПоОрдеру = Истина));
	Запрос.УстановитьПараметр("ЗаполнятьПоНакладной",	ЗаполнятьПоНакладной = Истина);
	Запрос.УстановитьПараметр("ЗаполнятьПоОрдеру",		ЗаполнятьПоОрдеру = Истина);
	
	ТипТовары = Новый Массив;
	ТипТовары.Добавить(Перечисления.ТипыНоменклатуры.Товар);
	ТипТовары.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
	
	Запрос.УстановитьПараметр("Товары",					ТипТовары);

	РезультатЗапроса	= Запрос.ВыполнитьПакет();
	Выборка				= РезультатЗапроса[5].Выбрать();
	ТЗТовары			= РезультатЗапроса[6].Выгрузить();
	ТЗУпаковки			= РезультатЗапроса[7].Выгрузить();
	
	Выборка.Следующий();
	
	МассивДопустимыхСтатусов = Новый Массив;
	МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыЗаказовПоставщикам.Подтвержден);
	МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыЗаказовПоставщикам.Закрыт);
	
	ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(ДокументОснование,
															Выборка.СтатусДокумента,
															Выборка.ЕстьОшибкиПроведен,
															Выборка.ЕстьОшибкиСтатус,
															МассивДопустимыхСтатусов);
	
	Распоряжение	= ДокументОснование;
	Склад			= СкладПоступления;
	
	ПарыОперацийРаздельнойЗакупки = ЗакупкиСервер.ПарыОперацийРаздельнойЗакупки(Истина);
	ХозяйственнаяОперацияПриемкиФактическоеПоступление = ПарыОперацийРаздельнойЗакупки.Получить(ХозяйственнаяОперацияПриемки);
	ХозяйственнаяОперацияПриемкиФактическоеПоступление = ?(Не ЗначениеЗаполнено(ХозяйственнаяОперацияПриемкиФактическоеПоступление),
															ХозяйственнаяОперацияПриемки,
															ХозяйственнаяОперацияПриемкиФактическоеПоступление);
	
	ХозяйственнаяОперация = ХозяйственнаяОперацияПриемкиФактическоеПоступление;
	ЭтоТоварыВПути = Документы.ПоступлениеТоваровНаСклад.ЭтоПоступлениеИзТоваровВПути(ХозяйственнаяОперация);
	ИсключаемыеСвойства = ?(ЭтоТоварыВПути, "ВидДеятельностиНДС", "");
	
	ЗаполнитьЗначенияСвойств(ЭтотОбъект, Выборка, , ИсключаемыеСвойства);
	ЗаполнитьУпаковкиЦены(ТЗТовары, ТЗУпаковки);
	ПересчитатьКоличествоУпаковокЗаполнитьСтавкуНДС();
	ЗаполнитьЦеныПоСоглашению(Ложь);
	
КонецПроцедуры

Процедура ЗаполнитьДокументНаОснованииПриобретенияТоваров(Знач ДокументОснование, Знач СкладПоступления = Неопределено, Знач ХозяйственнаяОперацияПриемки = Неопределено, Знач ЗаполнятьПоНакладной = Ложь)
	
	Запрос = Новый Запрос;
	
	Запрос.Текст = ТекстЗапросаЗаполненияНаОсновании(Ложь);
	
	Запрос.УстановитьПараметр("ДокументОснование",		ДокументОснование);
	Запрос.УстановитьПараметр("СкладПоступления",		СкладПоступления);
	Запрос.УстановитьПараметр("СкладУказан",			ЗначениеЗаполнено(СкладПоступления));
	Запрос.УстановитьПараметр("ЗаполнятьПоНакладной",	ЗаполнятьПоНакладной = Истина);
	
	РезультатЗапроса	= Запрос.ВыполнитьПакет();
	Выборка				= РезультатЗапроса[5].Выбрать();
	ТЗТовары			= РезультатЗапроса[6].Выгрузить();
	ТЗУпаковки			= РезультатЗапроса[7].Выгрузить();
	
	Выборка.Следующий();
	
	ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(ДокументОснование,
															Неопределено,
															Выборка.ЕстьОшибкиПроведен,
															Выборка.ЕстьОшибкиСтатус);
	
	Распоряжение	= ДокументОснование;
	Склад			= СкладПоступления;
	
	ПарыОперацийРаздельнойЗакупки = ЗакупкиСервер.ПарыОперацийРаздельнойЗакупки(Истина);
	ХозяйственнаяОперацияПриемкиФактическоеПоступление = ПарыОперацийРаздельнойЗакупки.Получить(ХозяйственнаяОперацияПриемки);
	ХозяйственнаяОперацияПриемкиФактическоеПоступление = ?(Не ЗначениеЗаполнено(ХозяйственнаяОперацияПриемкиФактическоеПоступление),
															ХозяйственнаяОперацияПриемки,
															ХозяйственнаяОперацияПриемкиФактическоеПоступление);
	
	ХозяйственнаяОперация = ХозяйственнаяОперацияПриемкиФактическоеПоступление;
	
	ЭтоТоварыВПути = Документы.ПоступлениеТоваровНаСклад.ЭтоПоступлениеИзТоваровВПути(ХозяйственнаяОперация);
	ИсключаемыеСвойства = ?(ЭтоТоварыВПути, "ВидДеятельностиНДС", "");
	
	ЗаполнитьЗначенияСвойств(ЭтотОбъект, Выборка, , ИсключаемыеСвойства);
	ЗаполнитьУпаковкиЦены(ТЗТовары, ТЗУпаковки);
	ПересчитатьКоличествоУпаковокЗаполнитьСтавкуНДС();
	ЗаполнитьЦеныПоСоглашению(Ложь);
	
КонецПроцедуры

Процедура ЗаполнитьДокументНаОснованииАктаПриемкиПослеПоступления(ДанныеЗаполнения)
	
	АктОРасхождениях = ДанныеЗаполнения.АктОРасхождениях;
	ДокументПриобретение = Неопределено;
	
	Если ДанныеЗаполнения.Свойство("ОснованиеАкта") Тогда
		ДокументПриобретение = ДанныеЗаполнения.ОснованиеАкта;
		ДокументОснование = ДанныеЗаполнения.ОснованиеАкта;
	ИначеЕсли ДанныеЗаполнения.Свойство("ИсправляемыйДокумент") Тогда
		ДокументПриобретение = ДанныеЗаполнения.Приобретение;
		ДокументОснование = ДанныеЗаполнения.ИсправляемыйДокумент;
	КонецЕсли;
		
	Если ДанныеЗаполнения.Свойство("Склад") Тогда 
		Склад = ДанныеЗаполнения.Склад;
	Иначе
		Склад = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументОснование, "Склад");   
	КонецЕсли;
		
	Запрос = Новый Запрос;
	
	Запрос.Текст = ТекстЗапросаЗаполненияНаОсновании(Истина);
	
	Запрос.УстановитьПараметр("АктОРасхождениях",		АктОРасхождениях);
	Запрос.УстановитьПараметр("Склад",		Склад);
	Запрос.УстановитьПараметр("ДокументОснование",		ДокументПриобретение);
	
	РезультатЗапроса	= Запрос.ВыполнитьПакет();
	Выборка				= РезультатЗапроса[5].Выбрать();
	ТЗТовары			= РезультатЗапроса[6].Выгрузить();
	ТЗУпаковки			= РезультатЗапроса[7].Выгрузить();
	
	Выборка.Следующий();
	
	ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(ДокументОснование,
															Неопределено,
															Выборка.ЕстьОшибкиПроведен,
															Выборка.ЕстьОшибкиСтатус);
	
	ХозяйственнаяОперацияПриемки = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументОснование, "ХозяйственнаяОперация");
	
	ПарыОперацийРаздельнойЗакупки = ЗакупкиСервер.ПарыОперацийРаздельнойЗакупки(Истина);
	ХозяйственнаяОперацияПриемкиФактическоеПоступление = ПарыОперацийРаздельнойЗакупки.Получить(ХозяйственнаяОперацияПриемки);
	ХозяйственнаяОперацияПриемкиФактическоеПоступление = ?(Не ЗначениеЗаполнено(ХозяйственнаяОперацияПриемкиФактическоеПоступление),
															ХозяйственнаяОперацияПриемки,
															ХозяйственнаяОперацияПриемкиФактическоеПоступление);
	
	ХозяйственнаяОперация = ХозяйственнаяОперацияПриемкиФактическоеПоступление;
	ЭтоТоварыВПути = Документы.ПоступлениеТоваровНаСклад.ЭтоПоступлениеИзТоваровВПути(ХозяйственнаяОперация);
	ИсключаемыеСвойства = ?(ЭтоТоварыВПути, "ВидДеятельностиНДС", "");
	
	ЗаполнитьЗначенияСвойств(ЭтотОбъект, Выборка, , ИсключаемыеСвойства);
	ЗаполнитьУпаковкиЦены(ТЗТовары, ТЗУпаковки);
	ПересчитатьКоличествоУпаковокЗаполнитьСтавкуНДС();
	ЗаполнитьЦеныПоСоглашению(Ложь);
	
	Допоступление = Истина;
	
КонецПроцедуры

// Параметры:
// 	ТЗТовары - ТаблицаЗначений - 
// 	ТЗУпаковки - ТаблицаЗначений - 
Процедура ЗаполнитьУпаковкиЦены(ТЗТовары, ТЗУпаковки)
	
	СвойстваУпаковок	= "Упаковка, Количество, КоличествоУпаковок, Цена, СтавкаНДС";
	СвойстваТоваров		= "ДокументПоступления, Номенклатура, Характеристика, Назначение";
	СвойстваПоиска		= Новый Структура(СвойстваТоваров);
	
	ТЗУпаковки.Индексы.Добавить(СвойстваТоваров);
	
	Для Каждого СтрокаТоваров Из ТЗТовары Цикл
		
		СтрокаТЧ = Товары.Добавить();
		ЗаполнитьЗначенияСвойств(СтрокаТЧ, СтрокаТоваров);
		ЗаполнитьЗначенияСвойств(СвойстваПоиска, СтрокаТоваров);
		
		Количество			= СтрокаТоваров.Количество;
		УпаковкиТовара		= ТЗУпаковки.НайтиСтроки(СвойстваПоиска);
		УдаляемыеУпаковки	= Новый Массив;
		
		Для Каждого СтрокаУпаковок Из УпаковкиТовара Цикл
			
			Если Количество >= СтрокаУпаковок.Количество Тогда
				
				НоваяСтрокаТЧ = Товары.Добавить();
				ЗаполнитьЗначенияСвойств(НоваяСтрокаТЧ, СтрокаТЧ, , СвойстваУпаковок);
				ЗаполнитьЗначенияСвойств(НоваяСтрокаТЧ, СтрокаУпаковок, СвойстваУпаковок);
				ЗаполнитьСуммовыеПоказателиСтрокиТоваров(НоваяСтрокаТЧ);
				
				Количество = Количество - СтрокаУпаковок.Количество;
				
				Если Количество > 0 Тогда
					СтрокаТЧ.Количество			= Количество;
					СтрокаТЧ.КоличествоУпаковок	= Количество;
					
					ЗаполнитьСуммовыеПоказателиСтрокиТоваров(СтрокаТЧ);
				Иначе
					Товары.Удалить(СтрокаТЧ);
				КонецЕсли;
				
				УдаляемыеУпаковки.Добавить(СтрокаУпаковок);
				
			КонецЕсли;
			
			Если Количество <= 0 Тогда
				Прервать;
			КонецЕсли;
			
		КонецЦикла;
		
		Для Каждого УдаляемаяСтрока Из УдаляемыеУпаковки Цикл
			ТЗУпаковки.Удалить(УдаляемаяСтрока);
		КонецЦикла;
		
	КонецЦикла;
	
КонецПроцедуры

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

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

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

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

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

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

#Область ВидыЗапасов

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

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

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

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

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

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

	Пакет = Запрос.ВыполнитьПакет();
	ВыборкаАналитики = Пакет[5].Выбрать();
	АналитикаСГТДКРаспределению = Пакет[6].Выгрузить();
	
	ИзвлечьДетальныеПоляИзАналитики(ВидыЗапасовКЗаполнению);

	Пока ВыборкаАналитики.Следующий() Цикл
		
		Отбор = Новый Структура();
		Отбор.Вставить("Номенклатура", ВыборкаАналитики.Номенклатура);
		Отбор.Вставить("Характеристика", ВыборкаАналитики.Характеристика);
		Отбор.Вставить("Назначение", ВыборкаАналитики.Назначение);
		
		НайденныеСтроки = АналитикаСГТДКРаспределению.НайтиСтроки(Отбор);
		АналитикиСГТД = АналитикаСГТДКРаспределению.Скопировать(НайденныеСтроки);

		НайденныеСтрокиВидыЗапасов = ВидыЗапасовКЗаполнению.НайтиСтроки(Отбор);
		ВидыЗапасовПоАналитике = ВидыЗапасовКЗаполнению.Скопировать(НайденныеСтрокиВидыЗапасов);
		ВидыЗапасовПоАналитике.ЗаполнитьЗначения(Неопределено, "НомерГТД");

		Ключ = "Номенклатура, Характеристика, Назначение";
		
		// Распределение количества и заполнение номера ГТД.
		Условие = "ПО [Количество]";
		НакладныеСервер.РаспределитьКоличествоИЗаполнить(АналитикиСГТД, ВидыЗапасовПоАналитике, "КоличествоУчитываяГТД", Ключ, Условие, Ложь, "НомерГТД");
		
		// Распределение количества по РНПТ.
		Для Каждого СтрокаСГТД Из АналитикиСГТД Цикл
			Отбор = Новый Структура();
			Отбор.Вставить("Номенклатура", СтрокаСГТД.Номенклатура);
			Отбор.Вставить("Характеристика", СтрокаСГТД.Характеристика);
			Отбор.Вставить("Назначение", СтрокаСГТД.Назначение);
			Отбор.Вставить("НомерГТД", СтрокаСГТД.НомерГТД);
			
			НайденныеСтроки = ВидыЗапасовПоАналитике.НайтиСтроки(Отбор);
			КРаспределению = СтрокаСГТД.КоличествоПоРНПТУчитываяГТД;
			Для Каждого Строка Из НайденныеСтроки Цикл
				Строка.КоличествоПоРНПТ = Окр(КРаспределению * (Строка.КоличествоУчитываяГТД / СтрокаСГТД.КоличествоУчитываяГТДВторойПроход), 5);
			КонецЦикла;
		КонецЦикла;
		
		Для Каждого Строка Из НайденныеСтрокиВидыЗапасов Цикл
			ВидыЗапасовКЗаполнению.Удалить(Строка);
		КонецЦикла;
		
		Для Индекс = 0 По ВидыЗапасовПоАналитике.Количество() - 1 Цикл
			Строка = ВидыЗапасовПоАналитике[Индекс];
			Если Строка.Количество > Строка.КоличествоУчитываяГТД Тогда
				Разница = Строка.Количество - Строка.КоличествоУчитываяГТД;
				Строка.Количество = Строка.КоличествоУчитываяГТД;
				
				// Излишек учитывается без конкретного номера ГТД, т.к. какой именно номер пришёл явно не указывается.
				// Т.о. товар оприходуется, но номер ГТД потребуется установить отдельно.
				// Количество по РНПТ очищается, поскольку не имеет смысла при пустом ГТД (РНПТ).
				НоваяСтрока = ВидыЗапасовПоАналитике.Добавить();
				ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
				НоваяСтрока.Количество = Разница;
				НоваяСтрока.КоличествоПоРНПТ = 0;
				НоваяСтрока.НомерГТД = Неопределено;
			Иначе
				Строка.Количество = Строка.КоличествоУчитываяГТД;
			КонецЕсли;
		КонецЦикла;
		ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ВидыЗапасовПоАналитике, ВидыЗапасовКЗаполнению);
		
	КонецЦикла;
	
	ВидыЗапасов.Загрузить(ВидыЗапасовКЗаполнению);
	
КонецПроцедуры

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

Функция ТаблицаРеквизитовВидовЗапасовПоУмолчанию()
	
	ТаблицаРеквизитовВидовЗапасовПоУмолчанию = Товары.Выгрузить(, "НомерСтроки, АналитикаУчетаНоменклатуры"); // ТаблицаЗначений
	ТаблицаРеквизитовВидовЗапасовПоУмолчанию.Колонки.Добавить(
		"ВладелецТовара", Новый ОписаниеТипов("СправочникСсылка.Партнеры"));
	ТаблицаРеквизитовВидовЗапасовПоУмолчанию.Колонки.Добавить(
		"Договор", Новый ОписаниеТипов("СправочникСсылка.ДоговорыКонтрагентов"));
	ТаблицаРеквизитовВидовЗапасовПоУмолчанию.Колонки.Добавить(
		"ТипЗапасов", Новый ОписаниеТипов("ПеречислениеСсылка.ТипыЗапасов"));
	ТаблицаРеквизитовВидовЗапасовПоУмолчанию.Колонки.Добавить(
		"Организация", Новый ОписаниеТипов("СправочникСсылка.Организации"));
	ТаблицаРеквизитовВидовЗапасовПоУмолчанию.Колонки.Добавить(
		"ВидЗапасов", Новый ОписаниеТипов("СправочникСсылка.ВидыЗапасов"));
	ТаблицаРеквизитовВидовЗапасовПоУмолчанию.Колонки.Добавить(
		"НомерГТД", Новый ОписаниеТипов("СправочникСсылка.НомераГТД"));
	ТаблицаРеквизитовВидовЗапасовПоУмолчанию.Колонки.Добавить(
		"Контрагент", Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));
		
	ТаблицаРеквизитовВидовЗапасовПоУмолчанию.ЗаполнитьЗначения(Партнер, "ВладелецТовара");
	ТаблицаРеквизитовВидовЗапасовПоУмолчанию.ЗаполнитьЗначения(Договор, "Договор");
	ТаблицаРеквизитовВидовЗапасовПоУмолчанию.ЗаполнитьЗначения(Организация, "Организация");
	ТаблицаРеквизитовВидовЗапасовПоУмолчанию.ЗаполнитьЗначения(ТипЗапасовПоХозОперации(), "ТипЗапасов");
	ТаблицаРеквизитовВидовЗапасовПоУмолчанию.ЗаполнитьЗначения(Контрагент, "Контрагент");
	
	Возврат ТаблицаРеквизитовВидовЗапасовПоУмолчанию;
	
КонецФункции

Функция ПроверитьИзменениеРеквизитовДокумента(МенеджерВременныхТаблиц)
	
	ИменаРеквизитов = "Организация, Дата, Партнер, Склад, Договор, ХозяйственнаяОперация, Контрагент";
	
	Возврат ЗапасыСервер.ПроверитьИзменениеРеквизитовДокумента(МенеджерВременныхТаблиц, Ссылка, ИменаРеквизитов);
	
КонецФункции

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

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

#Область Прочее

Функция ТипЗапасовПоХозОперации()

	Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСПоступлениеИзТоваровВПути
		Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпортуПоступлениеИзТоваровВПути
		Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаПоступлениеИзТоваровВПути Тогда
		
		Возврат Перечисления.ТипыЗапасов.СобственныйТоварВПути;
		
	ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСНеотфактурованнаяПоставка
		Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаНеотфактурованнаяПоставка Тогда
		
		Возврат Перечисления.ТипыЗапасов.СобственныйТоварПоНеотфактурованнойПоставке;
		
	Иначе
		Возврат Перечисления.ТипыЗапасов.ПустаяСсылка();
	КонецЕсли;
	
КонецФункции

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

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

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

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

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

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

#КонецЕсли

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