|   |   | 
| 
 | 8.2 Не открывает внешняя печатная форма | ☑ | ||
|---|---|---|---|---|
| 0
    
        pessok 31.08.11✎ 18:04 | 
        Уже начинал эту тему, казалось бы задача решена, ан нет
  Итак, хочу вывести из внешней обработки внешнюю печатную форму документа. В обработке пишу код вызова ВПФ Процедура НапечататьРеестр(СсылкаНаОбъект) ВнешняяПФорма = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Реестр для отгрузки построчный"); ОбработкаОбъект = ВнешняяПФорма.ПолучитьОбъект(); ДанныеОбработки = ОбработкаОбъект.ХранилищеОбработки.Получить(); АдресХранилищаОбработки = ПоместитьВоВременноеХранилище(ДанныеОбработки); ИмяОбработки = Строка(ВнешняяПФорма.Ссылка.УникальныйИдентификатор()); Подключение = ВнешниеОбработки.Подключить(АдресХранилищаОбработки, ИмяОбработки , Истина); Отчет = ВнешниеОбработки.Создать(Подключение); Макет = Новый ТаблицаЗначений; Макет.Колонки.Добавить("ИмяВРЕГ"); Стр = Макет.Добавить(); Стр.ИмяВРЕГ = "Макет"; Отчет.Печать(СсылкаНаОбъект, Макет, Неопределено, Неопределено); КонецПроцедуры СсылкаНаОбъект - элемент массива, как положено. процедура печати вроде как стандартизирована для внешних обработок, но всеже приведу и ее Процедура Печать(МассивОбъектовНазначения, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, УникальныйИдентификаторКоманды()) Тогда ТабличныйДокумент = СформироватьПечатнуюФорму(МассивОбъектовНазначения, ОбъектыПечати); УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, УникальныйИдентификаторКоманды(), ЭтотОбъект.Метаданные().Синоним, ТабличныйДокумент ); КонецЕсли; КонецПроцедуры Вывода печтаного документа не происходит, как и ошибок.. Подозреваю, что ошибка в параметрах процедуры Печать(), но вот нигде не смог найти как их правильно задать... | |||
| 1
    
        Arseny 31.08.11✎ 18:09 | 
        Это что за конфа?     | |||
| 2
    
        pessok 31.08.11✎ 18:17 | 
        (1) УТ11     | |||
| 3
    
        pessok 31.08.11✎ 19:47 | 
        ап...     | |||
| 4
    
        Lenka_Boo 31.08.11✎ 20:06 | 
        Отладчик в руки. 
  И начинай со строки: ВнешняяПФорма = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Реестр для отгрузки построчный"); - находит? получает? УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, УникальныйИдентификаторКоманды()) -Истина? | |||
| 5
    
        pessok 31.08.11✎ 20:10 | 
        (4) процедура серверная, а сервер не в режиме отладки, не выйдет отладчиком пройтись     | |||
| 6
    
        pessok 31.08.11✎ 20:16 | 
        +(5) точнее выйдет, я врубил отладку, но для этого надо всех выгонять, а это не выйдет :(     | |||
| 7
    
        Lenka_Boo 31.08.11✎ 20:23 | 
        Тогда добавь строки "сообщить()" в подозрительных местах.     | |||
| 8
    
        pessok 31.08.11✎ 20:24 | 
        (7) мгм, ну в принципе да     | |||
| 9
    
        pessok 31.08.11✎ 20:28 | 
        (7) УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, УникальныйИдентификаторКоманды()) по ходу ложь...     | |||
| 10
    
        pessok 31.08.11✎ 20:29 | 
        хотя сейчас еще проверю...     | |||
| 11
    
        pessok 31.08.11✎ 20:30 | 
        +(9) угу, ложь     | |||
| 12
    
        pessok 31.08.11✎ 20:38 | 
        вот только куда дальше то курить?     | |||
| 13
    
        pessok 31.08.11✎ 20:47 | 
        А курить надо в ОбъектыПечати, собственно, которые формируются из УправлениеПечатью.ЗадатьОбластьПечатиДокумента()... Вот только фиг знает что дальше...     | |||
| 14
    
        pessok 31.08.11✎ 20:57 | 
        или хз... Нароооооод, неужели никто не делал такого? :)     | |||
| 15
    
        Lenka_Boo 31.08.11✎ 21:00 | 
        Смотри дальше в 
  "УправлениеПечатью.НужноПечататьМакет(..)" что у тебя должно быть в: "КоллекцияПечатныхФорм" "УникальныйИдентификаторКоманды()" | |||
| 16
    
        Denizzz 31.08.11✎ 21:01 | 
        БСП покури     | |||
| 17
    
        pessok 31.08.11✎ 21:04 | 
        (15) - массив/элемент массив
  - ПечатнаяФорма"+ЭтотОбъект.Метаданные().Имя; (16) нету под рукой БСП | |||
| 18
    
        pessok 31.08.11✎ 21:07 | 
        +(17) точнее ТЗ с названиями печатных форм в первом     | |||
| 19
    
        Lenka_Boo 31.08.11✎ 21:13 | 
        У меня нет УТ под рукой.
  Насколько у тебя данные отличаются от тех, которые требуются функции НужноПечататьМакет(..), чтоб вернула "истину"? | |||
| 20
    
        pessok 31.08.11✎ 21:37 | 
        (19) тут вот как интересно получается. Если из документа использовать печатную формуЮ то УникальныйИдентификаторКоманды() = "ПечатнаяФормаРеестрДляОтгрузкиПострочный"
  а если создавать ее в обработке, то нечто такого типа 0c506179-0402-11e0-a874-002586ee26e4 | |||
| 21
    
        pessok 31.08.11✎ 21:44 | 
        +(20) вру.
  ПечатнаяФорма0c506179-0402-11e0-a874-002586ee26e4 ПечатнаяФорма0c506179-0402-11e0-a874-002586ee26e4 Должно истину возвращать, а оно возвращает ложь... | |||
| 22
    
        pessok 31.08.11✎ 21:55 | 
        Кажется я забыл про ВРЕГ()... нафига это надо только? Сейчас буду проверять     | |||
| 23
    
        pessok 31.08.11✎ 22:02 | 
        Да, затык в в Врег()... Это плюс. Теперь вылетает ошибка - 
  {ОбщийМодуль.УправлениеПечатью.Модуль(106)}: Поле объекта не обнаружено (ТабличныйДокумент) Стр.ТабличныйДокумент = ТабличныйДокумент; танцы с бубном продолжаются :) | |||
| 24
    
        pessok 31.08.11✎ 22:08 | 
        ага, я недозаполнил ТЧ. Сейчас сделаем и проверим :)     | |||
| 25
    
        pessok 31.08.11✎ 22:08 | 
        ТЗ     | |||
| 26
    
        pessok 31.08.11✎ 22:39 | 
        ВнешняяПФорма = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Реестр для отгрузки построчный");
  ОбработкаОбъект = ВнешняяПФорма.ПолучитьОбъект(); ДанныеОбработки = ОбработкаОбъект.ХранилищеОбработки.Получить(); АдресХранилищаОбработки = ПоместитьВоВременноеХранилище(ДанныеОбработки); ИмяОбработки = Строка(ВнешняяПФорма.Ссылка.УникальныйИдентификатор()); Подключение = ВнешниеОбработки.Подключить(АдресХранилищаОбработки, ИмяОбработки , Истина); Отчет = ВнешниеОбработки.Создать(Подключение); НМакет = Новый ТаблицаЗначений; НМакет.Колонки.Добавить("ИмяВРЕГ"); НМакет.Колонки.Добавить("ТабличныйДокумент"); НМакет.Колонки.Добавить("СинонимМакета"); НМакет.Колонки.Добавить("Картинка"); НМакет.Колонки.Добавить("ПолныйПутьКМакету"); Стр = НМакет.Добавить(); Стр.ИмяВРЕГ = ВРег("ПечатнаяФорма"+ИмяОбработки); Стр.ТабличныйДокумент = Неопределено; Стр.СинонимМакета = Неопределено; Стр.Картинка = Неопределено; Стр.ПолныйПутьКМакету = Неопределено; Отчет.Печать(СсылкаНаОбъект, НМакет, ,); Снова ничего не выводится... Теперь уже ощущение, что не передался объект... | |||
| 27
    
        pessok 31.08.11✎ 22:50 | 
        и массив ссылок передается. блин, куда еще копать, народ?!     | |||
| 28
    
        pessok 01.09.11✎ 10:02 | 
        задача так и не решена :(     | |||
| 29
    
        Kerk 01.09.11✎ 10:52 | 
        Честно про УТ не знаю, но в БП внешние печатный формы возвращали табличный документ, который уже в конфе выводился на экран...     | |||
| 30
    
        pessok 01.09.11✎ 12:47 | 
        (29) оно и возвращает печатный документ     | |||
| 31
    
        Kerk 01.09.11✎ 13:36 | 
        (30) эээ... где? У тебя процедуры в примерах...
  У тебя ТабличныйДокумент получается в процедуре Печать, потом "ВывестиТабличныйДокументВКоллекцию" и всё... | |||
| 32
    
        pessok 01.09.11✎ 13:57 | 
        (31) в процедуре печать ВПФ он получается, он есть, отладчиком видится, он правильно передается в ВывестиТабличныйДокументВКоллекцию(), тоже отладчиком смотрю, все ок. А вот выводиться - не выводиться. Глянь, плз 
  v8: УТ11. Внешняя печатная форма(продолжение) я там более подробно конкретно этого вопроса коснулся | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |