|
Вывод печатной формы с внешней обработки | ☑ | ||
---|---|---|---|---|
0
A1nurich
04.10.23
✎
15:25
|
Пытаюсь вывести макет на печать, но почему-то процедура печать не запускается и поэтому выводится просто пустая страница. Вот код:
СведенияОВнешнейОбработке() Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = Новый Структура; МассивНазначений = Новый Массив; МассивНазначений.Добавить("Справочники.Партнеры"); //Указываем документ к которому делаем внешнюю печ. форму ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //может быть - ПечатнаяФорма, ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов... ПараметрыРегистрации.Вставить("Назначение", МассивНазначений); ПараметрыРегистрации.Вставить("Наименование", "Договор-Поставки (Внешняя)"); //имя под которым обработка будет зарегестрирована в справочнике внешних обработок ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ); ПараметрыРегистрации.Вставить("Версия", "1.0"); ПараметрыРегистрации.Вставить("Информация", "Изготовлено wpg"); ТаблицаКоманд = ПолучитьТаблицуКоманд(); ДобавитьКоманду(ТаблицаКоманд, "Договор-Поставки (Внешняя)", "ДоговорПоПоставкам", "ОткрытиеФормы", Истина, "ПечатьMXL"); ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд); Возврат ПараметрыРегистрации; КонецФункции ПолучитьТаблицуКоманд() Функция ПолучитьТаблицуКоманд() Команды = Новый ТаблицаЗначений; Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));//как будет выглядеть описание печ.формы для пользователя Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); //имя макета печ.формы Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); //ВызовСерверногоМетода Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево")); Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка")); Возврат Команды; КонецФункции ДобавитьКоманду(...) Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "") НоваяКоманда = ТаблицаКоманд.Добавить(); НоваяКоманда.Представление = Представление; НоваяКоманда.Идентификатор = Идентификатор; НоваяКоманда.Использование = Использование; НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение; НоваяКоманда.Модификатор = Модификатор; КонецПроцедуры Печать() Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, "ДоговорПоПоставкам", "Договор-Поставки (Внешняя)", СформироватьПечатнуюФорму(МассивОбъектов[0], ОбъектыПечати)); КонецПроцедуры // Печать СформироватьПечатнуюФорму() Функция СформироватьПечатнуюФорму(СсылкаНаДокумент, ОбъектыПечати) ТабличныйДокумент = Новый ТабличныйДокумент; ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ДоговорПоПоставкам"; МакетОбработки = ПолучитьМакет("Макет_ДоговорПоставки"); ОбластьШапки = МакетОбработки.ПолучитьОбласть("Шапка"); Сообщить("123"); ОбластьШапки.Вставить("Пункт0_2","-"); ОбластьШапки.Параметры.Пункт0_2 = "-"; ТабличныйДокумент.Вывести(ОбластьШапки); ТабличныйДокумент.АвтоМасштаб = Истина; Возврат ТабличныйДокумент; КонецФункции |
|||
1
Волшебник
04.10.23
✎
15:23
|
Сделайте код поменьше и добейтесь, что он просто вызывается, а потом уже добавляйте плюшки типа
ОбластьШапки.Вставить("Пункт0_2","-"); |
|||
2
A1nurich
04.10.23
✎
15:24
|
(1) Да я вот целый день пытаюсь добиться этого, поэтому уже решился написать в форум :(
|
|||
3
yzimin
04.10.23
✎
15:33
|
Именно процедура печать() не исполняется или всё-таки функция СформироватьПечатнуюФорму?
|
|||
4
yzimin
04.10.23
✎
15:35
|
ДобавитьКоманду(ТаблицаКоманд, "Договор-Поставки (Внешняя)", "ДоговорПоПоставкам", "ОткрытиеФормы", Истина, "ПечатьMXL");
замени ОткрытиеФормы на ВызовСерверногоМетода |
|||
5
A1nurich
04.10.23
✎
15:45
|
(3) я пробовал вставлять в них "Сообщить("123");
Чтобы проверить вызывается ли она или нет |
|||
6
A1nurich
04.10.23
✎
15:46
|
(4) Попробовал, ничего не поменялось
|
|||
7
Гена
04.10.23
✎
15:50
|
(6) а какая конфигурация и релиз?
|
|||
8
A1nurich
04.10.23
✎
15:55
|
(7) 1С:Предприятие 8.3
УТ 11 |
|||
9
Гена
04.10.23
✎
16:02
|
Я просто наткнулся в последних релизах на какие-то изменения в коде именно для внешних отчётов/обработок. Не для моего ума было разобраться, но, например, также перестала работать команда Печать пока не поменяли
КомандаПечати.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы(); на ТипКомандыВызовСерверногоМетода() Вот почему я бы рекомендовал прислушаться к замечанию в (4) |
|||
10
A1nurich
04.10.23
✎
16:05
|
(9) Но другие внешние обработки работают же, там также стоит ОткрытиеФормы
|
|||
11
Garykom
04.10.23
✎
16:11
|
>СформироватьПечатнуюФорму(МассивОбъектов[0], ОбъектыПечати));
"МассивОбъектов[0]" - мдя... |
|||
12
yzimin
04.10.23
✎
16:20
|
(6) с "ОткрытиеФормы" - 100% гарантированное не будет работать.
Делай ещё раз "ВызовСерверногоМетода" и ставь точку остановки в Печать() |
|||
13
A1nurich
04.10.23
✎
16:22
|
(12) а разве во внешней обработке она работает ? Ю_Ю
|
|||
14
СвинТуз
04.10.23
✎
16:27
|
Тут надо либо трусы надеть, либо крестик снять ...
Могу ошибаться. |
|||
15
A1nurich
04.10.23
✎
16:27
|
Нефига, реально сработало. Поставил "МодульДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();" И "ВызовСерверногоМетода". Спасибо большое !!!
|
|||
16
СвинТуз
04.10.23
✎
16:28
|
1. ДобавитьКоманду(ТаблицаКоманд, "Договор-Поставки (Внешняя)", "ДоговорПоПоставкам", "ОткрытиеФормы", Истина, "ПечатьMXL");
"ОткрытиеФормы" 2. Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт Форму то создал? |
|||
17
Гена
04.10.23
✎
16:30
|
(12) А не разбирались, что там такое поменялось в кишочках, что теперь надо вместо открытия формы ставить вызов СМ?
|
|||
18
yzimin
04.10.23
✎
16:30
|
(13) У тебя в конечном итоге исполняется ВнешнийОбъект.Печать, где ВнешнийОбъект это подключенная твоя внешняя обработка
Процедура Печать() находится в модуле объекта обработки, поэтому и нужен вызов серверного метода. |
|||
19
A1nurich
04.10.23
✎
16:32
|
(18) не, я про точку остановки говорил
|
|||
20
yzimin
04.10.23
✎
16:36
|
(17) Лично я ещё с УТ 11.1 всегда писал "ВызовСерверногоМетода". Зачем вообще в команде указывать расположение процедуры Печать() в "ОткрытиеФормы", если по факту она находится у вас в модуле обработки?
|
|||
21
AlexeyKh
04.10.23
✎
16:42
|
для отладки обработок ВПФ, в ней создают свою форму
с реквизитом ДокументСсылка - ноужного типа и кнопкой Печать которая как раз и вызывает процедуру модуля Объект.Печать(...); в таком виде отлично отлаживается. |
|||
22
yzimin
04.10.23
✎
16:42
|
(19) точку остановки можно поставить в общем модуле ДополнительныеОтчетыИОбработки, там уже смотреть
|
|||
23
A1nurich
04.10.23
✎
16:44
|
(22) Хорошо, спасибо
|
|||
24
Гена
04.10.23
✎
17:16
|
(20) ну УТ у меня нет, я заметил изменения в БП 142
Ладно. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |