Имя: Пароль:
1C
 
Из формы через флаг вывести УПД и ТОРГ12 вместе
0 kodblack
 
03.07.23
17:14
Добрый всем! подскажите как реализовать.
Имеется документ Распределение содержит: ЗаказЫ, РеализациИ и СФ-Ы.
Из списка документов печать работает.

Имеется форма с флагами: ТТН, ТН, УПД, ТОРГ12 т.д.
&НаСервере
Функция ПечатьНаСервере() Экспорт         
    МассивНаправлений = Направление.НаправленияСборки.ВыгрузитьКолонку("Направление");
    тзРаспределения = тРаспределения.Выгрузить(Новый Структура("Выбор", Истина),"Распределение");
    МассивРаспределений = тзРаспределения.ВыгрузитьКолонку("Распределение");
    МассивРеализаций = Новый Массив;  
    МассивСФ = Новый Массив;
    
    
    Для Каждого СтрТЧ ИЗ МассивРаспределений Цикл
        Для  Каждого СтрЗаказы ИЗ СтрТЧ.Заказы Цикл
             МассивРеализаций.Добавить(СтрЗаказы.Накладная);
             МассивСФ.Добавить(СтрЗаказы.СчетФактура);
        КонецЦикла;
    КонецЦикла;
    
    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.АвтоМасштаб = Истина;
    ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
    ТабДокумент.ОтображатьЗаголовки = Ложь;
    ТабДокумент.ОтображатьСетку = Ложь;
    ТабДокумент.Защита = Истина;
ПараметрыПечати = Новый Структура ;
     ПараметрыПечати.Вставить("ВыводитьУслуги",Ложь);
        
     ОбъектыПечати = Новый Структура("ЗаголовокФормы");

     Если ПечатьУПД Тогда      
        СтруктураТипов = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивСФ);
    ТабДокУПД =    УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"УПД",НСтр("ru='Универсальный передаточный документ (УПД)'"),
        Обработки.ПечатьОбщихФорм.СформироватьПечатнуюФормуУПД(СтруктураТипов, ОбъектыПечати, ПараметрыПечати));
        
     ТабДокумент.Вывести(ТабДокУПД);
     КонецЕсли;
    
     Если ПечатьТОРГ12 Тогда  
         СтруктураТипов = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивРаспределений);
         ТабДокТОРГ12 = Обработки.ПечатьОбщихФорм.СформироватьПечатнуюФормуТОРГ12(СтруктураТипов, ОбъектыПечати, ПараметрыПечати);
         ТабДокумент.Вывести(ТабДокТОРГ12);
     КонецЕсли;  
         
Возврат  ТабДокумент;
КонецФункции


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

Пытаюсь выловить ошибку, разными способами.


УПД ругается на:
Значение не является значением объектного типа (Свойство)
{Обработка.ПечатьОбщихФорм.МодульМенеджера(2916)}:Если ПараметрыПечати.Свойство("ДополнитьПолученнымиСчетамиФактуры")
{Документ.Распределение.Форма.ФормаПакетнойПечати.Форма(70)}:ТабДокУПД =    Обработки.ПечатьОбщихФорм.СформироватьПечатнуюФормуУПД(СтруктураТипов, ОбъектыПечати, ПараметрыПечати = Неопределено);
{Документ.Распределение.Форма.ФормаПакетнойПечати.Форма(118)}:ТабДок = ПечатьНаСервере();


ТОРГ12 на:
Метод объекта не обнаружен (ПолучитьДанныеДляПечатнойФормыТОРГ12)
{Обработка.ПечатьОбщихФорм.МодульМенеджера(245)}:ДанныеДляПечати = МенеджерОбъекта.ПолучитьДанныеДляПечатнойФормыТОРГ12(ПараметрыПечати, СтруктураОбъектов.Значение);
{Документ.Распределение.Форма.ФормаПакетнойПечати.Форма(79)}:ТабДокТОРГ12 = Обработки.ПечатьОбщихФорм.СформироватьПечатнуюФормуТОРГ12(СтруктураТипов, ОбъектыПечати, ПараметрыПечати);
{Документ.Распределение.Форма.ФормаПакетнойПечати.Форма(118)}:ТабДок = ПечатьНаСервере();
1 kodblack
 
03.07.23
17:24
УПД      Если ПечатьУПД Тогда      
        СтруктураТипов = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивСФ);
        КоллекцияПечатныхФорм = Новый Массив;
    ТабДокУПД =    УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"УПД",НСтр("ru='Универсальный передаточный документ (УПД)'"),
        Обработки.ПечатьОбщихФорм.СформироватьПечатнуюФормуУПД(СтруктураТипов, ОбъектыПечати, ПараметрыПечати));
        
     ТабДокумент.Вывести(ТабДокУПД);
     КонецЕсли;


Ошибка:
Метод объекта не обнаружен (НайтиПоЗначению)
{ОбщийМодуль.УправлениеПечатью.Модуль(173)}:Элемент = ОбъектыПечати.НайтиПоЗначению(Ссылка);
{ИзмененияФорм Обработка.ПечатьОбщихФорм.МодульМенеджера(560)}:УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати,
{Обработка.ПечатьОбщихФорм.МодульМенеджера(3021)}:ЗаполнитьТабличныйДокументУПД(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати);
{Документ.Распределение.Форма.ФормаПакетнойПечати.Форма(69)}:ТабДокУПД =    УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"УПД",НСтр("ru='Универсальный передаточный документ (УПД)'"),
{Документ.Распределение.Форма.ФормаПакетнойПечати.Форма(113)}:ТабДок = ПечатьНаСервере();
2 kodblack
 
03.07.23
17:26
Элемент = ОбъектыПечати.НайтиПоЗначению(Ссылка);

в отладчике - попадает СФ выданая №№№№ 01.02.2023, но дальше падает Метод объекта не обнаружен (НайтиПоЗначению)

я дак понимаю какого то параметра не хватает (((
3 Мимохожий Однако
 
04.07.23
09:03
Какая конфигурация? Открой покровы. Возможно, велосипед с ходулями не нужен.
В УТ11 есть пакетная печать . По кнопке Печать "Комплект документов ..."
4 kodblack
 
04.07.23
09:06
(3) УТ 11.5
5 kodblack
 
04.07.23
09:09
(3) в Форме - попадают очень много документов распределения: где в каждом распределении есть: МНОГО! Заказов, Реа-ции, СФ-ы.
по мимо УПД, ТОРГ12, еще печатаются, ТН, ТТН, маршрутные листы и много чего еще. все работает, кроме стандартного механизма УПД и ТОРГ12
6 Мимохожий Однако
 
04.07.23
09:11
(5) В форме есть как минимум три вида настроек для печати. Если уж колхозить, то добавить возможность сохранения или выбора дополнительной настройки.
Например, сталкивался с задачей, когда надо печатать комплекты документов на разные принтеры.
7 kodblack
 
04.07.23
09:14
(6) как в моем случае реализовать УПД и ТОРГ12, подскажите.
8 Мимохожий Однако
 
04.07.23
09:21
Расскажи подробнее про документ Распределение.) Он типовой ещё?
9 kodblack
 
04.07.23
09:24
(8) нет. самописный. необходим для создания маршрутов по доставке.

https://disk.yandex.ru/i/phsXIYMU6oJFEg
10 kodblack
 
04.07.23
09:30
пакетная печать

https://disk.yandex.ru/i/GhU0ACj5WFVRgQ
11 Мимохожий Однако
 
04.07.23
09:39
(9) Мои советы вряд ли помогут. Вместо я бы использовал обработку и регистр сведений, чтобы не ломать и использовать типовые настройки. У тебя уже пошёл процесс другим путём.
PS. Сколько программистов, столько и вариантов реализации.
12 kodblack
 
04.07.23
09:47
(11) согласен. Но у меня уже построен такой процесс.

при чем: Элемент = ОбъектыПечати.НайтиПоЗначению(Ссылка); в отладчике, при печати из списка документа, так же в ссылку попадает СФ выданная №123 01.01.2023, но проходит дальше:
    Элемент = ОбъектыПечати.НайтиПоЗначению(Ссылка);
    Если Элемент = Неопределено Тогда
        ИмяОбласти = "Документ_" + Формат(ОбъектыПечати.Количество() + 1, "ЧН=; ЧГ=");
        ОбъектыПечати.Добавить(Ссылка, ИмяОбласти);
    Иначе
        ИмяОбласти = Элемент.Представление;
    КонецЕсли;



а при печати из формы печати, падает:
Метод объекта не обнаружен (НайтиПоЗначению)
{ОбщийМодуль.УправлениеПечатью.Модуль(173)}:Элемент = ОбъектыПечати.НайтиПоЗначению(Ссылка);
{ИзмененияФорм Обработка.ПечатьОбщихФорм.МодульМенеджера(560)}:УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати,
{Обработка.ПечатьОбщихФорм.МодульМенеджера(3021)}:ЗаполнитьТабличныйДокументУПД(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати);
13 Мимохожий Однако
 
04.07.23
10:35
Поставь точку останови и проверь какой тип значения и заполнения. А дальше как обычно- долго думать)
14 kodblack
 
04.07.23
10:38
(13) ОбъектыПечати по сути не заполнены, а как их передать .....
15 kodblack
 
04.07.23
15:30
решено: ОбъектыПечати = Новый СписокЗначений;