|
Печать из внешней обработки | ☑ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0
Tornadius
01.11.13
✎
11:54
|
Уважаемые форумчане. Прошу помощи в организации печати из внешней обработки, не путать с внешней печатной формой. Клиент-серверная платформа, конфа КОРП. Задача. есть внешняя обработка которая собирает проводки в документ "Операция БУиНУ" и при этом необходимо отбракованные проводки собирать в табличный документ и его потом вывести на печать (типа протокол ошибок). собрать и отбраковать получается. не получается создать список ошибочных и его вывод на печать. особенно организация самого вывода. Конфу менять нельзя. Думаю многих заинтересует организация печати из внешних форм на клиент-серверной платформе.
|
||||||||||||||||
1
Maxus43
01.11.13
✎
11:56
|
Ничо не понял, у меня целый батальён в конфе внешних обработок-печ форм-отчетов, делай чего хочешь с ними
В чем проблема? |
||||||||||||||||
2
Azverin
01.11.13
✎
11:59
|
(1) присоединяюсь.
|
||||||||||||||||
3
Maxus43
01.11.13
✎
12:01
|
(0) печатать можно не только из внешних печ форм, это можно делать откудо угодно, внешние обработки-отчеты в т.ч.
|
||||||||||||||||
4
Любопытная
01.11.13
✎
12:01
|
(0)В чем проблема? Не знаешь как макет создать и заполнить?
В чем проблема? |
||||||||||||||||
5
Галахад
гуру
01.11.13
✎
12:01
|
(1), (2) Эх вы. Вот так надо: "ТС у тебя сложная и важная проблема. Ее срочно надо обсудить на высочайшем уровне!"
|
||||||||||||||||
6
Maxus43
01.11.13
✎
12:03
|
(5) Уважаемый Б. Нуралиев вылетел к вам на вертолёте чтобы как можно быстрее обсудить варианты решения проблемы и выпустить специальный внеочередной релиз платформы
|
||||||||||||||||
7
Tornadius
01.11.13
✎
12:05
|
проблема в том что отчет создается внутри внешней обработки. Постоянно вылазит сообщение {Форма.Форма.Форма(3,14)}: Процедура или функция с указанным именем не определена (Печать)
ТабДок = <<?>>Печать(); (Проверка: Сервер) мне не нужно печатать документы из конфы. мне нужно печатать свой макет который содержится во внешней обработке и заполняется там же. Может кто даст пример обработки? Нужная вещь |
||||||||||||||||
8
Tornadius
01.11.13
✎
12:07
|
В интернете везде примеры с реквизитом "Ссылка на объект" куда потом передается ссылка на документ. Но мне это не подходит. тем более формирование все идет на сервере а выводить надо на клиенте
|
||||||||||||||||
9
Галахад
гуру
01.11.13
✎
12:09
|
(6) Вот спасибо!
(7) Ну, так Б.Н. уже вылетел. Ты, главное не жалей, пропесочь его хорошенько! |
||||||||||||||||
10
User_Agronom
01.11.13
✎
12:10
|
Ничего не понял.
В чем проблема? |
||||||||||||||||
11
Гефест
01.11.13
✎
12:13
|
(7) А ты написал процедуру Печать()? Или 1с должна сама ее сочинить для тебя?
|
||||||||||||||||
12
Tornadius
01.11.13
✎
12:15
|
Бросте плиз код. в модуле объекта и модуле формы. с указанием где выполняться на сервере или на клиенте.
|
||||||||||||||||
13
Tornadius
01.11.13
✎
12:17
|
Мне же нужно чтобы после того как отстреляется процедура &НаСервере она же и запустила печать. или хотябы вывела на экран табличный документ откуда его потом можно напечатать
|
||||||||||||||||
14
Tornadius
01.11.13
✎
12:19
|
Это модуль объекта:
&НаСервере // Это модуль объекта внешней формы Функция Печать() Экспорт ПараметрыПечати = ПолучитьПараметрыПечатиОтчетаОшибок(); ТабДокумент = СоздатьТабличныйДокументПечатиСчета( ПараметрыПечати ); Возврат ТабДокумент; КонецФункции // Печать &НаСервере Функция ПолучитьПараметрыПечатиОтчетаОшибок() Экспорт ПараметрыПечати = Новый Структура; // Внутри функции ПолучитьПараметрыПечати() формируем нужные запросы к БД, // заполняем структуру параметров печати ПараметрыПечати.Вставить("Организация",ЭтотОбъект.параметры.ОрганизацияОбр); Возврат ПараметрыПечати; КонецФункции //ПолучитьПараметрыПечатиСчета() &НаСервере Функция СоздатьТабличныйДокументПечатиСчета(ПараметрыПечати) // Создаем новый табличный документ ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СомнительныеПроводки"; // Получаем макет. Если не применять "ЭтотОбъект", а в конфигурации будет макет с таким же именем // описанный в "Общие" - "Общие макеты", то будет получен макет основной конфигурации Макет = ПолучитьМакет("СомнительныеПроводки"); // Выводим шапку счета ОбластьМакета = Макет.ПолучитьОбласть("Шапка"); ОбластьМакета.Параметры.Заполнить(ПараметрыПечати); ТабДокумент.Вывести(ОбластьМакета); // Выводим шапку операции документа ОбластьМакета = Макет.ПолучитьОбласть("ШапкаОпер"); ОбластьМакета.Параметры.Заполнить(ПараметрыПечати); ТабДокумент.Вывести(ОбластьМакета); // Выводим ЗаголовокТаблицы документа ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокТаблицы"); ОбластьМакета.Параметры.Заполнить(ПараметрыПечати); ТабДокумент.Вывести(ОбластьМакета); // Выводим СтрокаТаблицы документа ОбластьМакета = Макет.ПолучитьОбласть("СтрокаТаблицы"); ОбластьМакета.Параметры.Заполнить(ПараметрыПечати); ТабДокумент.Вывести(ОбластьМакета); // Добавляем нижний колонтитул ТабДокумент.НижнийКолонтитул.Выводить = Истина; ТабДокумент.НижнийКолонтитул.НачальнаяСтраница = 1; ТабДокумент.НижнийКолонтитул.ВертикальноеПоложение = ВертикальноеПоложение.Центр; ТабДокумент.НижнийКолонтитул.ТекстСправа = "[&НомерСтраницы] из [&СтраницВсего] стр."; Возврат ТабДокумент; КонецФункции // СоздатьТабличныйДокументПечатиСчета() |
||||||||||||||||
15
mrDSide
01.11.13
✎
12:23
|
&НаСервере + &ПриСозданииНаСервере
В чем проблема? |
||||||||||||||||
16
Tornadius
01.11.13
✎
12:23
|
В модуле Формы есть процедура:
&НаСервере Процедура ПроверкаПроводок(...) Пока ЕстьПроводка Цикл Если Хорошая Тогда ... Дальнейшая обработка ... Иначе Вывести проводку в отчет КонецЕсли; КонецЦикла; Вывести Отчет с плохими проводками !!! Здесь проблема!!! КонецПроцедуры |
||||||||||||||||
17
Tornadius
01.11.13
✎
12:24
|
проблема в том как организовать вывод на печать???
процедуры не вызываются |
||||||||||||||||
18
Любопытная
01.11.13
✎
12:24
|
Сегодня нашествие какое-то...
В строке ТабДок = <<?>>Печать(); тебе нужно вызвать экспортную процедуру из модуля объекта. Для этого нужно сначала сам объект получить, а потом уже обращаться к его методам. Кури РеквизитФормыВЗначение() |
||||||||||||||||
19
Лодырь
01.11.13
✎
12:26
|
(16) Верни отчет с сервера на клиент. Там и распечатай. А на сервере куда ты что выводить собрался?
|
||||||||||||||||
20
Tornadius
01.11.13
✎
12:26
|
(18) Это уже проходили. Это работает когда надо делать внешнию печатную форму, а у меня создание отчета и его печать вызываются из внешней формы. Это разные задачи
|
||||||||||||||||
21
Tornadius
01.11.13
✎
12:27
|
(19) как это сделать?
|
||||||||||||||||
22
Любопытная
01.11.13
✎
12:27
|
(20) а в чем разница?
|
||||||||||||||||
23
Tornadius
01.11.13
✎
12:29
|
(22) в том что во внешней печатной форме есть документ который через реквизит "СсылкаНаОбъект" используется.
а у меня нет внешнего документа. Просто есть данные. которы возникают в процессе работы процедур внешней обработки, и вот их надо все собрать в один отчет и вывести его на печать |
||||||||||||||||
24
Любопытная
01.11.13
✎
12:30
|
(23) Ты в (14) привел модуль объекта, в котором описаны все процедуры печати. Или это не из модуля твоей обработки?
|
||||||||||||||||
25
FIXXXL
01.11.13
✎
12:31
|
(17) ведь сто пудов есть типовой механизм печати, посмотри в любом документе
типа ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_НовыеПароли"; Макет = ПолучитьМакет("Макет"); СтруктураПоиска = Новый Структура; СтруктураПоиска.Вставить("ПарольИзмененВИБ", Истина); МассивСтрок = СписокПользователей.НайтиСтроки(СтруктураПоиска); Для Каждого стр из МассивСтрок Цикл ОбластьМакета = Макет.ПолучитьОбласть("ДанныеПользователя"); ОбластьМакета.Параметры.Заполнить(стр); ТабДокумент.Вывести(ОбластьМакета); КонецЦикла; ОбластьМакета = Макет.ПолучитьОбласть("Ответственный"); ОбластьМакета.Параметры.Ответственный = ТекПользователь; ТабДокумент.Вывести(ОбластьМакета); УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, 2, Ложь, "Измененные пароли пользователей"); |
||||||||||||||||
26
Любопытная
01.11.13
✎
12:31
|
(23) если тебе надо собрать все ошибки в один отчет, то собери их в одну ТЗ и выведи эту ТЗ в подготовленный тобой макет. Так же как выводится любая информация из любого объекта.
|
||||||||||||||||
27
FIXXXL
01.11.13
✎
12:32
|
(25) последня строка - это механизм печати типовой
|
||||||||||||||||
28
Tornadius
01.11.13
✎
12:32
|
(24) Из модуля обработки, но он не работает. Либо не получает макет. либо не вызывает функцию печати
|
||||||||||||||||
29
Tornadius
01.11.13
✎
12:34
|
(26) Собрать в ТЗ соберу (хотя логичнее было бы выводить сразу в отчет - чего собственно и добиваюсь) но как потом с сервера распечатать ТЗ. процедура "ПолучитьМакет" не работает на серверной стороне
|
||||||||||||||||
30
Maxus43
01.11.13
✎
12:34
|
(28) готовый таб документ, заполненый на сервере, надо вернуть на сторону клиента и там распечатать
|
||||||||||||||||
31
Любопытная
01.11.13
✎
12:34
|
(28) не вызывает функцию печати, о чем тебе платформа и сообщает.
|
||||||||||||||||
32
Tornadius
01.11.13
✎
12:35
|
(30), (31) Это понятно, как сделать передачу ТЗ на клиент или добится вызова функции печать либо получить макет?
|
||||||||||||||||
33
Tornadius
01.11.13
✎
12:36
|
Люди дайте код.
|
||||||||||||||||
34
Maxus43
01.11.13
✎
12:37
|
(32) ТЗ нельзя, потому сам табличный документ надо возвращать на клиент, а на клиенте его просто печатать, он заполненый должен быть на сервере
|
||||||||||||||||
35
Любопытная
01.11.13
✎
12:37
|
(32)ЭтотОбъект = РеквизитФормыВЗначение("Объект");
ТабДок = ЭтотОбъект.Печать(); |
||||||||||||||||
36
Maxus43
01.11.13
✎
12:37
|
(35) ему произвольную печать надо, не печать документа
|
||||||||||||||||
37
Tornadius
01.11.13
✎
12:37
|
(35) не работает
|
||||||||||||||||
38
PLUT
01.11.13
✎
12:38
|
|||||||||||||||||
39
Любопытная
01.11.13
✎
12:38
|
(36) у него прописана печать чего-то модуле объекта в обработке. Можно в той же процедуре печати прописать печать того, что ему надо
|
||||||||||||||||
40
Tornadius
01.11.13
✎
12:46
|
Народ. Прежде чем выводить секции макета - т.е. заполнять отчет, нужно создать табличный документ.
ТД = Новый ТабличныйДокумент; и получить макет Макет = ПолучитьМакет("СомнительныеПроводки"); (здесь уже выскакивает ошибка) после этого надо заполнить ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьШапка.Параметры.Организация = ОрганизацияОбр; и вывести ТД.Вывести(ОбластьШапка); и это все на &НаСервере Как потом сделать ТД.ПОКАЗАТЬ и где? |
||||||||||||||||
41
PLUT
01.11.13
✎
12:48
|
(40) на каком б.ять Сервере? на клиенте заполняй и выводи
|
||||||||||||||||
42
Tornadius
01.11.13
✎
12:51
|
(41) на таком. что значения возникают на сервере и ТД заполняется там же
|
||||||||||||||||
43
Tornadius
01.11.13
✎
13:00
|
Как из процедуры на сервере сделать вывод печати на клиенте? не прерывая процедуры на сервере?
|
||||||||||||||||
44
Maxus43
01.11.13
✎
13:11
|
на клиенте:
ТД = ЗаполнитьТдНаСервере(); ТД.Показать(); |
||||||||||||||||
45
Tornadius
05.11.13
✎
06:24
|
(44) Где писасать код
ТД = Новый ТабличныйДокумент; на клиенте или на сервере? и второе. если ТД создавать на клиенте, то как ему получить макет? ибо макет = ПолучитьМакет(...) на клиенте не работает. |
||||||||||||||||
46
Wobland
05.11.13
✎
06:31
|
(45) уговори сервер вернуть клиенту ТабДок
|
||||||||||||||||
47
Мимохожий Однако
05.11.13
✎
06:53
|
&НаСервере
Функция ВернутьССервераТабДок() ТД = Новый ТабличныйДокумент; //....создаем табдок Возврат ТД; КонецФункции &НаКлиенте Процедура ПечатьНаКлиенте() ТД = ВернутьССервераТабДок(); ТД.ПОказать(); КонецПроцедуры; |
||||||||||||||||
48
Tornadius
07.11.13
✎
12:03
|
(47) Спасибо! У меня получилось.
Вот только расшифровка ячеек не срабатывает, хотя стоит: ОбластьМакета.Параметры.РасшифровкаОС = ОС.Ссылка; Что делать дальше не знаю. ТД открывается в отдельном окне, а не в форме отчета. |
||||||||||||||||
49
Лодырь
07.11.13
✎
12:55
|
(48) Ну не делай ТД.Показать()
Выведи твой табличный документ в поле табличного документа на форме. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |