Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Маршрутный лист берет ненужные накладные          
burza Подменю пользователя
сообщение 01.06.23, 13:21
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

Есть маршрутный лист на сегодня выделяеться жирным сколько нужно денег за него, а есть долги до сегодня вот бы их в одну строку а не все накладные с сумами. подскажите как реализовать,уже голову сломил)
Если удалить само поле наклданая тогда да будет одна строка. но тут нужно имено которая жырная а остальные уже нет



Код
    ТабличныйДокумент = Новый ТабличныйДокумент;
    
    Если ИмяМакета="МаршрутныйЛист" Тогда
        
        ТабличныйДокумент.КлючПараметровПечати = "ПараметрыПечати_МаршрутныйЛистПродажи";
        
        ПервыйДокумент = Истина;
        
        Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.МаршрутныйЛистПродажи.ПФ_MXL_МаршрутныйЛистПродажи");
        
        КодЯзыкаПечать = Локализация.ПолучитьЯзыкФормированияПечатныхФорм();    
        Макет.КодЯзыкаМакета = КодЯзыкаПечать;
    
        Запрос = Новый Запрос();
        Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
        Запрос.Текст =
        "ВЫБРАТЬ
        |    МаршрутныйЛистПродажи.Ссылка КАК Ссылка,
        |    МаршрутныйЛистПродажи.Дата КАК ДатаДокумента,
        |    МаршрутныйЛистПродажи.Номер КАК Номер,
        |    МаршрутныйЛистПродажи.ДополнительнаяИнформация КАК ДополнительнаяИнформация,
        |    МаршрутныйЛистПродажи.ГруппаКлиентов КАК ГруппаКлиентов
        |ИЗ
        |    Документ.МаршрутныйЛистПродажи КАК МаршрутныйЛистПродажи
        |ГДЕ
        |    МаршрутныйЛистПродажи.Ссылка В(&МассивОбъектов)
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    МаршрутныйЛистПродажиЗаказы.Ссылка КАК Ссылка,
        |    МаршрутныйЛистПродажиЗаказы.РасходнаяНакладная КАК РасходнаяНакладная,
        |    МаршрутныйЛистПродажиЗаказы.РасходнаяНакладная.Номер КАК НомерРН,
        |    МаршрутныйЛистПродажиЗаказы.РасходнаяНакладная.Дата КАК ДатаРН,
        |    МаршрутныйЛистПродажиЗаказы.РасходнаяНакладная.Вес КАК Вес,
        |    МаршрутныйЛистПродажиЗаказы.РасходнаяНакладная.Объем КАК Объем,
        |    МаршрутныйЛистПродажиЗаказы.РасходнаяНакладная.Контрагент КАК Контрагент,
        |    0 КАК СуммаДолга,
        |    1 КАК ПринадлежитМаршруту,
        |    МаршрутныйЛистПродажиЗаказы.РасходнаяНакладная.СуммаДокумента КАК СуммаОтгрузки,
        |    МаршрутныйЛистПродажиЗаказы.Ссылка.ГруппаКлиентов КАК ГруппаКлиентов
        |ПОМЕСТИТЬ ВТ_Маршрут
        |ИЗ
        |    Документ.МаршрутныйЛистПродажи.Заказы КАК МаршрутныйЛистПродажиЗаказы
        |ГДЕ
        |    МаршрутныйЛистПродажиЗаказы.Ссылка В(&МассивОбъектов)
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    Контрагенты.Ссылка КАК Контрагент,
        |    МаршрутныйЛистПродажи.Ссылка КАК МЛист
        |ПОМЕСТИТЬ ВТ_КлиентыМЛиста
        |ИЗ
        |    Справочник.Контрагенты КАК Контрагенты
        |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.МаршрутныйЛистПродажи КАК МаршрутныйЛистПродажи
        |        ПО (МаршрутныйЛистПродажи.ГруппаКлиентов = Контрагенты.Родитель
        |                ИЛИ МаршрутныйЛистПродажи.ГруппаКлиентов = Контрагенты.Родитель.Родитель
        |                ИЛИ МаршрутныйЛистПродажи.ГруппаКлиентов = Контрагенты.Родитель.Родитель.Родитель
        |                ИЛИ МаршрутныйЛистПродажи.ГруппаКлиентов = Контрагенты.Родитель.Родитель.Родитель.Родитель
        |                ИЛИ МаршрутныйЛистПродажи.ГруппаКлиентов = Контрагенты.Родитель.Родитель.Родитель.Родитель.Родитель)
        |ГДЕ
        |    Контрагенты.ЭтоГруппа = ЛОЖЬ
        |    И МаршрутныйЛистПродажи.Ссылка В(&МассивОбъектов)
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    РасчетыСПокупателямиОстатки.Контрагент КАК Контрагент,
        |    РасчетыСПокупателямиОстатки.Документ КАК Документ,
        |    МАКСИМУМ(РасчетыСПокупателямиОстатки.СуммаОстаток) КАК СуммаОстаток,
        |    СУММА(0) КАК Вес,
        |    СУММА(0) КАК Объем,
        |    СУММА(0) КАК ПринадлежитМаршруту,
        |    СУММА(0) КАК СуммаОтгрузки,
        |    ВТ_КлиентыМЛиста.МЛист КАК Ссылка
        |ПОМЕСТИТЬ ВТ_Долги
        |ИЗ
        |    ВТ_КлиентыМЛиста КАК ВТ_КлиентыМЛиста
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСПокупателями.Остатки(, ) КАК РасчетыСПокупателямиОстатки
        |        ПО ВТ_КлиентыМЛиста.Контрагент = РасчетыСПокупателямиОстатки.Контрагент
        |
        |СГРУППИРОВАТЬ ПО
        |    РасчетыСПокупателямиОстатки.Контрагент,
        |    РасчетыСПокупателямиОстатки.Документ,
        |    ВТ_КлиентыМЛиста.МЛист
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ВТ_Маршрут.Ссылка КАК Ссылка,
        |    ВТ_Маршрут.РасходнаяНакладная КАК РасходнаяНакладная,
        |    СУММА(ВТ_Маршрут.Вес) КАК Вес,
        |    СУММА(ВТ_Маршрут.Объем) КАК Объем,
        |    ВТ_Маршрут.СуммаДолга КАК СуммаДолга,
        |    ВТ_Маршрут.Контрагент КАК Контрагент,
        |    ВТ_Маршрут.ПринадлежитМаршруту КАК ПринадлежитМаршруту,
        |    ВТ_Маршрут.СуммаОтгрузки КАК СуммаОтгрузки
        |ПОМЕСТИТЬ ВТ
        |ИЗ
        |    ВТ_Маршрут КАК ВТ_Маршрут
        |
        |СГРУППИРОВАТЬ ПО
        |    ВТ_Маршрут.Ссылка,
        |    ВТ_Маршрут.РасходнаяНакладная,
        |    ВТ_Маршрут.Контрагент,
        |    ВТ_Маршрут.СуммаДолга,
        |    ВТ_Маршрут.ПринадлежитМаршруту,
        |    ВТ_Маршрут.СуммаОтгрузки
        |
        |ОБЪЕДИНИТЬ ВСЕ
        |
        |ВЫБРАТЬ
        |    ВТ_Долги.Ссылка,
        |    ВТ_Долги.Документ,
        |    ВТ_Долги.Вес,
        |    ВТ_Долги.Объем,
        |    ВТ_Долги.СуммаОстаток,
        |    ВТ_Долги.Контрагент,
        |    ВТ_Долги.ПринадлежитМаршруту,
        |    ВТ_Долги.СуммаОтгрузки
        |ИЗ
        |    ВТ_Долги КАК ВТ_Долги
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ВТ.Ссылка КАК Ссылка,
        |    ВТ.Ссылка.Дата КАК ДатаДок,
        |    ВТ.РасходнаяНакладная КАК РасходнаяНакладная,
        |    СУММА(ВТ.Вес) КАК Вес,
        |    СУММА(ВТ.Объем) КАК Объем,
        |    СУММА(ВТ.СуммаДолга) КАК СуммаКОплате,
        |    ВТ.Контрагент КАК Контрагент,
        |    СУММА(ВТ.ПринадлежитМаршруту) КАК ПринадлежитМаршруту,
        |    СУММА(ВТ.СуммаОтгрузки) КАК СуммаОтгрузки
//        |    ВТ.РасходнаяНакладная.Дата КАК ДатаНакладной
        |ИЗ
        |    ВТ КАК ВТ
        |
        |СГРУППИРОВАТЬ ПО
        |    ВТ.Ссылка,
        |    ВТ.РасходнаяНакладная,
        |    ВТ.Контрагент,
        |    ВТ.Ссылка.Дата
        |
        |УПОРЯДОЧИТЬ ПО
        |    Ссылка,
        |    Контрагент,
//        |    ДатаНакладной УБЫВ,
        |    РасходнаяНакладная УБЫВ";
        
        Результат = Запрос.ВыполнитьПакет();
        ВыборкаДокументов = Результат[0].Выбрать();
        ТаблицаЗаказов = Результат[5].Выгрузить();
        
        ТаблицаЗаказов.Колонки.Добавить("ДатаНакладной");
        Для каждого СтрокаЗаказ Из ТаблицаЗаказов Цикл
            Попытка
                СтрокаЗаказ.ДатаНакладной = СтрокаЗаказ.РасходнаяНакладная.Дата;
            Исключение
                СтрокаЗаказ.ДатаНакладной = Дата(2020,01,01);
            КонецПопытки;
        КонецЦикла;
        ТаблицаЗаказов.Сортировать("Ссылка,Контрагент,ДатаНакладной Убыв,РасходнаяНакладная Убыв");
        
        
        списокВидДок = Новый Соответствие;
        списокВидДок.Вставить(Тип("ДокументСсылка.РасходнаяНакладная"),"Расх.Накл. №");
        списокВидДок.Вставить(Тип("ДокументСсылка.ПоступлениеВКассу"),"Пост. в Кассу №");
        списокВидДок.Вставить(Тип("ДокументСсылка.ПоступлениеНаСчет"),"Пост. в Банк №");
        списокВидДок.Вставить(Тип("ДокументСсылка.ПриходнаяНакладная"),"Возвр.Накл. №");
        
        
        Пока ВыборкаДокументов.Следующий() Цикл
            ТекущийДокумент = ВыборкаДокументов.Ссылка;
            
            Если НЕ ПервыйДокумент Тогда
                ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
            КонецЕсли;
            ПервыйДокумент = Ложь;
            
            НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
            
            
            НомерДокумента = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ВыборкаДокументов.Номер, Истина, Истина);
            
            ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокДокумента");
            ОбластьМакета.Параметры.ЗаголовокДокумента = НСтр("ru='Маршрутный лист № ';uk='Маршрутний лист № '", КодЯзыкаПечать)
                + НомерДокумента
                + НСтр("ru=' от ';uk=' від '", КодЯзыкаПечать)
                + Формат(ВыборкаДокументов.ДатаДокумента, "Л="+КодЯзыкаПечать+"; ДЛФ=DD");
                
            ТабличныйДокумент.Вывести(ОбластьМакета);
            
            ОбластьМакета = Макет.ПолучитьОбласть("НаправлениеДоставки");
            ОбластьМакета.Параметры.печНаправление = ВыборкаДокументов.ГруппаКлиентов;                
            ТабличныйДокумент.Вывести(ОбластьМакета);
            
            ОбластьМакета = Макет.ПолучитьОбласть("ШапкаТаблицы");
            ТабличныйДокумент.Вывести(ОбластьМакета);
            ОбластьМакета = Макет.ПолучитьОбласть("СтрокаТаблицы");
            
            СтруктураОтбора = Новый Структура;
            СтруктураОтбора.Вставить("Ссылка", ВыборкаДокументов.Ссылка);
            СтрокиЗаказы = ТаблицаЗаказов.НайтиСтроки(СтруктураОтбора);
            
            ТаблицаДолгиКлиентов = ТаблицаЗаказов.Скопировать();
            ТаблицаДолгиКлиентов.Свернуть("Контрагент,Ссылка","СуммаКОплате");
            
            
            Вес = 0;
            Объем = 0;
            СуммаОтгрузки=0;
            КвоНакладных=0;
            ЖирныйШрифт = Новый Шрифт(, , Истина);
            Обычный = Новый Шрифт(, , Ложь);
            НачКлиент = Справочники.Контрагенты.ПустаяСсылка();
            ПерваяСтрока = Истина;
            Для каждого СтрокаЗаказ Из СтрокиЗаказы Цикл
                Если НЕ ЗначениеЗаполнено(СтрокаЗаказ.Контрагент) Тогда
                    Продолжить;
                КонецЕсли;
                ПараметрыОтбора = Новый Структура;
                ПараметрыОтбора.Вставить("Контрагент", СтрокаЗаказ.Контрагент);
                ПараметрыОтбора.Вставить("Ссылка",ВыборкаДокументов.Ссылка);
                НайденныеДолги = ТаблицаДолгиКлиентов.НайтиСтроки(ПараметрыОтбора);  
                ДолгКлиента=0;
                Для каждого СтрокаДолга Из НайденныеДолги Цикл
                    ДолгКлиента = СтрокаДолга.СуммаКОплате;
                КонецЦикла;
                //ДолгКлиента = ТаблицаДолгиКлиентов.Найти(СтрокаЗаказ.Контрагент,"Контрагент").СуммаКОплате;
                Если НЕ НачКлиент = СтрокаЗаказ.Контрагент И НЕ ПерваяСтрока Тогда
                    ОбластьМакета.Параметры.Заполнить(Новый Структура("печКлиент,НомерНакладной,ДатаНакладной,СуммаКОплате"));
                    ТабличныйДокумент.Вывести(ОбластьМакета);
                    
                    
                    Если СтрокаЗаказ.ПринадлежитМаршруту = 1 Тогда
                        ОбластьМакета.Область("СтрокаТаблицы").Шрифт = ЖирныйШрифт;
                    Иначе
                        ОбластьМакета.Область("СтрокаТаблицы").Шрифт = Обычный;
                    КонецЕсли;

                    ОбластьМакета.Параметры.печКлиент = СтрокаЗаказ.Контрагент;
                    ОбластьМакета.Параметры.НомерНакладной = "Общий долг на:";
                    ОбластьМакета.Параметры.ДатаНакладной = ВыборкаДокументов.ДатаДокумента;
                    ОбластьМакета.Параметры.СуммаКОплате = ДолгКлиента;
                    ТабличныйДокумент.Вывести(ОбластьМакета);
                    НачКлиент = СтрокаЗаказ.Контрагент;
                    
                КонецЕсли;
                Если ПерваяСтрока Тогда
                    Если СтрокаЗаказ.ПринадлежитМаршруту = 1 Тогда
                        ОбластьМакета.Область("СтрокаТаблицы").Шрифт = ЖирныйШрифт;
                    Иначе
                        ОбластьМакета.Область("СтрокаТаблицы").Шрифт = Обычный;
                    КонецЕсли;
                    ОбластьМакета.Параметры.печКлиент = СтрокаЗаказ.Контрагент;
                    ОбластьМакета.Параметры.НомерНакладной = "Общий долг на:";
                    ОбластьМакета.Параметры.ДатаНакладной = ВыборкаДокументов.ДатаДокумента;
                    ОбластьМакета.Параметры.СуммаКОплате = ДолгКлиента;
                    ТабличныйДокумент.Вывести(ОбластьМакета);
                    НачКлиент = СтрокаЗаказ.Контрагент;
                КонецЕсли;
                ПерваяСтрока = ЛОЖЬ;
                
                //КОплатеПоЗаказу = ?(СтрокаЗаказ.КОплате<0, 0, СтрокаЗаказ.КОплате);
                Если СтрокаЗаказ.ПринадлежитМаршруту = 1 Тогда
                    ОбластьМакета.Область("СтрокаТаблицы").Шрифт = ЖирныйШрифт;
                    //ОбластьМакета.Параметры.Заполнить(СтрокаЗаказ);
                    //ОбластьМакета.Параметры.НомерНакладной = "Расх.Накладная №"+СтрокаЗаказ.НомерРН;
                    //ОбластьМакета.Параметры.ДатаНакладной = СтрокаЗаказ.ДатаРН;
                    Вес = Вес + СтрокаЗаказ.Вес;
                    Объем = Объем + СтрокаЗаказ.Объем;
                    СуммаОтгрузки = СуммаОтгрузки + СтрокаЗаказ.СуммаОтгрузки;
                    КвоНакладных = КвоНакладных + 1;
                Иначе
                    //ОбластьМакета.Параметры.НомерНакладной = "Расх.Накладная №"+СтрокаЗаказ.НомерЗаказа;
                    //ОбластьМакета.Параметры.ДатаНакладной = СтрокаЗаказ.ДатаЗаказа;
                    ОбластьМакета.Область("СтрокаТаблицы").Шрифт = Обычный;
                    //ОбластьМакета.Параметры.Заполнить(СтрокаЗаказ);
                КонецЕсли;
                ОбластьМакета.Параметры.Заполнить(СтрокаЗаказ);
                ВидДокСтр = списокВидДок.Получить(ТипЗнч(СтрокаЗаказ.РасходнаяНакладная));
                Если ВидДокСтр = Неопределено Тогда
                    ВидДокСтр = "";
                КонецЕсли;
                Попытка
                    ОбластьМакета.Параметры.НомерНакладной = ВидДокСтр+СтрокаЗаказ.РасходнаяНакладная.Номер;
                Исключение
                    ОбластьМакета.Параметры.НомерНакладной = ВидДокСтр+"";
                КонецПопытки;
                Попытка
                    ОбластьМакета.Параметры.ДатаНакладной = СтрокаЗаказ.РасходнаяНакладная.Дата;
                Исключение
                    ОбластьМакета.Параметры.ДатаНакладной = "";
                КонецПопытки;
                ОбластьМакета.Параметры.РасшифровкаНакладная = СтрокаЗаказ.РасходнаяНакладная.Ссылка;
            
                Если НачКлиент = СтрокаЗаказ.Контрагент Тогда
                    ОбластьМакета.Параметры.печКлиент = "";
                Иначе
                    НачКлиент=СтрокаЗаказ.Контрагент;
                    Попытка
                        ОбластьМакета.Параметры.печКлиент = СокрЛП(СтрокаЗаказ.Контрагент)+" ("+СокрЛП(СтрокаЗаказ.РасходнаяНакладная.АдресДоставки)+")";
                    Исключение
                        ОбластьМакета.Параметры.печКлиент = СокрЛП(СтрокаЗаказ.Контрагент);
                    КонецПопытки;
                КонецЕсли;
                

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

            
            УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ТекущийДокумент);
        КонецЦикла;
        
    КонецЕсли;
    
    ТабличныйДокумент.АвтоМасштаб = Истина;
    ТабличныйДокумент.ТолькоПросмотр = Истина;
    
    Возврат ТабличныйДокумент;


Сообщение отредактировал Vofka - 02.06.23, 8:49

alex-l1904 Подменю пользователя
сообщение 01.06.23, 16:15
Сообщение #2

Говорящий
***
Группа: Пользователи
Сообщений: 67
Спасибо сказали: 11 раз
Рейтинг: 11

burza @ Сегодня, 14:21 * ,

таблицю ВТ_Долги переробить,

спочатку отримати залишки для накладних які ПринадлежитМаршруту,
потім отримати залишки для накладних які НЕ ПринадлежитМаршруту і згорнуть,

оці дві тимчасові таблиці об'єднати в ВТ_Долги

burza Подменю пользователя
сообщение 02.06.23, 8:53
Сообщение #3

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

alex-l1904 @ Вчера, 17:15 * ,


а если убрать те что серые и оставить только которые жырним что переписать?)
чтобы не переписывать так сказать запрос. по сути нужно только жирным которые

burza Подменю пользователя
сообщение 02.06.23, 10:55
Сообщение #4

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

alex-l1904 @ Вчера, 17:15 * ,
я не можу згорнути то тип що не ПринадлежитМаршруту там же накладны разные

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    МаршрутныйЛистПродажиЗаказы.Ссылка КАК Ссылка,
    МаршрутныйЛистПродажиЗаказы.РасходнаяНакладная КАК РасходнаяНакладная,
    МаршрутныйЛистПродажиЗаказы.РасходнаяНакладная.Номер КАК НомерРН,
    МаршрутныйЛистПродажиЗаказы.РасходнаяНакладная.Дата КАК ДатаРН,
    МаршрутныйЛистПродажиЗаказы.РасходнаяНакладная.Вес КАК Вес,
    МаршрутныйЛистПродажиЗаказы.РасходнаяНакладная.Объем КАК Объем,
    МаршрутныйЛистПродажиЗаказы.РасходнаяНакладная.Контрагент КАК Контрагент,
    0 КАК СуммаДолга,
    1 КАК ПринадлежитМаршруту,
    МаршрутныйЛистПродажиЗаказы.РасходнаяНакладная.СуммаДокумента КАК СуммаОтгрузки,
    МаршрутныйЛистПродажиЗаказы.Ссылка.ГруппаКлиентов КАК ГруппаКлиентов
ПОМЕСТИТЬ ВТ_Маршрут
ИЗ
    Документ.МаршрутныйЛистПродажи.Заказы КАК МаршрутныйЛистПродажиЗаказы
ГДЕ
    МаршрутныйЛистПродажиЗаказы.Ссылка В(&МассивОбъектов)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Контрагенты.Ссылка КАК Контрагент,
    МаршрутныйЛистПродажи.Ссылка КАК МЛист
ПОМЕСТИТЬ ВТ_КлиентыМЛиста
ИЗ
    Справочник.Контрагенты КАК Контрагенты
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.МаршрутныйЛистПродажи КАК МаршрутныйЛистПродажи
        ПО (МаршрутныйЛистПродажи.ГруппаКлиентов = Контрагенты.Родитель
                ИЛИ МаршрутныйЛистПродажи.ГруппаКлиентов = Контрагенты.Родитель.Родитель
                ИЛИ МаршрутныйЛистПродажи.ГруппаКлиентов = Контрагенты.Родитель.Родитель.Родитель
                ИЛИ МаршрутныйЛистПродажи.ГруппаКлиентов = Контрагенты.Родитель.Родитель.Родитель.Родитель
                ИЛИ МаршрутныйЛистПродажи.ГруппаКлиентов = Контрагенты.Родитель.Родитель.Родитель.Родитель.Родитель)
ГДЕ
    Контрагенты.ЭтоГруппа = ЛОЖЬ
    И МаршрутныйЛистПродажи.Ссылка В(&МассивОбъектов)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    РасчетыСПокупателямиОстатки.Контрагент КАК Контрагент,
    РасчетыСПокупателямиОстатки.Документ КАК Документ,
    МАКСИМУМ(РасчетыСПокупателямиОстатки.СуммаОстаток) КАК СуммаОстаток,
    СУММА(0) КАК Вес,
    СУММА(0) КАК Объем,
    СУММА(0) КАК ПринадлежитМаршруту,
    СУММА(0) КАК СуммаОтгрузки,
    ВТ_КлиентыМЛиста.МЛист КАК Ссылка
ПОМЕСТИТЬ ВТ_Долги
ИЗ
    ВТ_КлиентыМЛиста КАК ВТ_КлиентыМЛиста
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСПокупателями.Остатки(, ) КАК РасчетыСПокупателямиОстатки
        ПО ВТ_КлиентыМЛиста.Контрагент = РасчетыСПокупателямиОстатки.Контрагент

СГРУППИРОВАТЬ ПО
    РасчетыСПокупателямиОстатки.Контрагент,
    РасчетыСПокупателямиОстатки.Документ,
    ВТ_КлиентыМЛиста.МЛист
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Маршрут.Ссылка КАК Ссылка,
    ВТ_Маршрут.РасходнаяНакладная КАК РасходнаяНакладная,
    СУММА(ВТ_Маршрут.Вес) КАК Вес,
    СУММА(ВТ_Маршрут.Объем) КАК Объем,
    ВТ_Маршрут.СуммаДолга КАК СуммаДолга,
    ВТ_Маршрут.Контрагент КАК Контрагент,
    ВТ_Маршрут.ПринадлежитМаршруту КАК ПринадлежитМаршруту,
    ВТ_Маршрут.СуммаОтгрузки КАК СуммаОтгрузки
ПОМЕСТИТЬ ВТ
ИЗ
    ВТ_Маршрут КАК ВТ_Маршрут

СГРУППИРОВАТЬ ПО
    ВТ_Маршрут.Ссылка,
    ВТ_Маршрут.РасходнаяНакладная,
    ВТ_Маршрут.Контрагент,
    ВТ_Маршрут.СуммаДолга,
    ВТ_Маршрут.ПринадлежитМаршруту,
    ВТ_Маршрут.СуммаОтгрузки

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ВТ_Долги.Ссылка,
    ВТ_Долги.Документ,
    ВТ_Долги.Вес,
    ВТ_Долги.Объем,
    ВТ_Долги.СуммаОстаток,
    ВТ_Долги.Контрагент,
    ВТ_Долги.ПринадлежитМаршруту,
    ВТ_Долги.СуммаОтгрузки
ИЗ
    ВТ_Долги КАК ВТ_Долги
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ.Ссылка КАК Ссылка,
    ВТ.Ссылка.Дата КАК ДатаДок,
    ВТ.РасходнаяНакладная КАК РасходнаяНакладная,
    СУММА(ВТ.Вес) КАК Вес,
    СУММА(ВТ.Объем) КАК Объем,
    СУММА(ВТ.СуммаДолга) КАК СуммаКОплате,
    ВТ.Контрагент КАК Контрагент,
    СУММА(ВТ.ПринадлежитМаршруту) КАК ПринадлежитМаршруту,
    СУММА(ВТ.СуммаОтгрузки) КАК СуммаОтгрузки
ПОМЕСТИТЬ ВТ2
ИЗ
    ВТ КАК ВТ
ГДЕ
    ВТ.Контрагент = &Контрагент

СГРУППИРОВАТЬ ПО
    ВТ.Ссылка,
    ВТ.РасходнаяНакладная,
    ВТ.Контрагент,
    ВТ.Ссылка.Дата
;

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

СГРУППИРОВАТЬ ПО
    ВТ2.Ссылка,
    ВТ2.ДатаДок,
    ВТ2.Контрагент,
    ВТ2.ПринадлежитМаршруту

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ВТ2.Ссылка,
    ВТ2.ДатаДок,
    ВТ2.РасходнаяНакладная,
    ВТ2.Вес,
    ВТ2.Объем,
    ВТ2.СуммаКОплате,
    ВТ2.Контрагент,
    ВТ2.ПринадлежитМаршруту,
    ВТ2.СуммаОтгрузки
ИЗ
    ВТ2 КАК ВТ2
ГДЕ
    ВТ2.ПринадлежитМаршруту = &ПринадлежитМаршруту1


andreydv87 Подменю пользователя
сообщение 02.06.23, 10:56
Сообщение #5

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 108
Спасибо сказали: 24 раз
Рейтинг: 22.3

burza @ Вчера, 14:21 * ,
Если СтрокаЗаказ.ПринадлежитМаршруту = 1 Тогда
ОбластьМакета.Область("СтрокаТаблицы").Шрифт = ЖирныйШрифт;
Иначе
ОбластьМакета.Область("СтрокаТаблицы").Шрифт = Обычный;
КонецЕсли;

В этом условии выводите. Для Истина выводите, для Ложь считаете сумму, а потом после цикла выведите итог.

burza Подменю пользователя
сообщение 02.06.23, 11:42
Сообщение #6

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

andreydv87 @ Сегодня, 11:56 * ,
Зробив так как вы говорили. но что-то накладные которые черные не лезут в одного клиента где натупил?)


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

                    ОбластьМакета.Параметры.печКлиент = СтрокаЗаказ.Контрагент;
                    ОбластьМакета.Параметры.НомерНакладной = "Общий долг на:";
                    ОбластьМакета.Параметры.ДатаНакладной = ВыборкаДокументов.ДатаДокумента;
                    ОбластьМакета.Параметры.СуммаКОплате = ДолгКлиента;
                    ТабличныйДокумент.Вывести(ОбластьМакета);
                    НачКлиент = СтрокаЗаказ.Контрагент;
                    
                КонецЕсли;
                
                Если ПерваяСтрока Тогда
                    
                    Если СтрокаЗаказ.ПринадлежитМаршруту = 1 Тогда
                        ОбластьМакета.Область("СтрокаТаблицы").Шрифт = ЖирныйШрифт;
                        ОбластьМакета.Параметры.печКлиент = СтрокаЗаказ.Контрагент;
                    ОбластьМакета.Параметры.НомерНакладной = "Общий долг на:";
                    ОбластьМакета.Параметры.ДатаНакладной = ВыборкаДокументов.ДатаДокумента;
                    ОбластьМакета.Параметры.СуммаКОплате = ДолгКлиента;
                    ТабличныйДокумент.Вывести(ОбластьМакета);
                    НачКлиент = СтрокаЗаказ.Контрагент;  
                    
                    
                        //ПерваяСтрока = ЛОЖЬ;
                
                        Если СтрокаЗаказ.ПринадлежитМаршруту = 1 Тогда
                    ОбластьМакета.Область("СтрокаТаблицы").Шрифт = ЖирныйШрифт;
                        Вес = Вес + СтрокаЗаказ.Вес;
                    Объем = Объем + СтрокаЗаказ.Объем;
                    СуммаОтгрузки = СуммаОтгрузки + СтрокаЗаказ.СуммаОтгрузки;
                    КвоНакладных = КвоНакладных + 1;
                Иначе
            
                    ОбластьМакета.Область("СтрокаТаблицы").Шрифт = Обычный;
                        КонецЕсли;
                ОбластьМакета.Параметры.Заполнить(СтрокаЗаказ);
                ВидДокСтр = списокВидДок.Получить(ТипЗнч(СтрокаЗаказ.РасходнаяНакладная));
                Если ВидДокСтр = Неопределено Тогда
                    ВидДокСтр = "";
                КонецЕсли;
                Попытка
                    ОбластьМакета.Параметры.НомерНакладной = ВидДокСтр+СтрокаЗаказ.РасходнаяНакладная.Номер;
                Исключение
                    ОбластьМакета.Параметры.НомерНакладной = ВидДокСтр+"";
                КонецПопытки;
                Попытка
                    ОбластьМакета.Параметры.ДатаНакладной = СтрокаЗаказ.РасходнаяНакладная.Дата;
                Исключение
                    ОбластьМакета.Параметры.ДатаНакладной = "";
                КонецПопытки;
                ОбластьМакета.Параметры.РасшифровкаНакладная = СтрокаЗаказ.РасходнаяНакладная.Ссылка;
            
                Если НачКлиент = СтрокаЗаказ.Контрагент Тогда
                    ОбластьМакета.Параметры.печКлиент = "";
                Иначе
                    НачКлиент=СтрокаЗаказ.Контрагент;
                    Попытка
                        ОбластьМакета.Параметры.печКлиент = СокрЛП(СтрокаЗаказ.Контрагент)+" ("+СокрЛП(СтрокаЗаказ.РасходнаяНакладная.АдресДоставки)+")";
                    Исключение
                        ОбластьМакета.Параметры.печКлиент = СокрЛП(СтрокаЗаказ.Контрагент);
                    КонецПопытки;
                КонецЕсли;
                
                

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

alex-l1904 Подменю пользователя
сообщение 02.06.23, 12:47
Сообщение #7

Говорящий
***
Группа: Пользователи
Сообщений: 67
Спасибо сказали: 11 раз
Рейтинг: 11

Цитата(burza @ 02.06.23, 11:55) *
&ПринадлежитМаршруту

це що ?
... в таблиці ВТ_Маршрут вже є всі накладні, які належать до маршруту.

для цих накладних треба отримати залишки. А залишки для всіх інших накладних
згорнуть до контрагента.
Потім об'єднати, щоб в таблиці були всі які належать до маршруту
і одна строка з пустою накладною с залишками для всіх інших.

andreydv87 Подменю пользователя
сообщение 03.06.23, 11:14
Сообщение #8

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 108
Спасибо сказали: 24 раз
Рейтинг: 22.3

burza @ Вчера, 12:42 * ,
Под отладчиком посмотрите, Я так думаю у Вас 2 условия срабатывает
"Если НЕ НачКлиент = СтрокаЗаказ.Контрагент И НЕ ПерваяСтрока Тогда"
и
"Если ПерваяСтрока Тогда"

Должно быть или в одном условии или вывод после цикла итогового значения.

Условие по Контрагенту должно быть одно.

Сообщение отредактировал andreydv87 - 03.06.23, 11:15

burza Подменю пользователя
сообщение 07.06.23, 11:01
Сообщение #9

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

andreydv87 @ 03.06.23, 12:14 * ,
да все правильно, было два условия.удалил.все ок

Vofka Подменю пользователя
сообщение 07.06.23, 11:11
Сообщение #10

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

burza, считается хорошим тоном ткнуть палец вверх на сообщениях людей, которые вам помогали по ходу дела.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 23.04.24, 19:43
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!