Версия для печати темы (http://pro1c.org.ua/index.php?s=b2641a7b22c9158f90007fc426b368d6&showtopic=49221)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Вывод табличного документа на печать через стандартную общую форму печати. БУ 2

Автор: Insider12 03.12.18, 9:36

Здравствуйте, Конфигурация "Бухгалтерия для Украины, редакция 2.0. (2.0.12.1) ", Плафторма "8.3.10.2561"

Нужно из внешней обработки вывести на печать сформированный табличный документ.
Не ТабДокумент.Показать(), а в общую форму "ПечатьДокументов"
КАК это сделать? Чего не пробовал, все нереально запутано в этих управляемых формах для выполнения такого рода задачи!!)
Уже несколько часов не могу это сделать.

Автор: Petre 03.12.18, 10:39

Insider12 @ Today, 9:36 * ,
Внешняя обработка написана по стандарту дополнительной обработки типа "печать"?

Автор: Insider12 03.12.18, 10:57

Petre @ Сегодня, 10:39 * ,
Да, просто это ТТН и я сначала вывожу форму (форму обработки ТТН для заполнения пользователем некоторых реквизитов перед печатью), а потом оттуда формирую табдокумент и, как я понимаю, в таком случае выводом этого табдокумента на экран тоже я должен заниматься

Insider12 @ Сегодня, 10:43 * ,
В принципе неважно то, что именно я делаю. Вопрос, который меня интересует это: "Как свой табдокумент выводить на печать в "красивом" виде"

Автор: sava1 03.12.18, 11:12

Цитата(Insider12 @ 03.12.18, 9:36) *
все нереально запутано в этих управляемых формах


тут еще БСП подключилось.

в форме заполняем реквизиты для передачи в модуль объекта (потому что БСП создает копию обработки), в модуле объекта - Печать по описанию БСП (Вывести в коллекцию... отправляет табличный документ в Форму).

Цитата(Insider12 @ 03.12.18, 10:57) *
это: "Как свой табдокумент выводить на печать в "красивом" виде"


нарисуйте на форме ПолеТабличного документа и заполняйте.

Автор: Insider12 03.12.18, 11:23

sava1 @ Сегодня, 11:12 * ,
"Вывести в коллекцию" - ничего не происходит
Вот так вот делаю:

УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ТТН", НСтр("ru='Товарно-транспортная накладная (1-ТН)';uk='Товарно-транспортна накладна (1-ТН)'"), 
        ТабДокумент,,"ВнешняяОбработка.ТТН_из_ПередачаТоваров_БУ2.ПФ_MXL_ТТН", ИмяФайлаПечатнойФормы);



Автор: sava1 03.12.18, 11:28

Что по этому можно понять?
Я Вам таких хреней накопирую сотню.
1. Табличный документ формируется ?
2. Идентификатор обработки совпадает ?

для начала попробуйте просто вывести ПУСТОЙ макет ТТН.

потом можно разговаривать дальше.

а вот это

Цитата(Insider12 @ 03.12.18, 11:23) *
"ВнешняяОбработка.ТТН_из_ПередачаТоваров_БУ2.ПФ_MXL_ТТН"


не прокатит. БСП с внешними обработками работает иначе.

Автор: Insider12 03.12.18, 11:40

Цитата(sava1 @ 03.12.18, 11:28) *
для начала попробуйте просто вывести ПУСТОЙ макет ТТН.

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

Автор: sava1 03.12.18, 11:44

Цитата(Insider12 @ 03.12.18, 11:23) *
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ТТН", НСтр("ru='Товарно-транспортная накладная (1-ТН)';uk='Товарно-транспортна накладна (1-ТН)'"), ТабДокумент,


вот это последнее и есть Ваш сформированный ТабличныйДокумент. - т.е. до этого момента он уже должен быть сформирован.
Если он Не пустой - откроется форма ПечатьДокументов, где и будет Ваш ТабДокумент

Автор: Petre 03.12.18, 11:45

В той версии БСП, что "сидит" в БПУ 2.0, "прямой" такой возможности нет.
Но есть изврат.

Автор: Insider12 03.12.18, 11:48

Цитата(sava1 @ 03.12.18, 11:44) *
Если он Не пустой - откроется форма ПечатьДокументов, где и будет Ваш ТабДокумент

Он не пустой, если его выводить через ТабДокумент.Показать(), то он выводится, очень даже заполенный.

Цитата(Petre @ 03.12.18, 11:45) *
Но есть изврат.

О, какой изврат, меня все устраиваетт?)

Автор: Petre 03.12.18, 14:37

Insider12 @ Today, 11:48 * ,
1. В программном интерфейсе добавляем команду типа "ОткрытиеФормы".
2. Рисуем форму с нужными полями ввода данных. В ПриСозданииНаСервере обязательно считываем и записываем в реквизиты формы параметры "ДополнительнаяОбработкаСсылка", "ИдентификаторКоманды" и "ОбъектыНазначения".
3. Пользователь вводит данные и жмет кнопку печати.
4. В обработчике кнопки печати пишем:

    ПараметрыОткрытия = Новый Структура("ИсточникДанных, ПараметрыИсточника");
    ПараметрыОткрытия.ПараметрыИсточника = Новый Структура("ИдентификаторКоманды, ОбъектыНазначения");
    ПараметрыОткрытия.ИсточникДанных = Параметр_ДополнительнаяОбработкаСсылка;
    ПараметрыОткрытия.ПараметрыИсточника.ИдентификаторКоманды = Параметр_ИдентификаторКоманды;
    ПараметрыОткрытия.ПараметрыИсточника.ОбъектыНазначения = Параметр_ОбъектыНазначения;
    
    ДопПараметры = Новый Структура;
    //* заполняем введенными пользователем данными
    //...
    
    ПараметрыОткрытия.ПараметрыИсточника.ОбъектыНазначения.Добавить(ДопПараметры, "Доп. параметры");
    ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);
    ЭтаФорма.Закрыть();

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


Т. е. в форме пользователь только вводит данные. Эти данные передаются таким хитрым способом в модуль объекта внешней обработки.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
http://pro1c.org.ua