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

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

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

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

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

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

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

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

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

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

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)

	Перем СкладПоступления;
	Перем РеквизитыШапки;
	
	ТипДанныхЗаполнения = ТипЗнч(ДанныеЗаполнения);

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

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

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

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

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

	Если Не ЗначениеЗаполнено(Автор) И ЭтоНовый() Тогда
		Автор = Пользователи.ТекущийПользователь();
	КонецЕсли;

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

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

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

Процедура ПриКопировании(ОбъектКопирования)

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

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

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

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

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

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

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

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

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


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

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

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

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

#КонецЕсли

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