Номенклатура по документу

1. Geophysic 03.03.23 13:42 Сейчас в теме
Здравствуйте, мне нужно чтобы каждый товар печатался отдельно по документу, то есть если один документ прикреплен к нескольким товарам номенклатуры значит печатаются все товары в один документ и далее печатается следующий документ. Сейчас же у меня все товары прут в одну печать, подскажите что не так сделал?

//Модуль менеджера
Функция ТекстНоменклатура(Номенклатура)

ТЗ = Новый ТаблицаЗначений;

ТЗ.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура")); 

ТЗНоменклатура = Номенклатура.Выгрузить();

ТекстНоменклатура = "";
Для Каждого Стр Из ТЗНоменклатура Цикл
    ТекстНоменклатура = ТекстНоменклатура +?(ТекстНоменклатура  = "", Стр.Номенклатура.Наименование, ", " + Стр.Номенклатура.Наименование);
КонецЦикла;

Возврат ТекстНоменклатура;

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


// Далее заполнил область
ОбластьЛицевая.Параметры.Пункт3_1 = ТекстНоменклатура(Номенклатура);


// В модуле формы
Функция ПечатьНовойТранспортнойНакладнойНаСервере(ТекущийДокумент, Элемент)
    
    Возврат Документы.Рейс.Сформировать_ПФ_MXL_НоваяТранспортнаяНакладная(ТекущийДокумент, Элемент);
    
КонецФункции

&НаКлиенте
Процедура ПечатьНовойТранспортнойНакладной(Команда)
    
    ТекДок = Объект.Ссылка;
    МассивСсылок = ПолучитьМассивРеализаций(ТекДок);
    Если МассивСсылок <> Неопределено Тогда
        Для каждого Реализация из МассивСсылок Цикл
            ТабличныйДокумент = ПечатьНовойТранспортнойНакладнойНаСервере(ТекДок, Реализация);
            Если ТабличныйДокумент <> Неопределено Тогда
                ДлинаЗаголовка = СтрДлина(Строка(Реализация)) - 8;
                ТабличныйДокумент.Показать("Транспортная накладная по: " + Лев(Строка(Реализация), ДлинаЗаголовка));
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
        
КонецПроцедуры


&НаСервере
Функция ПолучитьМассивРеализаций(ТекДок)
    
    МассивРеализаций = Новый Массив;
    // Группируем по реализациям, чтобы на РАЗНЫЕ реализации создавалось по одной транспортной накладной
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    РейсЗаказы.Документ КАК Документ,
        |    РейсЗаказы.Документ.Проведен КАК ДокументПроведен
        |ИЗ
        |    Документ.Рейс.Заказы КАК РейсЗаказы
        |ГДЕ
        |    РейсЗаказы.Ссылка = &Ссылка
        |
        |СГРУППИРОВАТЬ ПО
        |    РейсЗаказы.Документ,
        |    РейсЗаказы.Документ.Проведен
        |АВТОУПОРЯДОЧИВАНИЕ";
    Запрос.УстановитьПараметр("Ссылка", ТекДок);
    Результат = Запрос.Выполнить();
    Если НЕ Результат.Пустой() Тогда
        Выборка = Результат.Выбрать();
        Пока Выборка.Следующий() Цикл
            Если ТипЗнч(Выборка.Документ) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
                Если НЕ Выборка.ДокументПроведен Тогда     
                    Сообщение = Новый СообщениеПользователю;
                    Сообщение.Текст = СтрШаблон("%1 не проведена. Транспортная накладная не сформирована.", Выборка.Документ);
                    Сообщение.Сообщить();
                Иначе
                    МассивРеализаций.Добавить(Выборка.Документ);
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;
        Возврат МассивРеализаций;
    КонецЕсли;
    
КонецФункции
Показать
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. YozZzhik 03.03.23 14:24 Сейчас в теме
Если я правильно понял, то вам нужно использовать итоги по полю документ в запросе или следующий по значению поля документ в коде, и горизонтальный разделитель в цикле снизу вставить. Тогда все будет падать не в "одну печать", а в "разную печать")) В разные листы
3. пользователь 03.03.23 14:42
Сообщение было скрыто модератором.
...
4. Geophysic 03.03.23 14:44 Сейчас в теме
Оставьте свое сообщение

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