Создание печатной формы в конфигураторе (УФ)
Разрабатываю нетиповую конфигурацию 1С:8.3 (управляемые формы). В объекте Обработки у меня МояОбработка с формой и реквизитом тзЖурнал. В обработке создал МакетПечати. Не очень понимаю, что нужно сделать, чтобы при нажатии на строку тзЖурнал появлялась форма с возможностью печати макета.
Подскажите, пожалуйста, что требуется написать в foo_Печать(), чтобы открывался МакетПечати?
Пока только в модуле формы тестовый вариант:
Подскажите, пожалуйста, что требуется написать в foo_Печать(), чтобы открывался МакетПечати?
Пока только в модуле формы тестовый вариант:
&НаКлиенте
Функция foo_Печать() экспорт
ТабДок = Новый ТабличныйДокумент;
ТабДок.Показать();
КонецФункции
&НаКлиенте
Процедура тзЖурналВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
foo_Печать();
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Продвинутая технология внешних печатных форм
- Шаблон внешней печатной формы в управляемом приложении. Пример создания печатной формы.
- Параметризация печатных форм под контрагентов (подключаемое расширение)
- Отладка внешней печатной формы в управляемом приложении без создания формы, расширения или редактирования общего модуля
- Infostart PrintWizard - создание и редактирование печатных форм в 1С 8.3
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Получаете макет через ПолучитьМакет(<ИмяМакета>). Получаете области макета через ПолучитьОбласть(<ИмяОбласти>). Заполняете параметры областей, если нужно. Выводите области в табличный документ через Вывести(ОбластьМакета).
По любому методу можно вызвать справку, где будут приведены конкретные примеры.
По любому методу можно вызвать справку, где будут приведены конкретные примеры.
(2) Сделал так:
В клиенте выдается окно с ошибкой: Метод объекта не обнаружен (ПолучитьМакет)
&НаКлиенте
Функция foo_ПечатьПоручения() экспорт
ТабДок = Новый ТабличныйДокумент;
//ТабДок.Показать();
Макет = ЭтотОбъект.ПолучитьМакет("МакетПечать");
Область = Макет.ПолучитьОбласть("ОбластьДанных");
ТабДок.Вывести(Область);
КонецФункции
ПоказатьВ клиенте выдается окно с ошибкой: Метод объекта не обнаружен (ПолучитьМакет)
Макет можно получить только на сервере. На выбор, контекстный вызов:
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
Макет = ОбработкаОбъект.ПолучитьМакет("МакетПечать");
или без контекста формы:
ОбработкаОбъект = Новый("ВнешняяОбработкаОбъект.МояВнешняяОбработка");
Макет = ОбработкаОбъект.ПолучитьМакет("МакетПечать");
Дальше, если уж так хочется рисовать ТабДок на клиенте, передавайте Макет на клиент.
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
Макет = ОбработкаОбъект.ПолучитьМакет("МакетПечать");
или без контекста формы:
ОбработкаОбъект = Новый("ВнешняяОбработкаОбъект.МояВнешняяОбработка");
Макет = ОбработкаОбъект.ПолучитьМакет("МакетПечать");
Дальше, если уж так хочется рисовать ТабДок на клиенте, передавайте Макет на клиент.
(4) Я так и сделал, но все равно есть ошибки.
В клиенте ошибка: Ошибка при установке значения атрибута контекста (Объект)
&НаСервере
Функция ПолучитьМакетНаСервере()
Объект = РеквизитФормыВЗначение("Объект");
Макет = Объект.ПолучитьМакет("МакетПоручениеБиржа");
Возврат Макет;
КонецФункции
&НаКлиенте
Функция foo_ПечатьПоручения() экспорт
ТабДок = Новый ТабличныйДокумент;
//ТабДок.Показать();
Макет = ПолучитьМакетНаСервере();
Область = Макет.ПолучитьОбласть("ОбластьДанных");
ТабДок.Вывести(Область);
КонецФункции
ПоказатьВ клиенте ошибка: Ошибка при установке значения атрибута контекста (Объект)
(12)
Я говорил про клиент. С Вашей строкой на сервере все равно клиент выдает ошибку. Другая, но ошибка. Я что-то не понимаю, что и где (сервер, клиент) нужно писать.
Аргументируете?
Я говорил про клиент. С Вашей строкой на сервере все равно клиент выдает ошибку. Другая, но ошибка. Я что-то не понимаю, что и где (сервер, клиент) нужно писать.
&НаСервере
Функция ПолучитьМакетНаСервере()
//Объект = РеквизитФормыВЗначение("Объект");
//Макет = Объект.ПолучитьМакет("МакетПоручениеБиржа");
Макет = Обработки.Подключение1сФЦ.ПолучитьМакет("МакетПоручениеБиржа");
Возврат Макет;
КонецФункции
&НаКлиенте
Функция foo_ПечатьПоручения() экспорт
ТабДок = Новый ТабличныйДокумент;
//ТабДок.Показать();
Макет = ПолучитьМакетНаСервере();
Область = Макет.ПолучитьОбласть("ОбластьДанных");
ТабДок.Вывести(Область);
КонецФункции
&НаКлиенте
Процедура тзЖурналВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
foo_ПечатьПоручения();
КонецПроцедуры
ПоказатьОшибка при вызове метода контекста (ПолучитьОбласть)
Область = Макет.ПолучитьОбласть("ОбластьДанных");
по причине:
Метод недоступен на тонком клиенте
к чем такие сложности?
разве что само формирование вынести в модуль обработки
но можно и в модуле формы все сделать
разве что само формирование вынести в модуль обработки
но можно и в модуле формы все сделать
&НаКлиенте
Процедура тзЖурналВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
foo_ПечатьПоручения();
КонецПроцедуры
&НаКлиенте
Функция foo_ПечатьПоручения() экспорт
ТаблДокумент = foo_ПечатьПорученияНаСервере();
Если ТаблДокумент <> Неопределено Тогда
ТаблДокумент.ОтображатьСетку = Ложь;
ТаблДокумент.ОтображатьЗаголовки = Ложь;
ТаблДокумент.ТолькоПросмотр = Истина;
ТаблДокумент.АвтоМасштаб = Истина;
ТаблДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ТаблДокумент.Показать();
КонецЕсли;
КонецФункции
&НаСервере
Функция foo_ПечатьПорученияНаСервере()
естьДанныеПечати = Ложь;
ОбъектОбработки = РеквизитФормыВЗначение("Объект");
МакетПечати = ОбъектОбработки.ПолучитьМакет(<ИмяМакета>);
ТаблДокумент = Новый ТабличныйДокумент;
ОбластьДанных = МакетПечати.ПолучитьОбласть("ОбластьДанных");
ОбластьШапка.Параметры.<ИмяПараметра>= <Заполнение занчения параметра>;
ТаблДокумент.Вывести(ОбластьДанные);
естьДанныеПечати = Истина;
Возврат ?(естьДанныеПечати, ТаблДокумент, Неопределено);
КонецФункции
Показать
(15) признак, чтобы не выводить на экран пустой табличный документ, если в нем ничего не оказалось
вообще у вас по условию еще надо в серверную процедуру передавать структуру заполнения параметров, которую формировать по данным "ВыбраннаяСтрока" из Процедура тзЖурналВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ну или как-то по другому параметры областей макета заполнять
вообще у вас по условию еще надо в серверную процедуру передавать структуру заполнения параметров, которую формировать по данным "ВыбраннаяСтрока" из Процедура тзЖурналВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ну или как-то по другому параметры областей макета заполнять
Я что-то так и не могу понять, что именно нужно сделать. Допустим у меня есть пустой макет (шаблон таблицы без параметров) в МоейОбработке. Я хочу вывести её на экран, пока что без заполнения значений параметров.
Может кто-нибудь пошагово объяснить, что мне для этого нужно сделать на клиенте и на сервере или дайте ссылку, пожалуйста, где об этом рассказывается подробно (в интернете есть видео с примером для внешней обработки и использованием функции , но это в моем случае не подходит, так как у меня не внешняя обработка).
Может кто-нибудь пошагово объяснить, что мне для этого нужно сделать на клиенте и на сервере или дайте ссылку, пожалуйста, где об этом рассказывается подробно (в интернете есть видео с примером для внешней обработки и использованием функции
СведенияОВнешнейОбработке()
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот