|
|
|
Вывод печатной формы с внешней обработки | ☑ | ||
|---|---|---|---|---|
|
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
Ладно. |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |