Версия для печати темы (https://pro1c.org.ua/index.php?s=cb6d54304fd0e97a6723a29f18494295&showtopic=66727)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Общее количество и вес в печатной форме Реализация товаров и услуг УТ11 Управляемые формы

Автор: seregapplk 12.09.21, 10:37

Доброго времени суток.
Подскажите пожалуйста как добавить сумму колонки количество, общее количество позиций в форму печать. В обработке печать общих форм.
И нужно создать строку Весом из карточки номенклатуры.
Помогите пож. с запросами, сам не разберусь.

Автор: denis84 12.09.21, 11:59

seregapplk @ Сегодня, 11:37 * ,
Делать свою внешнюю печатную форму

Автор: seregapplk 13.09.21, 13:44

мне кажется єто сложнее

Автор: Vofka 13.09.21, 14:20

seregapplk @ Сегодня, 14:44 * ,
мне кажется нет. Я согласен с denis84 насчет того, что вам надо сделать свою печатную форму (внутреннюю или внешнюю). В общую форму печати вроде ж передается уже сформированная печатная форма. Для любителей экзотики можно конечно там с ней что-то сделать, но для тех, кто не поклонник садомазо - отдельная печатная форма верный путь.

Автор: seregapplk 14.09.21, 10:08

Вес пропустим, как сделать количество итого ?

вот функция заполнения печатной формы
тыц

Функция ЗаполнитьТабличныйДокументРасходнаяНакладная(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати, КомплектыПечати, ПараметрыПечати, ПараметрыВывода)

    Перем КомплектПечатиПоСсылке;
    
    КодЯзыкаПечать = ПараметрыВывода.КодЯзыкаДляМногоязычныхПечатныхФорм;    
    
    ДанныеПечати          = ДанныеДляПечати.РезультатПоШапке.Выбрать();
    ВыборкаПоДокументам = ДанныеДляПечати.РезультатПоТабличнойЧасти.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);


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

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

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

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

        Если ВыборкаДетальныеЗаписи2.Следующий() Тогда
            КонечныйДолг = ВыборкаДетальныеЗаписи2.СуммаКонечныйОстаток;
            Если КонечныйДолг < 0 Тогда
                ОбластьМакета.Параметры.ДолгИнфа = "Передоплата контрагента з урахуванням цієї накладної становить  " + (-1)*КонечныйДолг + " грн.";
            Иначе
                ОбластьМакета.Параметры.ДолгИнфа = "Заборгованість контрагента з урахуванням цієї накладної становить  " + КонечныйДолг + " грн.";

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

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

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


Простите за пост такой, думал код уйдет под спойлер,

Автор: dravva 14.09.21, 11:12

seregapplk @ Сегодня, 11:08 * ,
ИМХО, посмотрите как считает Сумма и рядом считайте ОбщееКоличество

Автор: seregapplk 15.09.21, 8:38

dravva @ Вчера, 12:12 * ,
похоже что так Параметр в форме <Всего>

Если ЕстьСкидки Тогда
    СтруктураДанныхВсегоСкидки.Вставить("ВсегоСкидок", ?(ЗаголовокСкидки.ТолькоНаценка,-ВсегоСкидок, ВсегоСкидок));
    СтруктураДанныхВсегоСкидки.Вставить("ВсегоБезСкидок", ВсегоБезСкидок);
КонецЕсли;
СтруктураДанныхВсегоСкидки.Вставить("Всего",  ФормированиеПечатныхФорм.ФорматСумм(Сумма));
ОбластьДанных.Параметры.Заполнить(СтруктураДанныхВсегоСкидки);
ТабличныйДокумент.Присоединить(ОбластьДанных);

Автор: seregapplk 15.09.21, 14:07

seregapplk @ Сегодня, 9:38 * ,
Подскажите что не так
ох жесть какая

Сумма          = 0;
        СуммаНДС       = 0;
        ВсегоСкидок    = 0;
        НомерСтроки    = 0;
        ВсегоБезСкидок = 0;
        ИтогКоличество = 0;
        ИтогВес  = 0;
        
                Пока ВыборкаПоТоварам.Следующий() Цикл
//Тут все тело цикла
ИтогКоличество = ИтогКоличество + ВыборкаПоТоварам.Количество;
ИтогВес  = ИтогВес + ВыборкаПоТоварам.Номенклатура.Вес;
КонецЦикла;
ОбластьПодвалТаблицы.Параметры.ИтогВес = ИтогВес;  
ОбластьПодвалТаблицы.Параметры.ИтогКоличество = ИтогКоличество;
        
        ПустыеДанные = НаборыСервер.ПустыеДанные();
        
        // Выводим строки таблицы Товары

{Обработка.ПечатьОбщихФорм.МодульМенеджера(1017,1)}: Переменная не определена (ОбластьПодвалТаблицы)
<<?>>ОбластьПодвалТаблицы.Параметры.ИтогВес = ИтогВес; (Проверка: Сервер)
{Обработка.ПечатьОбщихФорм.МодульМенеджера(1018,1)}: Переменная не определена (ОбластьПодвалТаблицы)
<<?>>ОбластьПодвалТаблицы.Параметры.ИтогКоличество = ИтогКоличество; (Проверка: Сервер)
https://pro1c.org.ua/redirect.php?https://drive.google.com/file/d/1JLYnLH37PAAFjvaGbEIfsJLEAAWdGNen/view?usp=sharing
https://pro1c.org.ua/redirect.php?https://d.radikal.ru/d06/2109/c0/20d20b9364a6.png

Автор: sava1 15.09.21, 14:22

для начала областьПодвал.... надо получить (ОбластьПодвалТаблицы = макет.ПолучитьОбласть("...
во-вторых - выводить ее надо по-частям -- через Присоединить().
У Вас в коде Подвал выводится - посмотрите после цикла по строкам

Автор: seregapplk 15.09.21, 16:35

Пока ВыборкаПоТоварам.Следующий() Цикл
//Тут все тело цикла

ИтогКоличество = ИтогКоличество + ВыборкаПоТоварам.Количество;
ИтогВес = ИтогВес + ВыборкаПоТоварам.Номенклатура.Вес;
КонецЦикла;
ОбластьПодвалТаблицы = макет.ПолучитьОбласть("ПодвалТаблицы");
ОбластьПодвалТаблицы.Параметры.ИтогВес = ИтогВес;
ОбластьПодвалТаблицы.Параметры.ИтогКоличество = ИтогКоличество;


ругается
{Обработка.ПечатьОбщихФорм.МодульМенеджера(1019)}: Поле объекта не обнаружено (ИтогКоличество)
ОбластьПодвалТаблицы.Параметры.ИтогКоличество = ИтогКоличество;


Как правильно присоединить?

sava1 @ Сегодня, 15:22 * ,
нет, только через присоединить.

Автор: seregapplk 16.09.21, 9:29

все считает, через сообщить выводит,
не могу вывести правильно в товар на форму

с этим кодом пусто в строке товары

Код


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

Автор: seregapplk 16.09.21, 11:52

seregapplk @ Сегодня, 10:29 * ,
все разобрался, я протупил)) Всем Спасибо огромное!

ИтогВес = ИтогВес + ВыборкаПоТоварам.Номенклатура.Вес;
получаем вес по количеству строк,
как получить вес по количеству номенклатуры?

Автор: seregapplk 17.09.21, 9:00

Все получилось, спасибо

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua