Имя: Пароль:
1C
1С v8
Программный доступ к печатной форме документа
,
0 Knopppka
 
03.07.13
12:44
Добрый день.
Возник следующий вопрос. Необходимо при нажатии кнопки на форме задачи выводить на экран печатную форму документа. Каким образом можно получить доступ к ней?
Пробовала достучаться через элементы формы документа, но не нашла соответствующего элемента. Источник заполнения командной панели - Глобальные команды командной панели формы.
Буду благодарна любой помощи!
1 vicof
 
03.07.13
12:45
Ну ты же табличный документ заполняешь?
2 vicof
 
03.07.13
12:45
какой еще доступ нужен?
3 vicof
 
03.07.13
12:45
и главное, зачем?
4 skunk
 
03.07.13
12:47
(3)что-то мне подсказывает ... тс нужно в какой-то своей обработке выводить печатные формы любых документов ...
5 Рэйв
 
03.07.13
12:51
(0) Скорее всего как то так:

МойДок.ИмяПроцедураПечатиВМодулеДокумента()
6 sikuda
 
03.07.13
12:51
(0) Соблюдая традиции форума дата регистрации 30 мая 2013; и без фотографии...
7 Рэйв
 
03.07.13
12:52
(6)Вот жешь блин..Не посмотрел:-)
8 Knopppka
 
03.07.13
12:53
(3) Реквизитом задачи является конкретный документ. На форму задачи нужно добавить кнопку печати этого документа, чтобы предварительно не переходить в его форму.

Я просто не пойму, как это реализовать. Нужно вызывать каким-то образом процедуру Печать из модуля менеджера? Или получать доступ к соответствующей команде формы документа?

(6) Не знала о такой традиции)
9 5 Элемент
 
03.07.13
12:53
Форма обычная или управляемая?
10 Knopppka
 
03.07.13
12:54
(9) Управляемая
11 skunk
 
03.07.13
12:54
(8)если процедура печати документа находиться в модуле и является экспортной то что-то типа (5)
12 5 Элемент
 
03.07.13
12:55
Печатная форма уже выводится?
Или ты хочешь сделать свою печ форму?
13 Knopppka
 
03.07.13
13:00
(5) (11) Сейчас попробую. Спасибо!
(12) Уже выводится
14 Knopppka
 
03.07.13
13:31
Все получилось. Спасибо за помощь!
15 Knopppka
 
03.07.13
13:41
Еще вопрос. Для вызова процедуры печати используется такая команда:

Документы.ЗаявкаНаЗакупку.Печать(ТабДок, ПараметрКоманды);

В качестве параметра передается ссылка на документ.

Проблема в том, что документ заранее не определен. Можно ли каким-то образом указывать не в явном виде "ЗаявкаНаЗакупку", а подставлять туда строку с названием, например?
16 skunk
 
03.07.13
13:44
в смысле .... как он может быть заранее не определен?

зы:по существу вопроса ... нет нельзя
17 Антон Мак
 
03.07.13
13:45
(15)Если очень нужно печатать ещё не сохраненный документ - можно передавать объект...
18 User_Agronom
 
03.07.13
13:46
(8) Функция Печать() экспорт
Поэтому вызывать можно.
Формируешь табличный документ этой функцией.
А потом
ТабДок.Показать();
19 Knopppka
 
03.07.13
13:50
(17) Документ сохранен, все нормально. Есть ссылка на него.

(18) Я так и делаю

&НаСервере
Процедура ПечатьСервер(ТабДок, ПараметрКоманды)
   Документы.ЗаявкаНаЗакупку.Печать(ТабДок, ПараметрКоманды);
КонецПроцедуры

&НаКлиенте
Процедура Печать(Команда)        
   ТабДок = Новый ТабличныйДокумент;
   ПараметрКоманды = Новый Массив;
   ПараметрКоманды.Добавить(ЗадачаОбъект.ДокументНаСогласование);
   ПечатьСервер(ТабДок, ПараметрКоманды);
   ТабДок.Показать();
КонецПроцедуры

(16) Может быть 10 разных документов - заявки, акты и т.д.
Тогда получается, что надо явно писать каждый раз:

Документы.Заявка.Печать(ТабДок, ПараметрКоманды);
Документы.Акт.Печать(ТабДок, ПараметрКоманды);
Документы.Накладная.Печать(ТабДок, ПараметрКоманды);

В общем, вариантов нет, как я поняла, да?
20 User_Agronom
 
03.07.13
13:54
Наверное нет. Все разные же функции Печать() и вызываются из разных модулей
21 Knopppka
 
03.07.13
13:57
(20) Ну да. Понятно.
Печально конечно, но все равно спасибо
22 George Wheels
 
03.07.13
13:57
Выполнить("Документы." + НазваниеДокумента + ".Печать(ТабДок, ПараметрКоманды)"
23 Knopppka
 
03.07.13
14:01
(22) То что нужно! Теперь буду знать. Спасибо огромное!
24 Галахад
 
гуру
03.07.13
14:05
Можно попробовать так:

Документы[ПараметрКоманды.Метаданные().Имя].Печать(ТабДок, ПараметрКоманды);
25 skunk
 
03.07.13
14:09
(22)а зачем через выполнить такое делать?

Документы[НазваниеДокумента].Печать();
26 George Wheels
 
03.07.13
14:30
(25) Для разнообразия
2 + 2 = 3.9999999999999999999999999999999...