Имя: Пароль:
1C
1С v8
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. Внешняя печатная форма(продолжение)
я там более подробно конкретно этого вопроса коснулся
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший