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

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

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

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

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

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

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

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

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

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

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

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

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

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

	#Область ПроверкаСклада

	МассивНепроверяемыхРеквизитов.Добавить("МатериалыИРаботы.Склад");
	ПроверитьСклады(Отказ);
	
	#КонецОбласти

	#Область ПроверкаХарактеристик

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

	#Область ПроверкаСерий

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

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

	
	#Область ПроверкаКоличеств

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

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

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

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

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

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

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

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

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

#Область Заполнение

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

#Область ПроверкаЗаполнения

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

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

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

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


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

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

Функция ПараметрыСинхронизацииКлючей()
	
	Результат = Новый Соответствие;
	
	Результат.Вставить("Справочник.ПартииПроизводства", "ПометкаУдаления");
	
	Возврат Результат;
	
КонецФункции

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

#КонецЕсли

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