Вывод характеристик номенклатуры в одну ячейку ВПФ

1. user761098 17.09.18 16:32 Сейчас в теме
Добрый день. Помогите, пожалуйста, делаю внешнюю печатную форму по заказам поставщика. Необходимо вывести номенклатуру и рядом в одной ячейке вывести характеристики. Получилось вывести характеристики, но в разные ячейки, а в одну сделать не получается. Может кто сталкивался? Или есть где почитать?
Так думаю,что запросом не получится сделать, может надо создавать список значений или что-то такое для характеристик по каждой номенклатуре и потом его уже в ячейку выводить?
Скрин как есть и как примерно должно быть приложены.
Прикрепленные файлы:
+
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
14. bmk74 234 18.09.18 17:40 Сейчас в теме
Нда
Во первых чуть поправьте запрос
|;
|////////////////////////////////////////////////////////////­­//////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
|ХарДопРеквизиты.Свойство КАК Свойство,
|ХарДопРеквизиты.Значение КАК Значение,
|Товары.Характеристика КАК Характеристика
|ИЗ
|    Документ.ЗаказПоставщику.Товары КАК Товары
|        Внутреннее СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ХарДопРеквизиты
|        ПО Товары.Характеристика = ХарДопРеквизиты.Ссылка
Показать


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

					//            ПредставлениеНоменклатурыДляПечати = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
					//СтрокаТовары.НаименованиеПолное,
					//СтрокаТовары.Характеристика,
					//,
					//,
					//ДополнительныеПараметрыПолученияНаименованияДляПечати);
                //--bmk74
Показать
+
17. bmk74 234 18.09.18 18:45 Сейчас в теме +0.15 $m
(1)
(16)
В запросе по товарам
 |    Товары.Характеристика.НаименованиеПолное КАК Характеристика,

Замените
 |    Товары.Характеристика КАК Характеристика

Чет сразу не посмотрел что там заместо ссылки наименование выберает
+
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
17. bmk74 234 18.09.18 18:45 Сейчас в теме +0.15 $m
(1)
(16)
В запросе по товарам
 |    Товары.Характеристика.НаименованиеПолное КАК Характеристика,

Замените
 |    Товары.Характеристика КАК Характеристика

Чет сразу не посмотрел что там заместо ссылки наименование выберает
+
18. user761098 18.09.18 19:11 Сейчас в теме +0.17 $m
(17)
Все получилось.
Спасибо вам огромное!
+
19. bmk74 234 18.09.18 19:47 Сейчас в теме
(18)Да не за что :) Рад был помочь..
+
20. bmk74 234 19.09.18 12:20 Сейчас в теме
(18)Кстати всю ночь не спал, что то мене мешало :)
|;
|////////////////////////////////////////////////////////////­­­//////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
|ХарДопРеквизиты.Свойство КАК Свойство,
|ХарДопРеквизиты.Значение КАК Значение,
|Товары.Характеристика КАК Характеристика
|ИЗ
|    Документ.ЗаказПоставщику.Товары КАК Товары
|        Внутреннее СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ХарДопРеквизиты
|        ПО Товары.Характеристика = ХарДопРеквизиты.Ссылка
|ГДЕ
|    Товары.Ссылка В(&МассивОбъектов)
Показать

Добавьте в запрос, а то там выборка слишком большая получится, что на времени и формирования Печатной формы скажется
+
21. user761098 20.09.18 06:08 Сейчас в теме
(20)
Добавила. Спасибо еще раз :)
+
2. bmk74 234 17.09.18 16:38 Сейчас в теме
Я не знаю как у вас по характеристикам выборка идет, но Что мешает
НаимХарактеристики = "";
Пока выборкаХарактеристика.Следующий.Цикл
     НаимХарактеристики= НаимХарактеристики+" "+ВыборкаХарактеристика.Характеристики.Наименование;
КонецЦикла;
alex-l19041; +1
3. user761098 17.09.18 16:47 Сейчас в теме
(2)
Получается сам запрос идет в процедуре
Функция ПолучитьДанныеДляПечатнойФормыЗаказаНаТоварыУслуги(МассивОбъектов, ПараметрыПечати) Экспорт
	
	Запрос = Новый Запрос();
	ТекстЗапроса =  
	"ВЫБРАТЬ
	|	Документы.Ссылка КАК Ссылка,
	|	Документы.Номер КАК Номер,
	|	Документы.Дата КАК Дата,
	|	Документы.Организация КАК Организация,
	|	Документы.Организация КАК Заказчик,
	|	ВЫБОР
	|		КОГДА Документы.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС)
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ КАК УчитыватьНДС,
	|	Документы.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
	|	Документы.Организация.Префикс КАК Префикс,
	|	Документы.Контрагент КАК Контрагент,
	|	Документы.Контрагент КАК Исполнитель,
	|	Документы.БанковскийСчет КАК БанковскийСчет,
	|	Документы.БанковскийСчет.ТекстКорреспондента КАК БанковскийСчетТекстКорреспондента,
	|	Документы.Валюта КАК Валюта,
	|	Документы.Менеджер.ФизическоеЛицо КАК Менеджер,
	|	Документы.ДополнительнаяИнформация КАК ДополнительнаяИнформация,
	|	ВЫБОР Документы.СпособДоставки
	|		КОГДА ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПоставщикаДоНашегоСклада)
	|			ТОГДА Документы.АдресДоставкиДляПоставщика
	|		КОГДА ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчикаДоНашегоСклада)
	|			ТОГДА Документы.АдресДоставкиДляПоставщика
	|		КОГДА ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчикаДоПунктаПередачи)
	|			ТОГДА Документы.АдресДоставкиПеревозчика
	|		ИНАЧЕ """"
	|	КОНЕЦ КАК АдресДоставки,
	|	НЕОПРЕДЕЛЕНО КАК Грузоотправитель,
	|	НЕОПРЕДЕЛЕНО КАК Грузополучатель,
	|	ЛОЖЬ КАК ПоказыватьНДСВСтроках,
	|	ИСТИНА КАК ИспользоватьАвтоСкидки,
	|	&ПредставлениеДокумента КАК ПредставлениеДокумента,
	|	&ПредставлениеВОшибке КАК ПредставлениеВОшибке
	|ИЗ
	|	Документ.ЗаказПоставщику КАК Документы
	|ГДЕ
	|	Документы.Ссылка В(&МассивОбъектов)
	|
	|УПОРЯДОЧИТЬ ПО
	|	Документы.МоментВремени
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	НЕОПРЕДЕЛЕНО КАК Ссылка,
	|	НЕОПРЕДЕЛЕНО КАК НомерСтроки,
	|	НЕОПРЕДЕЛЕНО КАК ДатаПлатежа,
	|	НЕОПРЕДЕЛЕНО КАК ВариантОплаты,
	|	НЕОПРЕДЕЛЕНО КАК ПроцентПлатежа,
	|	НЕОПРЕДЕЛЕНО КАК СуммаПлатежа
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	Товары.Ссылка КАК Ссылка,
	|	Товары.НомерСтроки КАК НомерСтроки,
	|	Товары.НоменклатураПоставщика.Наименование КАК НаименованиеНоменклатурыИсполнителя,
	|	Товары.НоменклатураПоставщика.Код КАК КодИсполнителя,
	|	Товары.НоменклатураПоставщика.Артикул КАК АртикулИсполнителя,
	|	Товары.ВидЦеныПоставщика КАК ВидЦеныИсполнителя,
	|	Товары.Номенклатура КАК Номенклатура,
	|	Товары.Номенклатура.Код КАК Код,
	|	Товары.Номенклатура.Артикул КАК Артикул,
	|	Товары.Номенклатура.НаименованиеПолное КАК НаименованиеПолное,
	|	Товары.ДатаПоступления КАК ДатаПоступления,
	|	Товары.Характеристика.НаименованиеПолное КАК Характеристика,
	|	"""" КАК Содержание,
	|	Товары.КоличествоУпаковок КАК Количество,
	|	Товары.Цена КАК Цена,
	|	Товары.СуммаРучнойСкидки КАК СуммаСкидки,
	|	Товары.Сумма + Товары.СуммаРучнойСкидки КАК СуммаБезСкидки,
	|	Товары.Сумма КАК Сумма,
	|	Товары.СтавкаНДС КАК СтавкаНДС,
	|	Товары.СуммаНДС КАК СуммаНДС,
	|	ВЫБОР
	|		КОГДА Товары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
	|			ТОГДА ПРЕДСТАВЛЕНИЕ(Товары.Номенклатура.ЕдиницаИзмерения)                                  
	|		ИНАЧЕ ПРЕДСТАВЛЕНИЕ(Товары.Упаковка)
	|	КОНЕЦ КАК ЕдиницаИзмерения,
	|	ВЫБОР
	|		КОГДА ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) = 1
	|			ТОГДА НЕОПРЕДЕЛЕНО
	|		ИНАЧЕ Товары.Упаковка.Наименование
	|	КОНЕЦ КАК Упаковка,
	|	ВЫБОР
	|		КОГДА Товары.Ссылка.ВернутьМногооборотнуюТару
	|				И Товары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ КАК ЭтоВозвратнаяТара,
	|	ХарактеристикиНоменклатурыДополнительныеРеквизиты.Значение.Наименование КАК Значение,
	|	ХарактеристикиНоменклатурыДополнительныеРеквизиты.Свойство.Заголовок КАК Свойство
	|ИЗ
	|	Документ.ЗаказПоставщику.Товары КАК Товары
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ХарактеристикиНоменклатурыДополнительныеРеквизиты
	|		ПО Товары.Характеристика = ХарактеристикиНоменклатурыДополнительныеРеквизиты.Ссылка
	|ГДЕ
	|	Товары.Ссылка В(&МассивОбъектов)
	|	И Товары.Отменено = ЛОЖЬ
	|
	|УПОРЯДОЧИТЬ ПО
	|	НомерСтроки";
	
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
		"&ТекстЗапросаКоэффициентУпаковки",
		Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
		"Товары.Упаковка",
		"Товары.Номенклатура"));
		
	Запрос.Текст = ТекстЗапроса;
		
	Запрос.УстановитьПараметр("МассивОбъектов",			МассивОбъектов);
//	Запрос.УстановитьПараметр("Тип",					ПараметрыПечати["Тип"]);
	Запрос.УстановитьПараметр("ПредставлениеДокумента",	НСтр("ru='Заказ поставщику'"));
	Запрос.УстановитьПараметр("ПредставлениеВОшибке",	НСтр("ru='заказа поставщику'"));
	
	ПакетРезультатовЗапроса = Запрос.ВыполнитьПакет();
	
	СтруктураДанныхДляПечати = Новый Структура;
	СтруктураДанныхДляПечати.Вставить("РезультатПоШапке",			ПакетРезультатовЗапроса[0]);
	СтруктураДанныхДляПечати.Вставить("РезультатПоЭтапамОплаты",	ПакетРезультатовЗапроса[1]);
	СтруктураДанныхДляПечати.Вставить("РезультатПоТабличнойЧасти",	ПакетРезультатовЗапроса[2]);
	
	Возврат СтруктураДанныхДляПечати;
	
КонецФункции

Показать


А вывод в макет идет в другой процедуре, где формируется табличный документ, вот так
УстановитьПараметр(ОбластьТоварСтроки, "Характер", СтрокаТовары.Свойство + ":" + СтрокаТовары.Значение); 
+
5. bmk74 234 17.09.18 17:30 Сейчас в теме
(3)Так это у вас даже не характеристики, это доп реквизиты...
+
7. bmk74 234 17.09.18 17:43 Сейчас в теме
(3)
| Документ.ЗаказПоставщику.Товары КАК Товары | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ХарактеристикиНоменклатурыДополнительныеРеквизиты | ПО Товары.Характеристика = ХарактеристикиНоменклатурыДополнительныеРеквизиты.Ссылка


Так вы вообще можете задесятерить номенклатуру, если честно,

Вам надо еще один запрос дописать на выборку этих реквизитов
после
|;
|////////////////////////////////////////////////////////////­//////////////////////////////
|ВЫБРАТЬ ХарДопРеквизиты.Свойство КАК Свойство,
|ХарДопРеквизиты.Значение КАК Значение,
|Товары.Характеристика КАК Характеристика
|ИЗ
|    Документ.ЗаказПоставщику.Товары КАК Товары
|        Внутреннее СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ХарДопРеквизиты
|        ПО Товары.Характеристика = ХарДопРеквизиты.Ссылка
Показать


далее
СтруктураДанныхДляПечати.Вставить("РезультатПоДопХарактеристикам",    ПакетРезультатовЗапроса[3]);


В процедуре где выбирается ТЧ
ВыборкаДопХарактеристик = ДанныеПечати.РезультатПоДопХарактеристикам.Выбрать();

А вот там где формируете табличный документ где заполняется Номенклатура
ВыборкаДопХарактеристик.Сбросить();
ДопХар = "Характер ";
Пока Выборка.СледующийПоЗначениюПоля(Характеристика) Цикл
ДопХар = ДопХар +Выборка.Свойство + ":" + Выборка.Значение +",";
КонецЦикла;
ДопХар = Лев(СтрДлинна(ДопХар)-1); 
//последнюю запятую убераем
+
8. user761098 18.09.18 06:45 Сейчас в теме
(7)
Вставила код, если в последней части кода идти по Характеристике
Выборка.СледующийПоЗначениюПоля(Характеристика)

то выводится все характеристики в одну ячейку.
Заменила на Номенклатуру
Выборка.СледующийПоЗначениюПоля(Номенклатура)

Выводит только одну характеристику во все поля. Скрин приложен.
Прикрепленные файлы:
+
10. bmk74 234 18.09.18 12:12 Сейчас в теме
(8)
| Документ.ЗаказПоставщику.Товары КАК Товары | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ХарактеристикиНоменклатурыДополнительныеРеквизиты | ПО Товары.Характеристика = ХарактеристикиНоменклатурыДополнительныеРеквизиты.Ссылка

Вот это из предыдущего запроса убрали надеюсь ?
+
11. bmk74 234 18.09.18 12:14 Сейчас в теме
(8) И если можно приведите код заполнения ТЧ сюда
Выборка.СледующийПоЗначениюПоля(Номенклатура)

И Почему здесь Выборка ?
Ой это я ошибся должна быть не выборка а
ВыборкаДопХарактеристик.СледующийПоЗначениюПоля(Характеристика)
+
12. user761098 18.09.18 13:15 Сейчас в теме
(11)
Все лишнее убрала конечно и выборку заменяла.
Уже пошла по-другому пути, не через запрос.
ВыбДок = Документы.ЗаказПоставщику.Выбрать(НачалоДня(ТекущаяДата()),КонецДня(ТекущаяДата()));
			Пока ВыбДок.Следующий() Цикл
				Для Каждого СТр из ВыбДок.Товары цикл
					Хар = Стр.Характеристика;
					ТекстХарактеристики = "";
							Для Каждого ДопРекв из Хар.ДополнительныеРеквизиты Цикл
								ТекстХарактеристики = ТекстХарактеристики + ДопРекв.Свойство.Заголовок + ": " + ДопРекв.Значение + Символы.ПС;	
							КонецЦикла;
					УстановитьПараметр(ОбластьТоварСтроки, "Характеристика", ТекстХарактеристики);
					Сообщить(ТекстХарактеристики);	
				КонецЦикла;
			КонецЦикла;
Показать

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

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

(11)
+
14. bmk74 234 18.09.18 17:40 Сейчас в теме
Нда
Во первых чуть поправьте запрос
|;
|////////////////////////////////////////////////////////////­­//////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
|ХарДопРеквизиты.Свойство КАК Свойство,
|ХарДопРеквизиты.Значение КАК Значение,
|Товары.Характеристика КАК Характеристика
|ИЗ
|    Документ.ЗаказПоставщику.Товары КАК Товары
|        Внутреннее СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ХарДопРеквизиты
|        ПО Товары.Характеристика = ХарДопРеквизиты.Ссылка
Показать


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

					//            ПредставлениеНоменклатурыДляПечати = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
					//СтрокаТовары.НаименованиеПолное,
					//СтрокаТовары.Характеристика,
					//,
					//,
					//ДополнительныеПараметрыПолученияНаименованияДляПечати);
                //--bmk74
Показать
+
16. user761098 18.09.18 18:38 Сейчас в теме
(15)
Вставила все,как написали. В ТекстХарактеристики попадают чистые строки. Он просто вместо найденных характеристик выводит чистые строки по количеству строк документа.
+
4. bmk74 234 17.09.18 17:29 Сейчас в теме
Я правильно понимаю, у вас может быть несколько характеристик к одной номенклатуре ?
+
6. user761098 17.09.18 17:33 Сейчас в теме
(4)
Это табличная часть справочника Характеристики. Да, как на картинке у обуви характеристики - размер, цвет и тд
+
9. ben19791010 18.09.18 09:23 Сейчас в теме
я до перебора строк тч делал свертку
Материалы.Свернуть("Наименование, Хар, Номер, Единица","Количество");

//ВыборкаСтрокТовары.Группировка();
//	Пока ВыборкаСтрокТовары.Следующий() Цикл
Для каждого мат1 из Материалы Цикл	
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот