Сертификаты номенклатуры / Модуль менеджера

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

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

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

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

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

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

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

#КонецЕсли

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

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

// Заполняет список команд печати.
// 
// Параметры:
//   КомандыПечати - см. УправлениеПечатью.СоздатьКоллекциюКомандПечати
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт

	// Изображения сертификатов номенклатуры
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.МенеджерПечати = "Справочник.СертификатыНоменклатуры";
	КомандаПечати.Идентификатор = "СертификатыНоменклатурыИзображения";
	КомандаПечати.Представление = НСтр("ru = 'Изображения сертификатов'");

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

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

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

	РезультатЗапроса = МассивРезультатов[КоличествоРезультатов - 3]; // РезультатЗапроса
	ВыборкаОшибкиХозяйственнаяОперация = РезультатЗапроса.Выбрать();

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

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

		ВывестиСтрокиДляПозицииТоваров(
			ТабличныйДокумент,
			Макет,
			ОбластьПерваяСтрокаКолонкаТоваров,
			НомерСтраницы,
			НомерСтроки,
			МассивВыводимыхОбластей);
		
		Область = Макет.ПолучитьОбласть("ПодвалТаблицы|НачалоСтроки");
		ТабличныйДокумент.Вывести(Область);
		Область = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаТоваров");
		ТабличныйДокумент.Присоединить(Область);
		Область = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаСертификатов");
		ТабличныйДокумент.Присоединить(Область);

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

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

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

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

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

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

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

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

	РезультатЗапроса = МассивРезультатов[КоличествоРезультатов - 4]; // РезультатЗапроса
	ВыборкаОшибкиХозяйственнаяОперация = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	
	РезультатЗапроса = МассивРезультатов[КоличествоРезультатов - 2]; // РезультатЗапроса
	ВыборкаПоГруппировке = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

	РезультатЗапроса = МассивРезультатов[КоличествоРезультатов - 3]; // РезультатЗапроса
	ВыборкаПоДокументамБезУчетаСертификатов = РезультатЗапроса.Выбрать();

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

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

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

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

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

// Возвращает данные по умолчанию для печати сведений о товаре, имеющему недействующие сертификаты.
//
// Возвращаемое значение:
//	Структура - где:
//		* Номенклатура - СправочникСсылка.Номенклатура - номенклатура сертификата.
//		* НаименованиеНоменклатуры - Строка -представление номенклатуры сертификата.
//		* НаименованиеХарактеристики - Строка - представление характеристики номенклатуры сертификата.
//		* Серия - СправочникСсылка.СерииНоменклатуры - серия номенклатуры сертификата.
//		* ТипСертификата - Строка - тип сертификата номенклатуры.
//
Функция ДанныеПоТоваруСНеДействующимиСертификатамиДляПечати() Экспорт
	
	ДанныеТовара = Новый Структура;
	ДанныеТовара.Вставить("Номенклатура",				Справочники.Номенклатура.ПустаяСсылка());
	ДанныеТовара.Вставить("НаименованиеНоменклатуры",	"");
	ДанныеТовара.Вставить("НаименованиеХарактеристики",	"");
	ДанныеТовара.Вставить("Серия",						Справочники.СерииНоменклатуры.ПустаяСсылка());
	ДанныеТовара.Вставить("ТипСертификата",				"");
	
	Возврат ДанныеТовара;
	
КонецФункции

// Возвращает ключ товара по области действия сертификатов в виде строкового значения, состоящего из: номенклатуры,
// характеристики, серии.
//
// Параметры:
//	Номенклатура - СправочникСсылка.Номенклатура - номенклатура сертификата.
//	Характеристика - СправочникСсылка.ХарактеристикиНоменклатуры - характеристика номенклатуры сертификата.
//	Серия - СправочникСсылка.СерииНоменклатуры - серия номенклатуры сертификата.
//
// Возвращаемое значение:
//	Строка - ключ товара по области действия сертификатов.
//
Функция КлючТовараПоИзмерениямДействияСертификатов(Номенклатура, Характеристика, Серия) Экспорт
	
	КлючТовара = Строка(Номенклатура) + Строка(Характеристика) + Строка(Серия);
	
	Возврат КлючТовара;
	
КонецФункции

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

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

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

#КонецЕсли

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