![]() |
![]() |
![]() |
|
Внешняя обработка. Печать. | ☑ | ||
---|---|---|---|---|
0
PiotrLoginov
15.03.13
✎
03:42
|
Здравствуйте всем. Пытаюсь состряпать внешнюю обработку, печатающую информацию о взаиморасчетах с контрагентом. Основной код и макет для печати взял из документа "Сверка взаиморасчетов".
Сделал в форме обработки кнопку "Печать". Ее нажатие вызывает выполнение процедуры Печать в модуле обработки. процедура выполняется без сообщений об ошибках, но ничего не происходит, т.е. табличный документ не выводится. Думаю, проблема в том, что я не правильно обошелся с ЗадатьОбластьПечатиДокумента, т.к. обычно там последним параметром передается ссылка на печатаемый объект ИБ, а в данном случае там пусто - обработка же печатает не записанный объект, а результат собственных вычислений: ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, Неопределено); Процедура ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, Ссылка) Элемент = Ссылка; Если Элемент = Неопределено Тогда ИмяОбласти = "Документ_" + Формат(ОбъектыПечати.Количество() + 1, "ЧН=; ЧГ="); ОбъектыПечати.Добавить(Ссылка, ИмяОбласти); Иначе ИмяОбласти = Элемент.Представление; КонецЕсли; НомерСтрокиОкончание = ТабличныйДокумент.ВысотаТаблицы; ТабличныйДокумент.Область(НомерСтрокиНачало, , НомерСтрокиОкончание, ).Имя = ИмяОбласти; КонецПроцедуры |
|||
1
PiotrLoginov
15.03.13
✎
03:45
|
Помогите, пожалуйста, уважаемые. Что я делаю не так?
|
|||
2
Web00001
15.03.13
✎
03:56
|
Для того что бы работала внешняя печатная форма экспортная функция Печать в модуле объекта, должна возвращать табличный документ. Это если ты подключаешь внешнюю печатную форму к какому то объекту. Если ты просто используешь ее как обработку, то метод Показать() призменный к табличному документы как не странно показывает табличный документ.
|
|||
3
Web00001
15.03.13
✎
03:57
|
*примененный к табличному документу
|
|||
4
PiotrLoginov
15.03.13
✎
03:59
|
Спасибо огромное, что откликнулись. Читал я о методе показать, но что-то мне это не помогает. Где надо написать ТабличныйДокумент.Показать(); ? В конце процедуры Печать(), которая в модуле обработки?
|
|||
5
PiotrLoginov
15.03.13
✎
04:04
|
В модуле обработки такой код:
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина; УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "АктСверкиВзаимныхРасчетов", "Акт сверки взаимных расчетов", СформироватьПечатнуюФормуАктСверкиВзаимныхРасчетов(МассивОбъектов, ОбъектыПечати) ); КонецПроцедуры Функция СформироватьПечатнуюФормуАктСверкиВзаимныхРасчетов(ДанныеДокумента, ОбъектыПечати) Экспорт УстановитьПривилегированныйРежим(Истина); ......... ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, Неопределено); ТабличныйДокумент.АвтоМасштаб = Истина; Если ПривилегированныйРежим() Тогда УстановитьПривилегированныйРежим(Ложь); КонецЕсли; Возврат ТабличныйДокумент; КонецФункции Ну и далее процедура, приведенная в начале этой темы. |
|||
6
Web00001
15.03.13
✎
04:04
|
(4)>>Спасибо огромное, что откликнулись.
Москва спит еще, часиков через 5 тебя закидали бы ответами и без меня. Показывать надо документ тогда, когда он заполнен, потому что после того как показал, понятное дело заполнять его не имеет смысла. |
|||
7
PiotrLoginov
15.03.13
✎
04:09
|
Тогда может быть в модуле формы ? После того, как будет полностью завершено обращение к процедуре Печать модуля обработки?
|
|||
8
Web00001
15.03.13
✎
04:10
|
кхм давай сначала
>>Пытаюсь состряпать внешнюю обработку, печатающую информацию о взаиморасчетах с контрагентом Ты хочешь формировать готовую печатную форму а не свою делаешь? |
|||
9
Web00001
15.03.13
✎
04:11
|
У тебя просто используется унверсальный механизм, я не помню, что там зачем идет и что возвращает, что за конфигурация?
|
|||
10
PiotrLoginov
15.03.13
✎
04:13
|
создаю файлик сверка.epf
добавляю реквизиты, аналогичные тем, что у документа Сверка взаиморасчетов, форму с кнопкой Печать. В модуле формы пишу обработчик нажатия этой кнопки |
|||
11
Web00001
15.03.13
✎
04:15
|
я правильно понял, что документ формирует какую то печатную форму и ты хочешь точно такую же?
|
|||
12
Web00001
15.03.13
✎
04:16
|
конфигурация какая?
|
|||
13
PiotrLoginov
15.03.13
✎
04:17
|
УТ 11
В модуле обработки пишу экспортную процедуру Печать() Обработчик нажатия успешно её запускает. Пишу в модуле обработки СведенияОВнешнейОбработке() . Пробую. Код выполняется без ошибок, но ничего не происходит. Думаю, я что-то напутал с ЗадатьОбластьПечатиДокумента() Обычно обращаются к типовой УправлениеПечатью.ЗадатьОбластьПечатиДокумента() , но эта процедура требует указать ссылку на печатаемый объект ИБ, а у меня нету ссылки (( |
|||
14
PiotrLoginov
15.03.13
✎
04:19
|
(11) Не совсем. Мне надо без обращения к какому-либо документу, без записи в ИБ каких-либо данных запросить нужную информацию из регистров и распечатать ее.
|
|||
15
PiotrLoginov
15.03.13
✎
04:29
|
Как-нибудь можно посмотреть в отладчике, какой табличный документ сформировываетя к концу выполнения процедуры Печать ? Очень досадно - код последовательно выполняется без проблем, но результата нет, ну вот хоть тресни...
|
|||
16
Web00001
15.03.13
✎
04:32
|
ты же заметил, что в приведенном тобой коде, нет ни слова про то какие данные и откуда берутся? информация как печатать объект, находится как правило в модуле объекта. Которого у тебя как я понимаю нет. Хотя могу и ошибаться. Надо ставить УТ11, смотреть отладчиком, разбираться. Я за это беру деньги, небольшие, но беру. Может кто еще подтянется кто делал недавно и скажет навскидку
|
|||
17
Web00001
15.03.13
✎
04:34
|
хотя... кинь в меня своей обработкой
|
|||
18
PiotrLoginov
15.03.13
✎
04:35
|
||||
19
PiotrLoginov
15.03.13
✎
04:39
|
Готов дать данные от тимвьювера.. хотя инет у меня паршивый. Готов перекинуть символическое количество вебманей... на хорошую шоколадку (емкости с пивом не предлагаю принципиально)
|
|||
20
PiotrLoginov
15.03.13
✎
04:44
|
я вижу в отладчике, что табличный документ сформирован. я вижу количество строк в нем и его параметры. Но вот ведь ведь незадача, он не выводится на экран - и всё тут.
|
|||
21
Web00001
15.03.13
✎
05:01
|
пиши на почту данные тимвивера, хорошо бы аську, агент, джабер, вконтакт, хоть что то для связи, что оперативнее почты
|
|||
22
PiotrLoginov
15.03.13
✎
05:07
|
отправил
|
|||
23
Web00001
15.03.13
✎
05:17
|
Собственно вроде и так в коде разобрался, да там механизм отрабатывает, если ты все правильно заполнил, то нужно дополнить код
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина; // Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "АктСверкиВзаимныхРасчетов") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "АктСверкиВзаимныхРасчетов", "Акт сверки взаимных расчетов", СформироватьПечатнуюФормуАктСверкиВзаимныхРасчетов(МассивОбъектов, ОбъектыПечати) ); //вот здесь Для Каждого ПечатнаяФорма Из КоллекцияПечатныхФорм Цикл ПечатнаяФорма.Показать(); КонецЦикла // ИначеЕсли УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "АктСДаннымиКонтрагента") Тогда // // УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, // "АктСДаннымиКонтрагента", // "Акт сверки взаимных расчетов (с задолженностью по данным контрагента)", // СформироватьПечатнуюФормуАктСДаннымиКонтрагента(МассивОбъектов, ОбъектыПечати) // ); // // КонецЕсли; КонецПроцедуры Попробуй проверить не на чем. |
|||
24
PiotrLoginov
15.03.13
✎
05:27
|
(23) {ВнешняяОбработка.Сверка.МодульОбъекта(168)}: Метод объекта не обнаружен (Показать)
ПечатнаяФорма.Показать(); |
|||
25
PiotrLoginov
15.03.13
✎
06:42
|
Порядок. Благодаря Web00001 вопрос решен использованием УправлениеПечатью.ПодготовитьСтруктуруПараметровВывода() в модуле формы и может быть закрыт.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |