Имя: Пароль:
1C
1С v8
Вывод на печать нескольких макетов из внешней обработки на УФ
0 DenYuliya
 
12.07.16
11:03
Добрый день.
Подскажите пожалуйста, как можно решить данную задачу, "куда копать"?
Есть внешняя обработка (именно обработка, не печ.форма) на УФ, УТ 11. Запускается как внешняя обработка, к документу не подключается. У нее  есть на форме ТЧ, в которое есть все нужные мне для печати данные.
Надо прикорячить к обработке несколько макетов, чтобы пользователь мог выбрать нужный из них, и напечатать. Данные для заполнения макетов - из ТЧ формы.
С чего начать?))). Я, если честно, ранее с УФ не сталкивалась, в обычных формах все проще.

1) Проц. Печать() лучше из модуля формы вызывать? Или из модуля объекта?
2) Не понятно, что в этом случае передавать в кач-ве параметра процедуры Печать(). Хотелось бы использовать ТЧ формы, как бы его вызвать? Если использовать Объект.Товары - ругается.
3) Как реализовать вызов одного из нескольких макетов на выбор? Сделать кнопку выбора типа макета и по условию вызывать тот, или иной?
1 Горогуля
 
12.07.16
11:06
&НаСервере
Функция СверкаНаСервере(Счёт)
    об=РеквизитФормыВЗначение("Отчет");
    Макет=об.ПолучитьМакет("Сверка");
    Запрос.Текст=ПолучитьТекстЗапроса(Счёт);
    Запрос.УстановитьПараметр("НачПериода", ЭтотОбъект.НачПериода);
    Возврат ТабДокумент;
КонецФункции


&НаКлиенте
Процедура Сверка2201(Команда)
    СверкаНаСервере(2201).Показать();
КонецПроцедуры
2 lodger
 
12.07.16
11:07
смотри как делать тяп ляп:
на форме обработки добавить команду.
команда уходит НаСервер со всей формой.
там происходит:
МакетОтчета = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");

вместо "Макет" подавай любое имя присобаченного к этой обработке макета.

в (1) готовый пример.
3 DenYuliya
 
12.07.16
11:11
(1) Откуда это? Может быть есть какая-то типовая обработка с аналогичным функционалом, я бы там посмотрела на примере.
4 DenYuliya
 
12.07.16
11:11
(1) это в модуле формы все выполняется?
5 DenYuliya
 
12.07.16
11:12
(2) Спасибо, сейчас попробую сделать так
6 Горогуля
 
12.07.16
11:19
(4) ага. я не захотел иметь возможность формировать отчёт без формы
7 Горогуля
 
12.07.16
11:20
можно вместо Показать() выводить в элемент формы. красивше будет
8 DenYuliya
 
12.07.16
11:30
(7) (Счёт) - это имя ТЧ формы?
9 Горогуля
 
12.07.16
11:34
(8) эта штука называется параметр процедуры
10 Горогуля
 
12.07.16
11:36
+(9) ну а как этот параметр отдать тому, кто будет делать результат - дело вкуса. можно на разные команды навешать, как у меня. можно список прикрутить, тумблер, ГСЧ, наконец...
11 DenYuliya
 
12.07.16
11:36
(9) Я знаю))). Что вы в параметр передаете?
12 Горогуля
 
12.07.16
11:36
(11) 2201
13 DenYuliya
 
12.07.16
12:24
А если добавить в реквизиты обработки реквизит "РеквМакет" с типом "Произвольный", а потом обратиться к нему из модуля объекта примерно так:

&НаСервере
Процедура ПечатьМакетаНаСервере()  
Если ЭтотОбъект.ШаблоныМакетовБалткам = "1" Тогда    
РеквизитМакет = ПолучитьМакет("1");
ИначеЕсли ЭтотОбъект.ШаблоныМакетовБалткам = "2" Тогда     
РеквизитМакет = ПолучитьМакет("2");        
ИначеЕсли ЭтотОбъект.ШаблоныМакетовБалткам = "3"  Тогда         
    РеквизитМакет = ПолучитьМакет("3");
14 Горогуля
 
12.07.16
12:25
а теперь покажи разницу меж твои кодом и моим:
РеквизитМакет = ПолучитьМакет(ШаблоныМакетовБалткам)
15 Горогуля
 
12.07.16
12:26
ну а уж имя макета вертишь на форме, как хочешь
16 DenYuliya
 
12.07.16
12:30
(14) вызывать из модуля формы, или объекта.
17 Горогуля
 
12.07.16
12:30
&НаСервере
Процедура ПечатьМакетаНаСервере()
РеквизитМакет = ПолучитьМакет(ШаблоныМакетовБалткам)
18 Горогуля
 
12.07.16
12:33
&НаСервере
Процедура ПечатьМакетаНаСервере()
об=РеквизитФормыВЗначение("Отчет");
Макет=об.ПолучитьМакет(об.ШаблоныМакетовБалткам);
19 DenYuliya
 
12.07.16
12:35
(18) да, вы правы :)
20 DenYuliya
 
12.07.16
12:48
(18) есть в данном случае принципиальная разница, в модуле формы все выполнять, или в модуле объекта? Я больше к модулю формы склоняюсь.
21 Горогуля
 
12.07.16
12:52
(20) модуль объекта бывает полезен при программных вызовах. например, если ты хочешь получить свой отчёт из другого места, то взываешь к своей обработке без открытия формы и получаешь результат. но, судя по уровню твоих вопросов, принципиальной разницы нет
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс