Выкуп товаров с хранения / Модуль объекта

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

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

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

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

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

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

// Заполняет аналитики учета номенклатуры. Используется в отчете ОстаткиТоваровОрганизаций.
//
Процедура ЗаполнитьАналитикиУчетаНоменклатуры() Экспорт
	
	ЗаполнитьАналитикиУчетаНоменклатурыВТабличныхЧастяхТоваров();
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	РезультатЗапрос = Запрос.Выполнить();
	
	Возврат (Не РезультатЗапрос.Пустой());
	
КонецФункции

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

// Процедура формирует временную таблицу доступных видов запасов.
//
// Параметры:
//	МенеджерВременныхТаблиц - МенеджерВременныхТаблиц - Менеджер временных таблиц.
//
Процедура СформироватьДоступныеВидыЗапасов(МенеджерВременныхТаблиц) Экспорт
	
	Запрос = Новый Запрос("

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

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

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

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

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

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

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

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

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

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

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

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

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

#КонецЕсли

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