Вывод характеристик номенклатуры в одну ячейку ВПФ
Добрый день. Помогите, пожалуйста, делаю внешнюю печатную форму по заказам поставщика. Необходимо вывести номенклатуру и рядом в одной ячейке вывести характеристики. Получилось вывести характеристики, но в разные ячейки, а в одну сделать не получается. Может кто сталкивался? Или есть где почитать?
Так думаю,что запросом не получится сделать, может надо создавать список значений или что-то такое для характеристик по каждой номенклатуре и потом его уже в ячейку выводить?
Скрин как есть и как примерно должно быть приложены.
Так думаю,что запросом не получится сделать, может надо создавать список значений или что-то такое для характеристик по каждой номенклатуре и потом его уже в ячейку выводить?
Скрин как есть и как примерно должно быть приложены.
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
Нда
Во первых чуть поправьте запрос
Далее просто замените функцию, я там в комментариях написал
Во первых чуть поправьте запрос
|;
|//////////////////////////////////////////////////////////// //////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
|ХарДопРеквизиты.Свойство КАК Свойство,
|ХарДопРеквизиты.Значение КАК Значение,
|Товары.Характеристика КАК Характеристика
|ИЗ
| Документ.ЗаказПоставщику.Товары КАК Товары
| Внутреннее СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ХарДопРеквизиты
| ПО Товары.Характеристика = ХарДопРеквизиты.Ссылка
ПоказатьДалее просто замените функцию, я там в комментариях написал
Процедура ЗаполнитьТабличныйДокументЗаказаНаТоварыУслуги(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати)
ШаблонОшибкиТовары = НСтр("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;
КонецЦикла;
ТабличныйДокумент.Вывести(ОбластьПодвалаТаблицы);
КонецЕсли;
// ПОДВАЛ - ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ
Если ЗначениеЗаполнено(ДанныеПечати.ДополнительнаяИнформация) Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ДополнительнаяИнформация");
УстановитьПараметр(ОбластьМакета, "ДополнительнаяИнформация", ДанныеПечати.ДополнительнаяИнформация);
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЕсли;
// ПОДВАЛ - ПОДПИСИ
ОбластьМакета = Макет.ПолучитьОбласть("ПодвалЗаказа");
УстановитьПараметр(ОбластьМакета, "ФИОМенеджер", ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(ДанныеПечати.Менеджер, ДанныеПечати.Дата));
ТабличныйДокумент.Вывести(ОбластьМакета);
#КонецОбласти
ЗадатьОбластьПечатиДокумента(
ТабличныйДокумент,
НомерСтрокиНачало,
ОбъектыПечати,
ДанныеПечати.Ссылка);
КонецЦикла;
КонецПроцедуры
Показать
(13)И еще так причесать код
//++bmk74 << 18.09.2018 >> Здесь выберем наши допХарактеристики НайтиСледующий
// немного неправильно в прошлый раз написал...здесь в нашей выборке будет искаться нужная характеристика с ее свойствами
СтрОтбора = Новый Структура("Характеристика",СтрокаТовары.Характеристика)
ТекстХарактеристики = "";
Пока ВыборкаДопХарактеристик.НайтиСледующий(СтрОтбора) Цикл
ТекстХарактеристики = ТекстХарактеристики + ВыборкаДопХарактеристик.Свойство.Заголовок + ": " + ВыборкаДопХарактеристик.Значение + Символы.ПС;
КонецЦикла;
ТекстХарактеристики = Лев(СтрДлина(ТекстХарактеристики)-1);
//++bmk74 << 18.09.2018 >> Не нужно здесь это, и в макете параметр можно убрать
//УстановитьПараметр(ОбластьТоварСтроки, "Характеристика", ТекстХарактеристики);
//--bmk74
// А вот тут вообщее все оооочень странно :)
//ВыбДок = Документы.ЗаказПоставщику.Выбрать(НачалоДня(ТекущаяДата()),КонецДня(ТекущаяДата()));
//Пока ВыбДок.Следующий() Цикл
// Для Каждого СТр из ВыбДок.Товары цикл
// Хар = Стр.Характеристика;
// ТекстХарактеристики = "";
// Для Каждого ДопРекв из Хар.ДополнительныеРеквизиты Цикл
// ТекстХарактеристики = ТекстХарактеристики + ДопРекв.Свойство.Заголовок + ": " + ДопРекв.Значение + Символы.ПС;
// //УстановитьПараметр(ОбластьТоварСтроки, "Характеристика", ТекстХарактеристики);
// КонецЦикла;
// УстановитьПараметр(ОбластьТоварСтроки, "Характеристика", ТекстХарактеристики);
// Сообщить(ТекстХарактеристики);
// КонецЦикла;
//КонецЦикла;
//--bmk74
ДополнительныеПараметрыПолученияНаименованияДляПечати = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
ДополнительныеПараметрыПолученияНаименованияДляПечати.ВозвратнаяТара = СтрокаТовары.ЭтоВозвратнаяТара;
ДополнительныеПараметрыПолученияНаименованияДляПечати.Содержание = СтрокаТовары.Содержание;
//++bmk74 << 18.09.2018 >> Сюда и вставляем сформированное нами наименование характеристики
ПредставлениеНоменклатурыДляПечати = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
СтрокаТовары.НаименованиеПолное,
ТекстХарактеристики,
,
,
ДополнительныеПараметрыПолученияНаименованияДляПечати);
// ПредставлениеНоменклатурыДляПечати = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
//СтрокаТовары.НаименованиеПолное,
//СтрокаТовары.Характеристика,
//,
//,
//ДополнительныеПараметрыПолученияНаименованияДляПечати);
//--bmk74
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(18)Кстати всю ночь не спал, что то мене мешало :)
Добавьте в запрос, а то там выборка слишком большая получится, что на времени и формирования Печатной формы скажется
|;
|//////////////////////////////////////////////////////////// //////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
|ХарДопРеквизиты.Свойство КАК Свойство,
|ХарДопРеквизиты.Значение КАК Значение,
|Товары.Характеристика КАК Характеристика
|ИЗ
| Документ.ЗаказПоставщику.Товары КАК Товары
| Внутреннее СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ХарДопРеквизиты
| ПО Товары.Характеристика = ХарДопРеквизиты.Ссылка
|ГДЕ
| Товары.Ссылка В(&МассивОбъектов)
ПоказатьДобавьте в запрос, а то там выборка слишком большая получится, что на времени и формирования Печатной формы скажется
Я не знаю как у вас по характеристикам выборка идет, но Что мешает
НаимХарактеристики = "";
Пока выборкаХарактеристика.Следующий.Цикл
НаимХарактеристики= НаимХарактеристики+" "+ВыборкаХарактеристика.Характеристики.Наименование;
КонецЦикла;
(2)
Получается сам запрос идет в процедуре
А вывод в макет идет в другой процедуре, где формируется табличный документ, вот так
Получается сам запрос идет в процедуре
Функция ПолучитьДанныеДляПечатнойФормыЗаказаНаТоварыУслуги(МассивОбъектов, ПараметрыПечати) Экспорт
Запрос = Новый Запрос();
ТекстЗапроса =
"ВЫБРАТЬ
| Документы.Ссылка КАК Ссылка,
| Документы.Номер КАК Номер,
| Документы.Дата КАК Дата,
| Документы.Организация КАК Организация,
| Документы.Организация КАК Заказчик,
| ВЫБОР
| КОГДА Документы.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК УчитыватьНДС,
| Документы.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| Документы.Организация.Префикс КАК Префикс,
| Документы.Контрагент КАК Контрагент,
| Документы.Контрагент КАК Исполнитель,
| Документы.БанковскийСчет КАК БанковскийСчет,
| Документы.БанковскийСчет.ТекстКорреспондента КАК БанковскийСчетТекстКорреспондента,
| Документы.Валюта КАК Валюта,
| Документы.Менеджер.ФизическоеЛицо КАК Менеджер,
| Документы.ДополнительнаяИнформация КАК ДополнительнаяИнформация,
| ВЫБОР Документы.СпособДоставки
| КОГДА ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПоставщикаДоНашегоСклада)
| ТОГДА Документы.АдресДоставкиДляПоставщика
| КОГДА ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчикаДоНашегоСклада)
| ТОГДА Документы.АдресДоставкиДляПоставщика
| КОГДА ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчикаДоПунктаПередачи)
| ТОГДА Документы.АдресДоставкиПеревозчика
| ИНАЧЕ """"
| КОНЕЦ КАК АдресДоставки,
| НЕОПРЕДЕЛЕНО КАК Грузоотправитель,
| НЕОПРЕДЕЛЕНО КАК Грузополучатель,
| ЛОЖЬ КАК ПоказыватьНДСВСтроках,
| ИСТИНА КАК ИспользоватьАвтоСкидки,
| &ПредставлениеДокумента КАК ПредставлениеДокумента,
| &ПредставлениеВОшибке КАК ПредставлениеВОшибке
|ИЗ
| Документ.ЗаказПоставщику КАК Документы
|ГДЕ
| Документы.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Документы.МоментВремени
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| НЕОПРЕДЕЛЕНО КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК НомерСтроки,
| НЕОПРЕДЕЛЕНО КАК ДатаПлатежа,
| НЕОПРЕДЕЛЕНО КАК ВариантОплаты,
| НЕОПРЕДЕЛЕНО КАК ПроцентПлатежа,
| НЕОПРЕДЕЛЕНО КАК СуммаПлатежа
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.НоменклатураПоставщика.Наименование КАК НаименованиеНоменклатурыИсполнителя,
| Товары.НоменклатураПоставщика.Код КАК КодИсполнителя,
| Товары.НоменклатураПоставщика.Артикул КАК АртикулИсполнителя,
| Товары.ВидЦеныПоставщика КАК ВидЦеныИсполнителя,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Номенклатура.Код КАК Код,
| Товары.Номенклатура.Артикул КАК Артикул,
| Товары.Номенклатура.НаименованиеПолное КАК НаименованиеПолное,
| Товары.ДатаПоступления КАК ДатаПоступления,
| Товары.Характеристика.НаименованиеПолное КАК Характеристика,
| """" КАК Содержание,
| Товары.КоличествоУпаковок КАК Количество,
| Товары.Цена КАК Цена,
| Товары.СуммаРучнойСкидки КАК СуммаСкидки,
| Товары.Сумма + Товары.СуммаРучнойСкидки КАК СуммаБезСкидки,
| Товары.Сумма КАК Сумма,
| Товары.СтавкаНДС КАК СтавкаНДС,
| Товары.СуммаНДС КАК СуммаНДС,
| ВЫБОР
| КОГДА Товары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА ПРЕДСТАВЛЕНИЕ(Товары.Номенклатура.ЕдиницаИзмерения)
| ИНАЧЕ ПРЕДСТАВЛЕНИЕ(Товары.Упаковка)
| КОНЕЦ КАК ЕдиницаИзмерения,
| ВЫБОР
| КОГДА ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) = 1
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ Товары.Упаковка.Наименование
| КОНЕЦ КАК Упаковка,
| ВЫБОР
| КОГДА Товары.Ссылка.ВернутьМногооборотнуюТару
| И Товары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоВозвратнаяТара,
| ХарактеристикиНоменклатурыДополнительныеРеквизиты.Значение.Наименование КАК Значение,
| ХарактеристикиНоменклатурыДополнительныеРеквизиты.Свойство.Заголовок КАК Свойство
|ИЗ
| Документ.ЗаказПоставщику.Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ХарактеристикиНоменклатурыДополнительныеРеквизиты
| ПО Товары.Характеристика = ХарактеристикиНоменклатурыДополнительныеРеквизиты.Ссылка
|ГДЕ
| Товары.Ссылка В(&МассивОбъектов)
| И Товары.Отменено = ЛОЖЬ
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"Товары.Упаковка",
"Товары.Номенклатура"));
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
// Запрос.УстановитьПараметр("Тип", ПараметрыПечати["Тип"]);
Запрос.УстановитьПараметр("ПредставлениеДокумента", НСтр("ru='Заказ поставщику'"));
Запрос.УстановитьПараметр("ПредставлениеВОшибке", НСтр("ru='заказа поставщику'"));
ПакетРезультатовЗапроса = Запрос.ВыполнитьПакет();
СтруктураДанныхДляПечати = Новый Структура;
СтруктураДанныхДляПечати.Вставить("РезультатПоШапке", ПакетРезультатовЗапроса[0]);
СтруктураДанныхДляПечати.Вставить("РезультатПоЭтапамОплаты", ПакетРезультатовЗапроса[1]);
СтруктураДанныхДляПечати.Вставить("РезультатПоТабличнойЧасти", ПакетРезультатовЗапроса[2]);
Возврат СтруктураДанныхДляПечати;
КонецФункции
ПоказатьА вывод в макет идет в другой процедуре, где формируется табличный документ, вот так
УстановитьПараметр(ОбластьТоварСтроки, "Характер", СтрокаТовары.Свойство + ":" + СтрокаТовары.Значение);
(3)
Так вы вообще можете задесятерить номенклатуру, если честно,
Вам надо еще один запрос дописать на выборку этих реквизитов
после
далее
В процедуре где выбирается ТЧ
А вот там где формируете табличный документ где заполняется Номенклатура
//последнюю запятую убераем
| Документ.ЗаказПоставщику.Товары КАК Товары | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ХарактеристикиНоменклатурыДополнительныеРеквизиты | ПО Товары.Характеристика = ХарактеристикиНоменклатурыДополнительныеРеквизиты.Ссылка
Так вы вообще можете задесятерить номенклатуру, если честно,
Вам надо еще один запрос дописать на выборку этих реквизитов
после
|;
|//////////////////////////////////////////////////////////// //////////////////////////////
|ВЫБРАТЬ ХарДопРеквизиты.Свойство КАК Свойство,
|ХарДопРеквизиты.Значение КАК Значение,
|Товары.Характеристика КАК Характеристика
|ИЗ
| Документ.ЗаказПоставщику.Товары КАК Товары
| Внутреннее СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ХарДопРеквизиты
| ПО Товары.Характеристика = ХарДопРеквизиты.Ссылка
Показатьдалее
СтруктураДанныхДляПечати.Вставить("РезультатПоДопХарактеристикам", ПакетРезультатовЗапроса[3]);
В процедуре где выбирается ТЧ
ВыборкаДопХарактеристик = ДанныеПечати.РезультатПоДопХарактеристикам.Выбрать();
А вот там где формируете табличный документ где заполняется Номенклатура
ВыборкаДопХарактеристик.Сбросить();
ДопХар = "Характер ";
Пока Выборка.СледующийПоЗначениюПоля(Характеристика) Цикл
ДопХар = ДопХар +Выборка.Свойство + ":" + Выборка.Значение +",";
КонецЦикла;
ДопХар = Лев(СтрДлинна(ДопХар)-1);
(7)
Вставила код, если в последней части кода идти по Характеристике
то выводится все характеристики в одну ячейку.
Заменила на Номенклатуру
Выводит только одну характеристику во все поля. Скрин приложен.
Вставила код, если в последней части кода идти по Характеристике
Выборка.СледующийПоЗначениюПоля(Характеристика)
то выводится все характеристики в одну ячейку.
Заменила на Номенклатуру
Выборка.СледующийПоЗначениюПоля(Номенклатура)
Выводит только одну характеристику во все поля. Скрин приложен.
Прикрепленные файлы:
(8)
Вот это из предыдущего запроса убрали надеюсь ?
| Документ.ЗаказПоставщику.Товары КАК Товары | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ХарактеристикиНоменклатурыДополнительныеРеквизиты | ПО Товары.Характеристика = ХарактеристикиНоменклатурыДополнительныеРеквизиты.Ссылка
Вот это из предыдущего запроса убрали надеюсь ?
(11)
Все лишнее убрала конечно и выборку заменяла.
Уже пошла по-другому пути, не через запрос.
Выводит как должно выглядить, но только выводит во все ячейки последнюю характеристику. Бьюсь с этим моментом.
Скрин как сейчас выглядит.
Все лишнее убрала конечно и выборку заменяла.
Уже пошла по-другому пути, не через запрос.
ВыбДок = Документы.ЗаказПоставщику.Выбрать(НачалоДня(ТекущаяДата()),КонецДня(ТекущаяДата()));
Пока ВыбДок.Следующий() Цикл
Для Каждого СТр из ВыбДок.Товары цикл
Хар = Стр.Характеристика;
ТекстХарактеристики = "";
Для Каждого ДопРекв из Хар.ДополнительныеРеквизиты Цикл
ТекстХарактеристики = ТекстХарактеристики + ДопРекв.Свойство.Заголовок + ": " + ДопРекв.Значение + Символы.ПС;
КонецЦикла;
УстановитьПараметр(ОбластьТоварСтроки, "Характеристика", ТекстХарактеристики);
Сообщить(ТекстХарактеристики);
КонецЦикла;
КонецЦикла;
ПоказатьВыводит как должно выглядить, но только выводит во все ячейки последнюю характеристику. Бьюсь с этим моментом.
Скрин как сейчас выглядит.
Прикрепленные файлы:
(11)
(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)
Нда
Во первых чуть поправьте запрос
Далее просто замените функцию, я там в комментариях написал
Во первых чуть поправьте запрос
|;
|//////////////////////////////////////////////////////////// //////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
|ХарДопРеквизиты.Свойство КАК Свойство,
|ХарДопРеквизиты.Значение КАК Значение,
|Товары.Характеристика КАК Характеристика
|ИЗ
| Документ.ЗаказПоставщику.Товары КАК Товары
| Внутреннее СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ХарДопРеквизиты
| ПО Товары.Характеристика = ХарДопРеквизиты.Ссылка
ПоказатьДалее просто замените функцию, я там в комментариях написал
Процедура ЗаполнитьТабличныйДокументЗаказаНаТоварыУслуги(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати)
ШаблонОшибкиТовары = НСтр("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;
КонецЦикла;
ТабличныйДокумент.Вывести(ОбластьПодвалаТаблицы);
КонецЕсли;
// ПОДВАЛ - ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ
Если ЗначениеЗаполнено(ДанныеПечати.ДополнительнаяИнформация) Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ДополнительнаяИнформация");
УстановитьПараметр(ОбластьМакета, "ДополнительнаяИнформация", ДанныеПечати.ДополнительнаяИнформация);
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЕсли;
// ПОДВАЛ - ПОДПИСИ
ОбластьМакета = Макет.ПолучитьОбласть("ПодвалЗаказа");
УстановитьПараметр(ОбластьМакета, "ФИОМенеджер", ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(ДанныеПечати.Менеджер, ДанныеПечати.Дата));
ТабличныйДокумент.Вывести(ОбластьМакета);
#КонецОбласти
ЗадатьОбластьПечатиДокумента(
ТабличныйДокумент,
НомерСтрокиНачало,
ОбъектыПечати,
ДанныеПечати.Ссылка);
КонецЦикла;
КонецПроцедуры
Показать
(13)И еще так причесать код
//++bmk74 << 18.09.2018 >> Здесь выберем наши допХарактеристики НайтиСледующий
// немного неправильно в прошлый раз написал...здесь в нашей выборке будет искаться нужная характеристика с ее свойствами
СтрОтбора = Новый Структура("Характеристика",СтрокаТовары.Характеристика)
ТекстХарактеристики = "";
Пока ВыборкаДопХарактеристик.НайтиСледующий(СтрОтбора) Цикл
ТекстХарактеристики = ТекстХарактеристики + ВыборкаДопХарактеристик.Свойство.Заголовок + ": " + ВыборкаДопХарактеристик.Значение + Символы.ПС;
КонецЦикла;
ТекстХарактеристики = Лев(СтрДлина(ТекстХарактеристики)-1);
//++bmk74 << 18.09.2018 >> Не нужно здесь это, и в макете параметр можно убрать
//УстановитьПараметр(ОбластьТоварСтроки, "Характеристика", ТекстХарактеристики);
//--bmk74
// А вот тут вообщее все оооочень странно :)
//ВыбДок = Документы.ЗаказПоставщику.Выбрать(НачалоДня(ТекущаяДата()),КонецДня(ТекущаяДата()));
//Пока ВыбДок.Следующий() Цикл
// Для Каждого СТр из ВыбДок.Товары цикл
// Хар = Стр.Характеристика;
// ТекстХарактеристики = "";
// Для Каждого ДопРекв из Хар.ДополнительныеРеквизиты Цикл
// ТекстХарактеристики = ТекстХарактеристики + ДопРекв.Свойство.Заголовок + ": " + ДопРекв.Значение + Символы.ПС;
// //УстановитьПараметр(ОбластьТоварСтроки, "Характеристика", ТекстХарактеристики);
// КонецЦикла;
// УстановитьПараметр(ОбластьТоварСтроки, "Характеристика", ТекстХарактеристики);
// Сообщить(ТекстХарактеристики);
// КонецЦикла;
//КонецЦикла;
//--bmk74
ДополнительныеПараметрыПолученияНаименованияДляПечати = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
ДополнительныеПараметрыПолученияНаименованияДляПечати.ВозвратнаяТара = СтрокаТовары.ЭтоВозвратнаяТара;
ДополнительныеПараметрыПолученияНаименованияДляПечати.Содержание = СтрокаТовары.Содержание;
//++bmk74 << 18.09.2018 >> Сюда и вставляем сформированное нами наименование характеристики
ПредставлениеНоменклатурыДляПечати = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
СтрокаТовары.НаименованиеПолное,
ТекстХарактеристики,
,
,
ДополнительныеПараметрыПолученияНаименованияДляПечати);
// ПредставлениеНоменклатурыДляПечати = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
//СтрокаТовары.НаименованиеПолное,
//СтрокаТовары.Характеристика,
//,
//,
//ДополнительныеПараметрыПолученияНаименованияДляПечати);
//--bmk74
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот