Корректировка реализации / Модуль объекта

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

				ДополнительныеСвойства.Вставить("ЗаписатьСуммуАкциза", Истина);

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

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

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

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

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

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

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

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

///////////////////////////////////////////////////////////////////////////////
// Списание

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

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

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

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

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

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

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

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

///////////////////////////////////////////////////////////////////////////////
// Корректировка выручки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

///////////////////////////////////////////////////////////////////////////////
// Заполнение расхождений

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


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

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

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

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

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

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

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

//++ НЕ УТ

Функция ПериодНачисленияАкциза()

	ПериодНачисленияАкциза = Дата;
	
	Если ЗначениеЗаполнено(ДокументОснование) Тогда
		ПериодНачисленияАкциза = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументОснование, "Дата");
	КонецЕсли;
	
	Возврат ПериодНачисленияАкциза;

КонецФункции

//-- НЕ УТ

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

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

#КонецЕсли

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