Печать непроведенных документов (через расширение)

05.06.24

Задачи пользователя - Адаптация типовых решений

Обходим стандартную проверку, пошаговая инструкция.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Расширение с примерами
.cfe 8,32Kb ver:1.0.2
51
51 Скачать (1 SM) Купить за 1 850 руб.
Печать непроведенных документов ЗаказПокупателя (через расширение):
.cfe 11,38Kb
2
2 Скачать (1 SM) Купить за 1 850 руб.

Проблема: Есть люди, которые хотят печатать не проведённые документы, но типовой механизм не дает им этого делать. Рассмотрим на примере документа Заказ Клиента. Выполнил проверку на ERP 2.4.3.145, но в других типовых так же, 1С:Предприятие 8.3 (8.3.10.2650).

Варианты решения:

Решение точечное

Решение массовое

 

1 Решение точечное.

Заходим в менеджер объекта, ищем область печати и процедуру ДобавитьКомандыПечати.

Над процедурой видим комментарий

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

В процедуре видим параметр команды КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;

Заходим в указанный над процедурой комментарии модуль УправлениеПечатью и делаем поиск по «ПроверкаПроведенияПередПечатью»

Читаем:

//  * ПроверкаПроведенияПередПечатью    - Булево - (необязательный) Признак необходимости проверки проведенности
//                                        документов перед печатью. Если выбран хотя бы один непроведенный документ, то
//                                        перед выполнением команды печати возникает диалог проведения.
//                                        Для непроведенных документов команда печати не выполняется.
//                                        Если параметр не указан, то проверка проведенности не выполняется.

Делаем выводы. Добавляем расширение и помещаем документ ЗаказКлиент в расширение. Надеюсь, все читали данную статью http://v8.1c.ru/o7/201603module/index.htm.

Воспользуемся Аннотацией &После

Нам нужно после формирования команд, найти нужную и отключить проверку.

Добавляем в расширение модуль менеджера код:

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

Проверяем и радуемся.

2 Решение массовое.

А) Решение не совсем правильное

Ищем где и почему работает проверка. В модуле ОбщегоНазначения. ПроверитьПроведенностьДокументов

Эта функция возвращает массив непроведенных документов, следовательно если массив пустой то все проверки пройдены. Очень просто обманываем систему.

Добавляем этот модуль в расширение и пишем код:

&Вместо("ПроверитьПроведенностьДокументов")
Функция Расш1_ПроверитьПроведенностьДокументов(Знач Документы) Экспорт
	Результат = Новый Массив;
	Возврат Результат;
КонецФункции

Б) Более правильное решение.

Нужно в модуле УправлениеПечатью в процедуре ЗаполнитьКомандыПечатиДляСпискаОбъектов в цикле где обходятся команды параметр ПроверкаПроведенияПередПечатью = Истина поменять значение на Ложь

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

Проверяем и радуемся.

Расширение прикладываю с примерами.

Обновлено 05.06.2024

Добавлено новое расширение с примером для Заказов покупателей, для свежей Розницы.

Проверено в Рознице 2.3.19.24 на документе ЗаказПокупателя

1 Изменяем процедуру ЗаполнитьКомандыПечатиДляСпискаОбъектов в Модуле УправлениеПечатью.

Код:

&ИзменениеИКонтроль("ЗаполнитьКомандыПечатиДляСпискаОбъектов")
// Собирает список команд печати из нескольких объектов.
Процедура Расш1_ЗаполнитьКомандыПечатиДляСпискаОбъектов(СписокОбъектов, КомандыПечати)
	ИсточникиКомандПечати = Новый Соответствие;
	Для Каждого ИсточникКомандПечати Из ИсточникиКомандПечати() Цикл
		ИсточникиКомандПечати.Вставить(ИсточникКомандПечати, Истина);
	КонецЦикла;
	
	Для Каждого ОбъектМетаданных Из СписокОбъектов Цикл
		Если ИсточникиКомандПечати[ОбъектМетаданных] = Неопределено Тогда
			Продолжить;
		КонецЕсли;
		КомандыПечатиФормы = КомандыПечатиОбъекта(ОбъектМетаданных); // @skip-check query-in-loop - Малый цикл
		
		#Вставка
		//Небольшая Доработка++
		ПроверкаПроведенияПередПечатьюВИстину = Ложь;
		Если ТипЗнч(КомандыПечатиФормы) = Тип("ТаблицаЗначений") Тогда 
			Если КомандыПечатиФормы.Колонки.Найти("ПроверкаПроведенияПередПечатью") <> Неопределено Тогда 
				ПроверкаПроведенияПередПечатьюВИстину = Истина;	
			КонецЕсли;	
		КонецЕсли;	
		//Небольшая Доработка--		
		#КонецВставки
		Для Каждого ДобавляемаяКомандаПечати Из КомандыПечатиФормы Цикл
			#Вставка
			//Небольшая Доработка++
			Если ПроверкаПроведенияПередПечатьюВИстину Тогда 
				Если ДобавляемаяКомандаПечати.ПроверкаПроведенияПередПечатью Тогда 
					ДобавляемаяКомандаПечати.ПроверкаПроведенияПередПечатью = Ложь;
				КонецЕсли;	
			КонецЕсли;
			//Небольшая Доработка--			
			#КонецВставки
			Если ДобавляемаяКомандаПечати.Отключена Тогда
				Продолжить;
			КонецЕсли;
			// Поиск аналогичной ранее добавленной команды печати.
			НайденныеКоманды = КомандыПечати.НайтиСтроки(Новый Структура("УникальныйИдентификатор", ДобавляемаяКомандаПечати.УникальныйИдентификатор));
			
			Для Каждого ИмеющаясяКомандаПечати Из НайденныеКоманды Цикл
				// Если уже есть такая команда, дополняем список типов объектов, для которых она предназначена.
				ТипОбъекта = Тип(СтрЗаменить(ОбъектМетаданных.ПолноеИмя(), ".", "Ссылка."));
				Если ИмеющаясяКомандаПечати.ТипыОбъектовПечати.Найти(ТипОбъекта) = Неопределено Тогда
					ИмеющаясяКомандаПечати.ТипыОбъектовПечати.Добавить(ТипОбъекта);
				КонецЕсли;
				Если ЗначениеЗаполнено(ДобавляемаяКомандаПечати.УсловияВидимости) Тогда
					ИмеющаясяКомандаПечати.УсловияВидимостиПоТипамОбъектов.Вставить(ТипОбъекта, ДобавляемаяКомандаПечати.УсловияВидимости);
				КонецЕсли;
				// Очистим МенеджерПечати в случае, если у имеющейся команды он отличается.
				Если ИмеющаясяКомандаПечати.МенеджерПечати <> ДобавляемаяКомандаПечати.МенеджерПечати Тогда
					ИмеющаясяКомандаПечати.МенеджерПечати = "";
				КонецЕсли;
			КонецЦикла;
			Если НайденныеКоманды.Количество() > 0 Тогда
				Продолжить;
			КонецЕсли;
			
			Если ДобавляемаяКомандаПечати.ТипыОбъектовПечати.Количество() = 0 Тогда
				ДобавляемаяКомандаПечати.ТипыОбъектовПечати.Добавить(Тип(СтрЗаменить(ОбъектМетаданных.ПолноеИмя(), ".", "Ссылка.")));
			КонецЕсли;
			ЗаполнитьЗначенияСвойств(КомандыПечати.Добавить(), ДобавляемаяКомандаПечати);
		КонецЦикла;
	КонецЦикла;
КонецПроцедуры

2 Добавляем документ в расширение:

В менеджер документа добавляем код:

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

&ИзменениеИКонтроль("ПечатьЗаказаПокупателя")
// Функция формирует табличный документ с печатной формой.
//
// Возвращаемое значение:
//  ТабличныйДокумент - печатная форма.
//
Функция Расш1_ПечатьЗаказаПокупателя(МассивОбъектов, ОбъектыПечати)

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

			ОбластьСтрокаНомера.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
			ТабличныйДокумент.Вывести(ОбластьСтрокаНомера);

			Если ВыводитьКоды Тогда
				
				ОбластьСтрокаКодов.Параметры.Артикул = ВыборкаПоСтрокамТЧ["КолонкаКодов"];
				ТабличныйДокумент.Присоединить(ОбластьСтрокаКодов);
				
			КонецЕсли;

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

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

Обратите внимание на то, что в функции ПечатьЗаказаПокупателя были проверки на «Проведен».

Документ.Проведен и ТаблицаТовары.Ссылка.Проведен

Соответственно эти проверки тоже пришлось убрать. Весь код выполнен с аннотацией &ИзменениеИКонтроль

 

Проверено на следующих конфигурациях и релизах:

  • Розница, редакция 2.3, релизы 2.3.19.24

Расширение печать печать не проведенных документов документов БСП Команды печати не проведенный Пакетная печать

См. также

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    7071    19    13    

28

Печатные формы Адаптация типовых решений Бухгалтер Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Расширение позволяет вывести в табличном документе факсимиле печати и подписей и/или вывести произвольную картинку из прикреплённых файлов организации для 1С УТ 11.5, КА 2.5, ERP 2.5, УНФ 3, Розница 3. Вывод факсимиле возможен в табличные документы УПД, УКД, Счёт-фактура, ТОРГ-12 и другие. Возможно настроить вывод для любых типовых макетов (Акт сверки, М-15, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с установленными именами. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

3500 руб.

07.02.2023    7794    84    17    

41

Логистика, склад и ТМЦ Адаптация типовых решений Пользователь Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    4933    19    1    

36

Адаптация типовых решений Программист Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Россия Абонемент ($m)

Маленькая заметка (в трех разных масштабах) для тех, кто часто видит окно при входе в ЗУП «Новые сообщения для расшифровки по 1С-Отчетность», которое появляется через 60 секунд после запуска программы, как раз когда вы уже добрались до интересующей вас формы и начали в ней что-то активно делать:

1 стартмани

17.06.2024    3966    48    Znata_PI    6    

13

Адаптация типовых решений Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Абонемент ($m)

Каждый из нас сталкивается с ситуацией, когда какой-нибудь менеджер показывает свой Excel и рассказывает, как он что-то из 1С копирует в него, снабжает пояснениями, выделяет цветом и т.д. и т.п. Заканчивается все просьбой сделать вот чтобы также было в 1С. И оказывается такой человек (почти с гарантией) либо лучшим продажником, либо каким-то важным, за все отвечающим, - на ком все держится.

2 стартмани

22.04.2024    5814    dimanich70    15    

22
Отзывы
2. dsdred 3792 13.05.18 15:55 Сейчас в теме
(1)Я думаю не только эти отчеты. Проверка проведенности в некоторых случаях лишняя, а где участвуют регистры она как заглушка. Разработчики 1С таким образом себе уменьшили объем работы.

Чаще всего отчеты добавляли через дополнительные отчеты и обработки команду печати, причем типовые кишки тупо копировали и меняли запрос который формирует данные для вывода. Я и сам года 2-2,5 назад на предыдущем месте работы делал отчет по ТОРГ12 с возможностью печать не проведенных документов. В итоге в кнопке печати с каждым таким доп отчетом +1 пункт.

Сейчас достаточно по каждому такому отчету в расширение там где собирается запрос использовать аннотацию &Вместо.
Ну и вышеописанную инструкцию.
36. dsdred 3792 05.06.24 21:24 Сейчас в теме
(34)Посмотрел.
Во-первых изменилась процедура "ЗаполнитьКомандыПечатиДляСпискаОбъектов" в модуле "УправлениеПечатью"

Новый код:
&ИзменениеИКонтроль("ЗаполнитьКомандыПечатиДляСпискаОбъектов")
// Собирает список команд печати из нескольких объектов.
Процедура Расш1_ЗаполнитьКомандыПечатиДляСпискаОбъектов(СписокОбъектов, КомандыПечати)
	ИсточникиКомандПечати = Новый Соответствие;
	Для Каждого ИсточникКомандПечати Из ИсточникиКомандПечати() Цикл
		ИсточникиКомандПечати.Вставить(ИсточникКомандПечати, Истина);
	КонецЦикла;
	
	Для Каждого ОбъектМетаданных Из СписокОбъектов Цикл
		Если ИсточникиКомандПечати[ОбъектМетаданных] = Неопределено Тогда
			Продолжить;
		КонецЕсли;
		КомандыПечатиФормы = КомандыПечатиОбъекта(ОбъектМетаданных); // @skip-check query-in-loop - Малый цикл
		
		#Вставка
		//Небольшая Доработка++
		ПроверкаПроведенияПередПечатьюВИстину = Ложь;
		Если ТипЗнч(КомандыПечатиФормы) = Тип("ТаблицаЗначений") Тогда 
			Если КомандыПечатиФормы.Колонки.Найти("ПроверкаПроведенияПередПечатью") <> Неопределено Тогда 
				ПроверкаПроведенияПередПечатьюВИстину = Истина;	
			КонецЕсли;	
		КонецЕсли;	
		//Небольшая Доработка--		
		#КонецВставки
		Для Каждого ДобавляемаяКомандаПечати Из КомандыПечатиФормы Цикл
			#Вставка
			//Небольшая Доработка++
			Если ПроверкаПроведенияПередПечатьюВИстину Тогда 
				Если ДобавляемаяКомандаПечати.ПроверкаПроведенияПередПечатью Тогда 
					ДобавляемаяКомандаПечати.ПроверкаПроведенияПередПечатью = Ложь;
				КонецЕсли;	
			КонецЕсли;
			//Небольшая Доработка--			
			#КонецВставки
			Если ДобавляемаяКомандаПечати.Отключена Тогда
				Продолжить;
			КонецЕсли;
			// Поиск аналогичной ранее добавленной команды печати.
			НайденныеКоманды = КомандыПечати.НайтиСтроки(Новый Структура("УникальныйИдентификатор", ДобавляемаяКомандаПечати.УникальныйИдентификатор));
			
			Для Каждого ИмеющаясяКомандаПечати Из НайденныеКоманды Цикл
				// Если уже есть такая команда, дополняем список типов объектов, для которых она предназначена.
				ТипОбъекта = Тип(СтрЗаменить(ОбъектМетаданных.ПолноеИмя(), ".", "Ссылка."));
				Если ИмеющаясяКомандаПечати.ТипыОбъектовПечати.Найти(ТипОбъекта) = Неопределено Тогда
					ИмеющаясяКомандаПечати.ТипыОбъектовПечати.Добавить(ТипОбъекта);
				КонецЕсли;
				Если ЗначениеЗаполнено(ДобавляемаяКомандаПечати.УсловияВидимости) Тогда
					ИмеющаясяКомандаПечати.УсловияВидимостиПоТипамОбъектов.Вставить(ТипОбъекта, ДобавляемаяКомандаПечати.УсловияВидимости);
				КонецЕсли;
				// Очистим МенеджерПечати в случае, если у имеющейся команды он отличается.
				Если ИмеющаясяКомандаПечати.МенеджерПечати <> ДобавляемаяКомандаПечати.МенеджерПечати Тогда
					ИмеющаясяКомандаПечати.МенеджерПечати = "";
				КонецЕсли;
			КонецЦикла;
			Если НайденныеКоманды.Количество() > 0 Тогда
				Продолжить;
			КонецЕсли;
			
			Если ДобавляемаяКомандаПечати.ТипыОбъектовПечати.Количество() = 0 Тогда
				ДобавляемаяКомандаПечати.ТипыОбъектовПечати.Добавить(Тип(СтрЗаменить(ОбъектМетаданных.ПолноеИмя(), ".", "Ссылка.")));
			КонецЕсли;
			ЗаполнитьЗначенияСвойств(КомандыПечати.Добавить(), ДобавляемаяКомандаПечати);
		КонецЦикла;
	КонецЦикла;
КонецПроцедуры
Показать


Во-вторых Вы выбрали документ в котором в запросе получения данных для печатной формы (менеджер документа ЗаказПокупателя, функция ПечатьЗаказаПокупателя) идет проверка "Документ.Проведен" и "ТаблицаТовары.Ссылка.Проведен"

Соответственно в коде менеджера документа это надо учесть:
&После ("ДобавитьКомандыПечати")
Процедура Расш1_ДобавитьКомандыПечати(КомандыПечати) Экспорт
	ПараметрыОтбора = Новый Структура;
	ПараметрыОтбора.Вставить("Идентификатор", "ЗаказПокупателя");
	НайденныеСтроки = КомандыПечати.НайтиСтроки(ПараметрыОтбора);
		 
	Для каждого строкаНС из НайденныеСтроки Цикл 
		строкаНС.ПроверкаПроведенияПередПечатью = Ложь;
	КонецЦикла;	
	
КонецПроцедуры    

&ИзменениеИКонтроль("ПечатьЗаказаПокупателя")
// Функция формирует табличный документ с печатной формой.
//
// Возвращаемое значение:
//  ТабличныйДокумент - печатная форма.
//
Функция Расш1_ПечатьЗаказаПокупателя(МассивОбъектов, ОбъектыПечати)

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

			ОбластьСтрокаНомера.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
			ТабличныйДокумент.Вывести(ОбластьСтрокаНомера);

			Если ВыводитьКоды Тогда
				
				ОбластьСтрокаКодов.Параметры.Артикул = ВыборкаПоСтрокамТЧ["КолонкаКодов"];
				ТабличныйДокумент.Присоединить(ОбластьСтрокаКодов);
				
			КонецЕсли;

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

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


Сейчас обновлю статью с данными комментариями.
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. tigrandis 367 13.05.18 11:41 Сейчас в теме
жаль при печати документов реализации не корректно работает торг12 ,сф и упд
2. dsdred 3792 13.05.18 15:55 Сейчас в теме
(1)Я думаю не только эти отчеты. Проверка проведенности в некоторых случаях лишняя, а где участвуют регистры она как заглушка. Разработчики 1С таким образом себе уменьшили объем работы.

Чаще всего отчеты добавляли через дополнительные отчеты и обработки команду печати, причем типовые кишки тупо копировали и меняли запрос который формирует данные для вывода. Я и сам года 2-2,5 назад на предыдущем месте работы делал отчет по ТОРГ12 с возможностью печать не проведенных документов. В итоге в кнопке печати с каждым таким доп отчетом +1 пункт.

Сейчас достаточно по каждому такому отчету в расширение там где собирается запрос использовать аннотацию &Вместо.
Ну и вышеописанную инструкцию.
3. tigrandis 367 14.05.18 11:54 Сейчас в теме
в моей публикации https://infostart.ru/public/828144/ печатные формы УПД, СФ и Торг 12 обощел этот момент )
4. dsdred 3792 14.05.18 12:15 Сейчас в теме
(3) То есть функции с формированием запросов вы не трогали?
Значит заменили таб. часть с товарами, дописав нее данные из не проведенных документов.

В любом случае работы там немного. Тем более если есть уже готовые доп отчеты (их если нет сил самому нарисовать можно и скачать).
5. user970589 10 16.05.18 18:57 Сейчас в теме
Может вы в курсе и как обойти вопрос печати чека (реализация-поступление наличных, реализация - операция по карте) без создания счета или создание счета автоматически? 1с согласно ФЗ требует счета и без него выводит чек без номенклатуры. Тут была старая разработка, но она какая-то кривая, допилить ее до нового релиза не получается, а очень нужно решение. Навыков своих к сожалению мало для создания самостоятельно.
Буду очень благодарен ( в пределах разумного ;) ) за помощь.
6. dsdred 3792 16.05.18 20:57 Сейчас в теме
(5)Думаю вам проще тендер объявить https://infostart.ru/project/
7. dexxxqqq 07.11.18 00:25 Сейчас в теме
Спасибо большое за статью. Можно ли как-то сделать возможность печати непроведенным конкретного макета только? А не для всего документа? Не знаю, за что бы зацепиться. А то в НепроведенныеДокументы только документы, без макетов.
8. dexxxqqq 07.11.18 01:27 Сейчас в теме
(7) Сам и отвечу. В процедуре ВыполнитьОткрытиеПечатнойФормы в общем модуле УправлениеПечатьюСлужебныйКлиент передал в УправлениеПечатьюКлиент.ПроверитьПроведенностьДокументов дополнительный параметр "Параметры". Ну а дальше в ПроверитьПроведенностьДокументов можно обратиться к Параметры.ИдентификаторКоманды, который и содержит нужную информацию
atdonya; klaus38; dsdred; +3 Ответить
12. atdonya 111 11.05.21 18:24 Сейчас в теме
(8)
ВыполнитьОткрытиеПечатнойФормы
Спасибо.
9. user592625_lomakinalexey77 07.02.19 14:31 Сейчас в теме
Подскажите как настроить печать СчетаФактурыВыданной в составе комплекта на основании непроведенного документа реализации в УТ 11.4
10. dsdred 3792 07.02.19 22:36 Сейчас в теме
(9)На вскидку не скажу. Надо смотреть.
11. Kennik 14 19.03.21 17:43 Сейчас в теме
Работает на переписанной в хлам УТ 11.
Автору плюс.
13. burgomister 60 13.05.21 06:45 Сейчас в теме
А что так много наворотили? В УТ 11 сделал так:

ОбщийМодуль.ПодключаемыеКомандыКлиент

&Перед("ПродолжитьВыполнениеКоманды")
Процедура Расш1_ПродолжитьВыполнениеКоманды(ПараметрыВыполнения)
	
	Если ПараметрыВыполнения.ОписаниеКоманды.Идентификатор = "РасходнаяНакладная" или
		ПараметрыВыполнения.ОписаниеКоманды.Идентификатор = "Накладная" или
		ПараметрыВыполнения.ОписаниеКоманды.Идентификатор = "ТОРГ12" или
		ПараметрыВыполнения.ОписаниеКоманды.Идентификатор = "СчетНаОплату" Тогда
		ПараметрыВыполнения.ТребуетсяПроведение = Ложь;
	КонецЕсли;
	
КонецПроцедуры
Показать
14. dsdred 3792 13.05.21 22:20 Сейчас в теме
(13) Давно дело было... У меня такое ощущение, что у параметра "ТребуетсяПроведение " какой-то другой смысл и данное решение аукнецо при подключаемых командах.
15. burgomister 60 14.05.21 04:38 Сейчас в теме
(14) Сейчас работает. Посмотрим что дальше будет.
16. Afellay 31.05.21 13:13 Сейчас в теме
Подскажите а для Розницы 2.3 есть что-то подобное?
17. dsdred 3792 31.05.21 15:19 Сейчас в теме
(16)посмотрел Розницу 2.3.6.27. Там все так же
Прикрепленные файлы:
18. Afellay 31.05.21 19:47 Сейчас в теме
(17)Сделал как Вы написали, при печати выдает такую картину: Печатная форма недоступна.
Прикрепленные файлы:
21. dsdred 3792 11.06.21 10:02 Сейчас в теме
(18)Какой документ пытаетесь распечатать?
Разверну на досуге розницу и попробую.
32. user1622149 05.06.24 10:46 Сейчас в теме
(18) Добрый день. Удалось победить в Рознице 2.3 сообщение "Печатная форма недоступна." ?
33. dsdred 3792 05.06.24 11:33 Сейчас в теме
(32)Добрый день. Не побеждал. Я у коллеги запросил тип документа в котором не получается и ответа не получил.
34. user1622149 05.06.24 12:59 Сейчас в теме
(33) Вчера приобрел Ваше расширение (пример).

Все было сделано как в коментарии (24).

Сможете помочь с Розницей 2.3 (2.3.19.24).

Пытаюсь добавить в документ ЗаказПокупателя,
но при печати выходит страница с сообщением "Печатная форма недоступна."
Прикрепленные файлы:
35. dsdred 3792 05.06.24 13:05 Сейчас в теме
(34)Попробую сегодня вечером дома найти Розницу и проверю.
36. dsdred 3792 05.06.24 21:24 Сейчас в теме
(34)Посмотрел.
Во-первых изменилась процедура "ЗаполнитьКомандыПечатиДляСпискаОбъектов" в модуле "УправлениеПечатью"

Новый код:
&ИзменениеИКонтроль("ЗаполнитьКомандыПечатиДляСпискаОбъектов")
// Собирает список команд печати из нескольких объектов.
Процедура Расш1_ЗаполнитьКомандыПечатиДляСпискаОбъектов(СписокОбъектов, КомандыПечати)
	ИсточникиКомандПечати = Новый Соответствие;
	Для Каждого ИсточникКомандПечати Из ИсточникиКомандПечати() Цикл
		ИсточникиКомандПечати.Вставить(ИсточникКомандПечати, Истина);
	КонецЦикла;
	
	Для Каждого ОбъектМетаданных Из СписокОбъектов Цикл
		Если ИсточникиКомандПечати[ОбъектМетаданных] = Неопределено Тогда
			Продолжить;
		КонецЕсли;
		КомандыПечатиФормы = КомандыПечатиОбъекта(ОбъектМетаданных); // @skip-check query-in-loop - Малый цикл
		
		#Вставка
		//Небольшая Доработка++
		ПроверкаПроведенияПередПечатьюВИстину = Ложь;
		Если ТипЗнч(КомандыПечатиФормы) = Тип("ТаблицаЗначений") Тогда 
			Если КомандыПечатиФормы.Колонки.Найти("ПроверкаПроведенияПередПечатью") <> Неопределено Тогда 
				ПроверкаПроведенияПередПечатьюВИстину = Истина;	
			КонецЕсли;	
		КонецЕсли;	
		//Небольшая Доработка--		
		#КонецВставки
		Для Каждого ДобавляемаяКомандаПечати Из КомандыПечатиФормы Цикл
			#Вставка
			//Небольшая Доработка++
			Если ПроверкаПроведенияПередПечатьюВИстину Тогда 
				Если ДобавляемаяКомандаПечати.ПроверкаПроведенияПередПечатью Тогда 
					ДобавляемаяКомандаПечати.ПроверкаПроведенияПередПечатью = Ложь;
				КонецЕсли;	
			КонецЕсли;
			//Небольшая Доработка--			
			#КонецВставки
			Если ДобавляемаяКомандаПечати.Отключена Тогда
				Продолжить;
			КонецЕсли;
			// Поиск аналогичной ранее добавленной команды печати.
			НайденныеКоманды = КомандыПечати.НайтиСтроки(Новый Структура("УникальныйИдентификатор", ДобавляемаяКомандаПечати.УникальныйИдентификатор));
			
			Для Каждого ИмеющаясяКомандаПечати Из НайденныеКоманды Цикл
				// Если уже есть такая команда, дополняем список типов объектов, для которых она предназначена.
				ТипОбъекта = Тип(СтрЗаменить(ОбъектМетаданных.ПолноеИмя(), ".", "Ссылка."));
				Если ИмеющаясяКомандаПечати.ТипыОбъектовПечати.Найти(ТипОбъекта) = Неопределено Тогда
					ИмеющаясяКомандаПечати.ТипыОбъектовПечати.Добавить(ТипОбъекта);
				КонецЕсли;
				Если ЗначениеЗаполнено(ДобавляемаяКомандаПечати.УсловияВидимости) Тогда
					ИмеющаясяКомандаПечати.УсловияВидимостиПоТипамОбъектов.Вставить(ТипОбъекта, ДобавляемаяКомандаПечати.УсловияВидимости);
				КонецЕсли;
				// Очистим МенеджерПечати в случае, если у имеющейся команды он отличается.
				Если ИмеющаясяКомандаПечати.МенеджерПечати <> ДобавляемаяКомандаПечати.МенеджерПечати Тогда
					ИмеющаясяКомандаПечати.МенеджерПечати = "";
				КонецЕсли;
			КонецЦикла;
			Если НайденныеКоманды.Количество() > 0 Тогда
				Продолжить;
			КонецЕсли;
			
			Если ДобавляемаяКомандаПечати.ТипыОбъектовПечати.Количество() = 0 Тогда
				ДобавляемаяКомандаПечати.ТипыОбъектовПечати.Добавить(Тип(СтрЗаменить(ОбъектМетаданных.ПолноеИмя(), ".", "Ссылка.")));
			КонецЕсли;
			ЗаполнитьЗначенияСвойств(КомандыПечати.Добавить(), ДобавляемаяКомандаПечати);
		КонецЦикла;
	КонецЦикла;
КонецПроцедуры
Показать


Во-вторых Вы выбрали документ в котором в запросе получения данных для печатной формы (менеджер документа ЗаказПокупателя, функция ПечатьЗаказаПокупателя) идет проверка "Документ.Проведен" и "ТаблицаТовары.Ссылка.Проведен"

Соответственно в коде менеджера документа это надо учесть:
&После ("ДобавитьКомандыПечати")
Процедура Расш1_ДобавитьКомандыПечати(КомандыПечати) Экспорт
	ПараметрыОтбора = Новый Структура;
	ПараметрыОтбора.Вставить("Идентификатор", "ЗаказПокупателя");
	НайденныеСтроки = КомандыПечати.НайтиСтроки(ПараметрыОтбора);
		 
	Для каждого строкаНС из НайденныеСтроки Цикл 
		строкаНС.ПроверкаПроведенияПередПечатью = Ложь;
	КонецЦикла;	
	
КонецПроцедуры    

&ИзменениеИКонтроль("ПечатьЗаказаПокупателя")
// Функция формирует табличный документ с печатной формой.
//
// Возвращаемое значение:
//  ТабличныйДокумент - печатная форма.
//
Функция Расш1_ПечатьЗаказаПокупателя(МассивОбъектов, ОбъектыПечати)

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

			ОбластьСтрокаНомера.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
			ТабличныйДокумент.Вывести(ОбластьСтрокаНомера);

			Если ВыводитьКоды Тогда
				
				ОбластьСтрокаКодов.Параметры.Артикул = ВыборкаПоСтрокамТЧ["КолонкаКодов"];
				ТабличныйДокумент.Присоединить(ОбластьСтрокаКодов);
				
			КонецЕсли;

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

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


Сейчас обновлю статью с данными комментариями.
19. bulas 214 11.06.21 06:53 Сейчас в теме
Что нужно добавить для вашего расширения, чтобы была возможность печатать внешнюю печатную форму у не проведённых документов, например: есть внешняя печатная форма Товарный чек для документа Реализация товаров и услуг?
20. dsdred 3792 11.06.21 09:01 Сейчас в теме
(19)Некоторые документы печатаются на основании регистров.
Соответственно если документ не проведен записей в регистре нет.

В этом случае надо точечно смотреть:
1 Как документ делает движения.
2 В том месте где запросом собираются данные для отчета добавить вариант для не проведенного документа.

Вариант 2
создать внешний отчет только для не проведенных документов и всю логику перенести в него.
22. Lurie 23.12.21 17:48 Сейчас в теме
Я один это на отдельную роль в расширении завязал?
23. dsdred 3792 24.12.21 21:55 Сейчас в теме
(22)Этот вопрос на битву экстрасенсов тянет ;))
24. jasand 18.02.22 10:52 Сейчас в теме
У меня 1С 8.3.15.1700 УТ 11.4.10.62
Вроде сделал всё по вашей инструкции, прога всё равно просит проведения. Мне нужно без проведения отправить на печать только документ "Реализация товаров и услуг". Приведу свой алгоритм действий. Поправьте, где не прав, пожалуйста:

1. Открываю Конфигуратор
2. Меню Конфигурация > Расширения конфигурации
3. В открывшемся окне нажимаю Добавить (зеленый крестик)
4. В отрквшемся окошке:
Имя: Расширение1
Синоним: Расширение1
Префикс: Расш1_
Назначение: Адаптация
5. Нажимаю ОК
6. В списке расширений напротив созданного расширения убираю галочку Безопасный режим, так как потом обязательно выйдет ошибка: "Расширение модуля запрещено из-за того, что оно подключено в безопасном режиме".
7. Кроме этого галочки по умолчанию остаются еще на трёх параметрах Активно, Защита от опасных действий, Использовать основные роли для всех пользователей.
8. В дереве Конфигурации нахожу свой документ: Документы > РеализацияТоваровУслуг
9. Нажимаю на него ПКМ, в контекстном меню выбираю "Добавить в расширение".
10. В расширении на появившемся документе РеализацияТоваровУслуг нажимаю ПКМ и в контекстном меню выбираю "Открыть модуль менеджера"
11. В этом модуле написал указанный вами код:

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


12. Нажал на панели кнопку "Обновить конфигурацию базы данных".
13. Закрыл Конфигуратор
14. Открыл УТ в пользовательском режиме. Создал документ Реализация товаров и услуг. Сохранил, но не провел. Нажал Печать, выбрал Расходная накладная. БАЦ!!: "Для выполнения команды необходимо предварительно провести документ. Выполнить проведение документа и продолжить?"
25. dsdred 3792 18.02.22 12:43 Сейчас в теме
(24)
ПараметрыОтбора.Вставить("Идентификатор", "ЗаказКлиента");

Индентификатор не тот
Посмотрите в основной конфигурации в модуле менеджере по документу Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт

скорее всего "Накладная" -> ПараметрыОтбора.Вставить("Идентификатор", "Накладная")
26. jasand 18.02.22 13:10 Сейчас в теме
(25) Как же я не обратил на это внимание?! О_о В коде же ЗаказКлиента стоял )) Спасибо!

Но теперь, когда я нажимаю на Печать > Реализация товаров (выводить скидки) всё работает прекрасно!
Но когда нажимаю на Печать > Реализация товаров (не выводить скидки) выскакивает ошибка: "Деление на 0 значения типа Numeric"
27. dsdred 3792 18.02.22 13:12 Сейчас в теме
(26)посмотрите код в Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
видимо нужно еще и проверки поставить


	Если ЭтоПартнер ИЛИ ПолучитьФункциональнуюОпцию("НеВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
		// Реализация товаров
		КомандаПечати = КомандыПечати.Добавить();
		КомандаПечати.Идентификатор = "Накладная";
		КомандаПечати.Представление = НСтр("ru = 'Реализация товаров';
											|en = 'Goods sales'");
		КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
		КомандаПечати.Порядок = 11;
	КонецЕсли;

	Если НЕ ЭтоПартнер
		 И ПолучитьФункциональнуюОпцию("ВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
		// Реализация товаров (не выводить скидки)
		КомандаПечати = КомандыПечати.Добавить();
		КомандаПечати.Идентификатор = "Накладная";
		КомандаПечати.Представление = НСтр("ru = 'Реализация товаров (не выводить скидки)';
											|en = 'Goods sales (do not display discounts)'");
		КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
		КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьСкидки", Ложь);
		КомандаПечати.Порядок = 12;
	КонецЕсли;

	Если НЕ ЭтоПартнер
		 И ПолучитьФункциональнуюОпцию("ВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
		// Реализация товаров (выводить скидки)
		КомандаПечати = КомандыПечати.Добавить();
		КомандаПечати.Идентификатор = "Накладная";
		КомандаПечати.Представление = НСтр("ru = 'Реализация товаров (выводить скидки)';
											|en = 'Goods sales (display discounts)'");
		КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
		КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьСкидки", Истина);
		КомандаПечати.Порядок = 13;
	КонецЕсли;
Показать
28. jasand 18.02.22 13:38 Сейчас в теме
(27) Я понял в чём проблема! Спасибо огромное!
Просто была необходимость в печати документов без указанного количества и суммы, только с ценами. Поэтому-то и выдаёт ошибку, когда дело коснулось скидок. На 0 же делить нельзя ))
29. Farpost 116 27.09.23 02:47 Сейчас в теме
Как все было просто и понятно в обычных формах и УТ-10....
Фирма 1С, как всегда придумала "супер-лайнер" из анекдота...
30. aleksey2 89 29.11.23 10:51 Сейчас в теме
Это способ как напечатать ПФ из конфы.
А как из внешней формы печатать? (ВПФ)
31. dsdred 3792 29.11.23 17:13 Сейчас в теме
(30) я не готов писать статью на эту тему.
Надо всю логику сделать не на данных регистров, а на документе. Начать с того что нужно посмотреть в какие регистры и как делаются движения.
37. user2091313 28.02.25 17:21 Сейчас в теме
Приветствую!
Пробую делать как по инструкции, но вот проблема, у меня конфа Управление торговлей, редакция 11 (11.5.20.80). 1С:Предприятие 8.3 (8.3.26.1498). Cуть проблемы, нужно распечатать реализацию товаров. Пытаюсь это сделать как по инструкции выше, но вот такая дилемма, пишет что печатная форма недоступна.
&После ("ДобавитьКомандыПечати")
Процедура Расш1_ДобавитьКомандыПечати(КомандыПечати) Экспорт
	ПараметрыОтбора = Новый Структура;
	ПараметрыОтбора.Вставить("Идентификатор", "Накладная");
	НайденныеСтроки = КомандыПечати.НайтиСтроки(ПараметрыОтбора);
		 
	Для каждого строкаНС из НайденныеСтроки Цикл 
		строкаНС.ПроверкаПроведенияПередПечатью = Ложь;
	КонецЦикла;	
	
КонецПроцедуры   

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

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