Имя: Пароль:
1C
1С v8
Печатная форма PDF без вывода в интерфейсе 1С.
,
0 Crimscon
 
21.08.19
12:34
Попросили сделать печатную форму, которая привязывается к документу, но при нажатии на кнопку печати она не выводится в интерфейсе 1С, а формируется, сохраняется и открывается в PDF-читалке (хром, эдж, акробат или что будет стоять у человека по умолчанию). В общем-то сформировать я сформировал, вывести тоже смог. Но при этом, если просто формировать, то будет выводиться ошибка, мол "В обработчике печати не сформирован табличный документ". Ни на что не влияет, т.к ВПФ формируется и выводится нормально, но сама ошибка напрягать будет рядового пользователя. Думал передать в обработчик пустой табличный документ, чтоб он его сформировал и потом закрывать эту форму. И тут проблема, я не понял как ее закрывать, я просто до общей формы достучаться не могу.

Может быть есть у кого идеи, как либо убрать ошибку, либо закрывать форму печати, в которой ничего нет? Естественно все в пределах ВПФ, модифицировать команду печати (как одно из предложений, которые успел нагуглить) не вариант.

Процедура печати самая обычная:

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыПечати) Экспорт
    
    Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Договор купли-продажи") Тогда
        ТабличныйДокумент = СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати, ПараметрыПечати);
        
        УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
        КоллекцияПечатныхФорм,
        "Договор купли-продажи",
        НСтр("ru='Договор купли-продажи'"),
        Новый ТабличныйДокумент);    
    
        ЗапуститьПриложение(КаталогВременныхФайлов() + "Договор.PDF");
    КонецЕсли;
    
КонецПроцедуры
1 Вафель
 
21.08.19
12:41
на клиент нужно передать вначале
2 Crimscon
 
21.08.19
12:45
(1) Что передать? Форму?
3 Вафель
 
21.08.19
12:51
двоичные данные файла
4 Crimscon
 
21.08.19
12:54
(3) Зачем? Файл открывается. Все с этим нормально. Тут вопрос как раз в том, чтобы после открытия, форму закрыть и/или убрать ошибку с отсутствием табличного документа в процедуре печати.
5 ам794123
 
21.08.19
12:57
(0) Заверни в попытку
6 Crimscon
 
21.08.19
13:01
(5) ошибка все равно вылезает
7 Вафель
 
21.08.19
13:01
https://its.1c.ru/db/bsp312doc#content:1413:hdoc
Результат = УправлениеПечатью.НапечататьВФайл(КомандыПечати, СписокОбъектов, НастройкиСохранения)
8 Crimscon
 
21.08.19
13:03
(7) пробовал и не совсем понял как ее юзать для ВПФ. В команды печати нужно передать форму, а я ее не знаю.
9 RomanYS
 
21.08.19
13:15
(0) Модификатор = "ПечатьMXL"
Такое есть в описании?
10 Crimscon
 
21.08.19
13:24
(9) есть
11 RomanYS
 
21.08.19
13:33
(10) попробуй убрать
12 Crimscon
 
21.08.19
13:45
(11) "Недостаточно фактических параметров".
13 Crimscon
 
21.08.19
13:52
(11) Так, сорян. Это в обработке тестирования вылет. Убрал, добавил как дополнительную и оно теперь не открывает ее в браузере, а открывает в интерфейсе 1с. Добавляю - ошибка есть, но открывает в браузере.
14 RomanYS
 
21.08.19
14:15
По идее тебе нужно
ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ВызовКлиентскогоМетода")
Тогда будет отрабатывать твоя команда и форма печати открываться не будет.
15 Crimscon
 
21.08.19
14:18
(14) не совсем понял. Вместо вызова серверного модуля вызывать клиентский и больше ничего не менять?
16 Crimscon
 
21.08.19
14:20
(14) а. Переделать ее в допобработку? А как тогда к документу ее прицепить?
17 RomanYS
 
21.08.19
14:21
(15) В описании обработки прописать ВызовКлиентскогоМетода.
Тем более в случае при серверном методе у тебя ЗапуститьПриложение отработает на сервере и при нефайловой базе пользователь твою пдф не увидит.
18 RomanYS
 
21.08.19
14:22
(16) (15) Скачай БСП и посмотри примеры.
19 Crimscon
 
21.08.19
14:25
(17) Это я прописал. Сделал. Добавляю как дополнительную печатную форму. Вылезает ошибка, мол, метод объекта не обнаружен (печать), он лезет в форму, которой нет. Формой то не проблема сделать, тут суть в том, что по сути это должна быть ВПФ.
20 Михаил Козлов
 
21.08.19
14:25
Сформировать табдокумент со строкой: "Документ сформирован".
21 RomanYS
 
21.08.19
14:29
(19) Тебе нужно на клиенте (иначе твоя пдф откроется на сервере и никто ее ни увидит) поэтому форма нужна. Печать() должна быть на клиенте в форме. При этом она останется ВПФ.
22 Crimscon
 
21.08.19
14:47
(21) о, спасибо. Правда заработало)
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.