Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 18:58

Выведение Итого масса Брутто в Заказе покупателя

Автор Лиана0988, 10 июл 2020, 17:51

0 Пользователей и 1 гость просматривают эту тему.

Лиана0988

Добрый день. Вношу изменения ВПФ хочу вывести ИтогоМассаБрутто. Но не как не могу понять где его вывести
// Функция помещает в структуру все данные, отображаемые при печати документа.
// Вызывается из функции ПечатьСчетаЗаказа и из веб-приложения
//
// Параметры:
//  Тип - строка, содержит тип печатаемого документа (счет или заказ)
//
// Возвращаемое значение:
//  Структура


Функция ПолучитьПараметрыПечатиСчетаЗаказа(Тип) Экспорт   
   
   ЕдиницаИзмеренияВеса = Константы.ЕдиницаИзмеренияВеса.Получить();   

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

   Шапка = Запрос.Выполнить().Выбрать();
   Шапка.Следующий();

   СтрокаВыборкиПоляСодержания = ОбработкаТабличныхЧастей.ПолучитьЧастьЗапросаДляВыбораСодержания("ЗаказПокупателя");
   
   Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
   Запрос.Текст = "
   |ВЫБРАТЬ
   |   ВложенныйЗапрос.Номенклатура,
   |   ВЫРАЗИТЬ (ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК НаименованиеПолное,
   |   ВложенныйЗапрос.Номенклатура.Код                КАК Код,
   |   ВложенныйЗапрос.Номенклатура.Артикул            КАК Артикул,
   |   ВложенныйЗапрос.Количество,
   |   ВложенныйЗапрос.ЕдиницаИзмерения.Представление  КАК ЕдиницаИзмерения,
   |   ВложенныйЗапрос.ПроцентСкидкиНаценки
   |   + ВложенныйЗапрос.ПроцентАвтоматическихСкидок   КАК Скидка,
   |   ВложенныйЗапрос.Цена,
   |   ВложенныйЗапрос.Сумма,
   |   ВложенныйЗапрос.СуммаНДС,
   |   ВложенныйЗапрос.Характеристика,
   |   NULL Как Серия,
   |   ВложенныйЗапрос.НомерСтроки,
   |   Метка
   |ИЗ
   |   (
   |   ВЫБРАТЬ
   |      ЗаказПокупателя.Номенклатура,
   |      ЗаказПокупателя.ЕдиницаИзмерения,
   |      ЗаказПокупателя.ПроцентСкидкиНаценки        КАК ПроцентСкидкиНаценки,
   |      ЗаказПокупателя.ПроцентАвтоматическихСкидок КАК ПроцентАвтоматическихСкидок,
   |      ЗаказПокупателя.Цена                        КАК Цена,
   |      СУММА(ЗаказПокупателя.Количество)           КАК Количество,
   |      СУММА(ЗаказПокупателя.Сумма     )           КАК Сумма,
   |      СУММА(ЗаказПокупателя.СуммаНДС  )           КАК СуммаНДС,
   |      ЗаказПокупателя.ХарактеристикаНоменклатуры  КАК Характеристика,
   |      МИНИМУМ(ЗаказПокупателя.НомерСтроки)        КАК НомерСтроки,
   |      0                                           КАК Метка
   |   ИЗ
   |      Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателя
   |
   |   ГДЕ
   |      ЗаказПокупателя.Ссылка = &ТекущийДокумент
   |
   |   СГРУППИРОВАТЬ ПО
   |      ЗаказПокупателя.Номенклатура,
   |      ЗаказПокупателя.ЕдиницаИзмерения,
   |      ЗаказПокупателя.ПроцентСкидкиНаценки,
   |      ЗаказПокупателя.ПроцентАвтоматическихСкидок,
   |      ЗаказПокупателя.Цена,
   |      ЗаказПокупателя.ХарактеристикаНоменклатуры
   |   ) КАК ВложенныйЗапрос
   |
   |ОБЪЕДИНИТЬ ВСЕ
   |
   |ВЫБРАТЬ
   |   ЗаказПокупателя.Номенклатура,
   |   " + СтрокаВыборкиПоляСодержания + " КАК Товар,
   |   ЗаказПокупателя.Номенклатура.Код     КАК Код,
   |   ЗаказПокупателя.Номенклатура.Артикул КАК Артикул,
   |   ЗаказПокупателя.Количество,
   |   ЗаказПокупателя.Номенклатура.ЕдиницаХраненияОстатков,
   |   ЗаказПокупателя.ПроцентСкидкиНаценки+ЗаказПокупателя.ПроцентАвтоматическихСкидок,
   |   ЗаказПокупателя.Цена,
   |   ЗаказПокупателя.Сумма,
   |   ЗаказПокупателя.СуммаНДС,
   |   NULL,
   |   NULL,
   |   ЗаказПокупателя.НомерСтроки,
   |   1 КАК Метка
   |   
   |ИЗ
   |   Документ.ЗаказПокупателя.Услуги КАК ЗаказПокупателя
   |
   |ГДЕ
   |   ЗаказПокупателя.Ссылка = &ТекущийДокумент
   
   
   |ОБЪЕДИНИТЬ ВСЕ
   |
   |ВЫБРАТЬ
   |   ЗаказПокупателя.Номенклатура,
   |   ПРЕДСТАВЛЕНИЕ(ЗаказПокупателя.Номенклатура) КАК Товар,
   |   ЗаказПокупателя.Номенклатура.Код            КАК Код,
   |   ЗаказПокупателя.Номенклатура.Артикул        КАК Артикул,
   |   ЗаказПокупателя.Количество,
   |   ЗаказПокупателя.Номенклатура.ЕдиницаХраненияОстатков,
   |   NULL,
   |   ЗаказПокупателя.Цена,
   |   ЗаказПокупателя.Сумма,
   |   (0)                                   КАК СуммаНДС,
   |   NULL,
   |   NULL,
   |   ЗаказПокупателя.НомерСтроки,
   |   3 КАК Метка
   |   
   |ИЗ
   |   Документ.ЗаказПокупателя.ВозвратнаяТара КАК ЗаказПокупателя
   |
   |ГДЕ
   |   ЗаказПокупателя.Ссылка = &ТекущийДокумент
   |УПОРЯДОЧИТЬ ПО Метка ВОЗР, НомерСтроки ВОЗР
   |";

   ЗапросТовары = Запрос.Выполнить().Выгрузить();

   // Выводим шапку накладной

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

         ПараметрыПечати.Вставить("БИКБанкаПолучателя", БИК);
         ПараметрыПечати.Вставить("БанкПолучателя", Банк);
         ПараметрыПечати.Вставить("БанкПолучателяПредставление", СокрЛП(Банк) + " " + ГородБанка);
         ПараметрыПечати.Вставить("СчетБанкаПолучателя", КоррСчет);
         ПараметрыПечати.Вставить("СчетБанкаПолучателяПредставление", КоррСчет);
         ПараметрыПечати.Вставить("СчетПолучателяПредставление", НомерСчета);
         ПараметрыПечати.Вставить("СчетПолучателя", НомерСчета);
         ПредставлениеПоставщикаДляПлатПоручения = СсылкаНаОбъект.СтруктурнаяЕдиница.ТекстКорреспондента;
      КонецЕсли;
      Если ПустаяСтрока(ПредставлениеПоставщикаДляПлатПоручения) Тогда
         ПредставлениеПоставщикаДляПлатПоручения = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ПолноеНаименование,");
      КонецЕсли;
      ПараметрыПечати.Вставить("ПредставлениеПоставщикаДляПлатПоручения", ПредставлениеПоставщикаДляПлатПоручения);
   КонецЕсли;

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

   ПараметрыПечати.Вставить("ЕстьСкидки", Ложь);
   Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл
      Если ЗначениеЗаполнено(ВыборкаСтрокТовары.Скидка) Тогда
         ПараметрыПечати.ЕстьСкидки = Истина;
         Прервать;
      КонецЕсли;
   КонецЦикла;

   ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
   ПараметрыПечати.Вставить("ВыводитьКоды", Ложь);
   Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
      ПараметрыПечати.ВыводитьКоды = Истина;
      Колонка = "Артикул";
   ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
      ПараметрыПечати.ВыводитьКоды = Истина;
      Колонка = "Код";
   КонецЕсли;
   
   Если ПараметрыПечати.ВыводитьКоды Тогда
      ПараметрыПечати.Вставить("ИмяКолонкиКодов", Колонка);
   КонецЕсли;

   Сумма    = 0;
   СуммаНДС = 0;
   ВсегоСкидок    = 0;
   ВсегоБезСкидок = 0;

   Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл
      
      ПараметрыПозиции = Новый Структура;

      ПараметрыПозиции.Вставить("Номенклатура", ВыборкаСтрокТовары.Номенклатура);
      ПараметрыПозиции.Вставить("НомерСтроки", ЗапросТовары.Индекс(ВыборкаСтрокТовары) + 1);

      Если ПараметрыПечати.ВыводитьКоды Тогда
         Если Колонка = "Артикул" Тогда
            ПараметрыПозиции.Вставить("Артикул", ВыборкаСтрокТовары.Артикул);
         Иначе
            ПараметрыПозиции.Вставить("Артикул", ВыборкаСтрокТовары.Код);
         КонецЕсли;
      КонецЕсли;

      ПараметрыПозиции.Вставить("Количество", ВыборкаСтрокТовары.Количество);
      ПараметрыПозиции.Вставить("ЕдиницаИзмерения", ВыборкаСтрокТовары.ЕдиницаИзмерения);
      ПараметрыПозиции.Вставить("Цена", ВыборкаСтрокТовары.Цена);
      ПараметрыПозиции.Вставить("Товар", СокрП(ВыборкаСтрокТовары.НаименованиеПолное)
                                          + ФормированиеПечатныхФорм.ПредставлениеСерий(ВыборкаСтрокТовары)
                                          + ?(ВыборкаСтрокТовары.Метка = 3, " (возвратная тара)", ""));

      Скидка = Ценообразование.ПолучитьСуммуСкидки(ВыборкаСтрокТовары.Сумма, ВыборкаСтрокТовары.Скидка);

      Если ПараметрыПечати.ЕстьСкидки Тогда
         ПараметрыПозиции.Вставить("Скидка", Скидка);
         ПараметрыПозиции.Вставить("СуммаБезСкидки", ВыборкаСтрокТовары.Сумма + Скидка);
      КонецЕсли;

      ПараметрыПозиции.Вставить("Сумма", ВыборкаСтрокТовары.Сумма);
      
      Сумма          = Сумма       + ВыборкаСтрокТовары.Сумма;
      СуммаНДС       = СуммаНДС    + ВыборкаСтрокТовары.СуммаНДС;
      ВсегоСкидок    = ВсегоСкидок + Скидка;
      ВсегоБезСкидок = Сумма       + ВсегоСкидок;
      
      Позиции.Добавить(ПараметрыПозиции);

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

   // Вывести Сумму прописью
   СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
   ПараметрыПечати.Вставить("ИтоговаяСтрока", "Всего наименований " + ЗапросТовары.Количество()
   + ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента));
   ПараметрыПечати.Вставить("СуммаПрописью", ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента));

   // Вывести подписи
   Если Тип = "Счет" Тогда
      Руководители = РегламентированнаяОтчетность.ОтветственныеЛицаОрганизаций(Шапка.Руководители, Шапка.Дата,);
      Руководитель = Руководители.Руководитель;
      Бухгалтер    = Руководители.ГлавныйБухгалтер;

      ПараметрыПечати.Вставить("ФИОРуководителя", "/" + Руководитель  + "/");
      ПараметрыПечати.Вставить("ФИОБухгалтера", "/" + Бухгалтер     + "/");
      ПараметрыПечати.Вставить("ФИООтветственный", "/" + СсылкаНаОбъект.Ответственный + "/");

   КонецЕсли;
   
   Возврат ПараметрыПечати;

КонецФункции // ПолучитьПараметрыПечатиСчетаЗаказа() 






Функция Печать() Экспорт
   
   ТабДокумент = Новый ТабличныйДокумент;
   ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПокупателя_СчетЗаказ";
    Тип = "не Счет";

   ПараметрыПечати = ПолучитьПараметрыПечатиСчетаЗаказа(Тип);
   
   Макет = ПолучитьМакет("Макет");

   // Выводим шапку накладной
    Тип = "не Счет";
   Если Тип = "Счет" Тогда
      ОбластьМакета       = Макет.ПолучитьОбласть("ЗаголовокСчета");
      ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
      ТабДокумент.Вывести(ОбластьМакета);
   КонецЕсли;

   ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
   ТабДокумент.Вывести(ОбластьМакета);

   ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
   ТабДокумент.Вывести(ОбластьМакета);

   ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
   ТабДокумент.Вывести(ОбластьМакета);
   
   ОбластьМакета = Макет.ПолучитьОбласть("Склад");
   ОбластьМакета.Параметры.Склад = СсылкаНаОбъект.СкладГруппа;
   ТабДокумент.Вывести(ОбластьМакета);
   
   ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
   ОбластьКодов  = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов");
   ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");
   ОбластьСкидок = Макет.ПолучитьОбласть("ШапкаТаблицы|Скидка");
   ОбластьСуммы  = Макет.ПолучитьОбласть("ШапкаТаблицы|Сумма");

   ОбластьТовар = Макет.ПолучитьОбласть("ШапкаТаблицы|Товар");
   Если Не ПараметрыПечати.ВыводитьКоды И ПараметрыПечати.ЕстьСкидки Тогда
      ОбластьТовар = Макет.ПолучитьОбласть("ШапкаТаблицы|ТоварБезКодов");
   ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И ПараметрыПечати.ВыводитьКоды Тогда
      ОбластьТовар = Макет.ПолучитьОбласть("ШапкаТаблицы|ТоварБезСкидок");
   ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И НЕ ПараметрыПечати.ВыводитьКоды Тогда
      ОбластьТовар = Макет.ПолучитьОбласть("ШапкаТаблицы|ТоварБезКодовИСкидок");
   КонецЕсли;

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

   // Увеличим ширину колонки Товар на ширину неиспользуемых колонок
   ОбластьКолонкаТовар = Макет.Область("Товар");
   Если Не ПараметрыПечати.ВыводитьКоды И ПараметрыПечати.ЕстьСкидки Тогда
      ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки * 1.5;
   ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И ПараметрыПечати.ВыводитьКоды Тогда
      ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки * 2.125;
   ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И НЕ ПараметрыПечати.ВыводитьКоды Тогда
      ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки * 2.625;
   КонецЕсли;

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

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

   Для каждого ПараметрыПозиции Из ПараметрыПечати.Позиции Цикл

      Если НЕ ЗначениеЗаполнено(ПараметрыПозиции.Номенклатура) Тогда
         Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
         Продолжить;
      КонецЕсли;

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

      Если ПараметрыПечати.ВыводитьКоды Тогда
         ОбластьКодов.Параметры.Заполнить(ПараметрыПозиции);
         ТабДокумент.Присоединить(ОбластьКодов);
      КонецЕсли;

      ОбластьТовар.Параметры.Заполнить(ПараметрыПозиции);
      ТабДокумент.Присоединить(ОбластьТовар);
      ОбластьДанных.Параметры.Заполнить(ПараметрыПозиции);
      ТабДокумент.Присоединить(ОбластьДанных);

      Если ПараметрыПечати.ЕстьСкидки Тогда
         ОбластьСкидок.Параметры.Заполнить(ПараметрыПозиции);
         ТабДокумент.Присоединить(ОбластьСкидок);
      КонецЕсли;

      ОбластьСуммы.Параметры.Заполнить(ПараметрыПозиции);
      ТабДокумент.Присоединить(ОбластьСуммы);
      
   КонецЦикла;

   // Вывести Итого
   ОбластьНомера = Макет.ПолучитьОбласть("Итого|НомерСтроки");
   ОбластьКодов  = Макет.ПолучитьОбласть("Итого|КолонкаКодов");
   ОбластьДанных = Макет.ПолучитьОбласть("Итого|Данные");
   ОбластьСкидок = Макет.ПолучитьОбласть("Итого|Скидка");
   ОбластьСуммы  = Макет.ПолучитьОбласть("Итого|Сумма");

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

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

   // Вывести ИтогоНДС
   Если ПараметрыПечати.УчитыватьНДС Тогда
      ОбластьНомера = Макет.ПолучитьОбласть("ИтогоНДС|НомерСтроки");
      ОбластьКодов  = Макет.ПолучитьОбласть("ИтогоНДС|КолонкаКодов");
      ОбластьДанных = Макет.ПолучитьОбласть("ИтогоНДС|Данные");
      ОбластьСкидок = Макет.ПолучитьОбласть("ИтогоНДС|Скидка");
      ОбластьСуммы  = Макет.ПолучитьОбласть("ИтогоНДС|Сумма");

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

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

   // Вывести Сумму прописью
   ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
   ТабДокумент.Вывести(ОбластьМакета);

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

   Возврат ТабДокумент;

   
КонецФункции

karogach

в запросе выведи поле Итог по колонке  табличной части .

в печати  область строки .параметры = Итог ( массаБруто) 

примерно так

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск