Заказ покупателя с учетом корректировки

1. ArikiteSun 17.04.13 16:02 Сейчас в теме
Добрый день, почтеннейшие Гуру!

Есть документ - основание Заказ покупателя, на основании которого формируется в дальнейшем корректировка "Корректировка заказа покупателя"

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

Почтеннейшие, прошу совета: как исключить из печатной формы вывод строки которая прошла через корректировку
Код
Функция ПечатьСчетаЗаказаКорректировки(Тип)

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

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

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

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

    // Уничтожим нумерацию строк для товаров, введенных корректировками
 
    Для Каждого СтрокаТаблицы Из ЗапросТовары Цикл
        Если СтрокаТаблицы.НомерТЧ = 2 Тогда
            СтрокаТаблицы.НомерСтроки = 1;
        КонецЕсли;
    КонецЦикла;
    
    // Уничтожим нумерацию строк для услуг, введенных корректировками
 
    Для Каждого СтрокаТаблицы Из ЗапросТовары Цикл
        Если СтрокаТаблицы.НомерТЧ = 4 Тогда
            СтрокаТаблицы.НомерСтроки = 1;
        КонецЕсли;
    КонецЦикла;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл 

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

        НумераторСтрок = НумераторСтрок + 1;
        ОбластьНомера.Параметры.НомерСтроки = НумераторСтрок;
        ТабДокумент.Вывести(ОбластьНомера);

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

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

        Если ЗначениеНеЗаполнено(ВыборкаСтрокТовары.Скидка) Тогда
            Скидка = 0;
        Иначе
            Скидка = ВыборкаСтрокТовары.Сумма / (100 - ВыборкаСтрокТовары.Скидка) * ВыборкаСтрокТовары.Скидка;
        КонецЕсли;
        Если ЕстьСкидки Тогда
            ОбластьСкидок.Параметры.Скидка         = Скидка;
            ОбластьСкидок.Параметры.СуммаБезСкидки = ВыборкаСтрокТовары.Сумма + Скидка;
            ТабДокумент.Присоединить(ОбластьСкидок);
        КонецЕсли;

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

    КонецЦикла;

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

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

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

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

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

    // Вывести подписи
 
    Если Тип = "Счет" Тогда
        ОбластьМакета = Макет.ПолучитьОбласть("ПодвалСчета");

        Руководители = ОтветственныеЛицаОрганизации(Шапка.Руководители, Шапка.Дата,);
        Руководитель = Руководители.Руководитель;
        Бухгалтер    = Руководители.ГлавныйБухгалтер;

        ОбластьМакета.Параметры.ФИОРуководителя  = "/" + Руководитель  + "/";
        ОбластьМакета.Параметры.ФИОБухгалтера    = "/" + Бухгалтер     + "/";
        ОбластьМакета.Параметры.ФИООтветственный = "/" + Ответственный + "/";

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

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

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

Показать полностью
По теме из базы знаний
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
Оставьте свое сообщение

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