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