Имя: Пароль:
1C
1С v8
УТ11. Внешняя печатная форма(продолжение)
0 pessok
 
01.09.11
12:58
Итак, я почти разобрался с тем, как вызвать на печать ВПФ из ВО.
Код вызова:

Процедура НапечататьРеестр(СсылкаНаОбъект)
   ВнешняяПФорма = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Реестр для отгрузки построчный");
   ОбработкаОбъект = ВнешняяПФорма.ПолучитьОбъект();
   ДанныеОбработки = ОбработкаОбъект.ХранилищеОбработки.Получить();
   АдресХранилищаОбработки = ПоместитьВоВременноеХранилище(ДанныеОбработки);
   ИмяОбработки = Строка(ВнешняяПФорма.Ссылка.УникальныйИдентификатор());
   Подключение = ВнешниеОбработки.Подключить(АдресХранилищаОбработки, ИмяОбработки , Истина);
   Отчет = ВнешниеОбработки.Создать(Подключение);
   
   НМакет = Новый ТаблицаЗначений;
   НМакет.Колонки.Добавить("ИмяВРЕГ");
   НМакет.Колонки.Добавить("ТабличныйДокумент", Новый ОписаниеТипов("Строка"));
   НМакет.Колонки.Добавить("СинонимМакета", Новый ОписаниеТипов("Строка"));
   НМакет.Колонки.Добавить("Картинка", Новый ОписаниеТипов("Строка"));
   НМакет.Колонки.Добавить("ПолныйПутьКМакету", Новый ОписаниеТипов("Строка"));

   Стр = НМакет.Добавить();
   Стр.ИмяВРЕГ = ВРег("ПечатнаяФорма"+ИмяОбработки);
   Стр.ТабличныйДокумент = Неопределено;
   Стр.СинонимМакета = Неопределено;
   Стр.Картинка = Неопределено;
   Стр.ПолныйПутьКМакету = Неопределено;
   
   Отчет.Печать(СсылкаНаОбъект, НМакет, ,);
КонецПроцедуры

Процедура Печать() написана согласно БСП
Данные передаются корректно, запрос в процедуре СформироватьПечатнуюФорму() возвращает правильное значение, что видно из скрина... Вот только печатная форма не выводится...
Скрин:
http://rghost.ru/20088161.view
Собственно на скрине:
задний фон - результат выполнения обработки ВПФ непосредственно из документа реализации
передний фон - обработка пакетной печати, где выбран тот же документ.
Поле запроса Документ возвращается одинаково для обоих вариантов, из чего я сделал вывод, что данные переданы и обработаны правильно. Сам запрос в процедуре обрабатывается, соответственно. По причине того, что процедура СформироватьПечатнуюФорму() вызывается вообще я делаю вывод, что
УправлениеПечатью.НужноПечататьМакет <> Неопределено, иначе бы не вызвалось. Опять таки СформироватьПечатнуюФорму() нормально возвращает ТабличныйДокумент. Однако печатная форма так и не выводится...
Я уже отчаился... Помогите, люди добрые...
1 pessok
 
01.09.11
13:00
Кстати, в догонку. Желательно сразу посылать документ на принтер, без предпросмотра. Это лучше прописать в ВПФ, или есть методы по БСП?
2 pessok
 
01.09.11
13:45
ну чтож такое то? никто не знает, или никто помочь не хочет?
3 pessok
 
01.09.11
14:25
ап...
4 pessok
 
01.09.11
15:18
ап еще раз...
5 Kerk
 
01.09.11
15:21
Блин. Сделай ТабличныйДокумент.Показать();
6 pessok
 
01.09.11
15:28
(5) в СформироватьПечатнуюФорму()?
7 pessok
 
01.09.11
15:32
уже вот так сделал:

Процедура Печать(МассивОбъектовНазначения, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
   ТД = СформироватьПечатнуюФорму(МассивОбъектовНазначения, ОбъектыПечати);
   ТД.Показать();
   Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, УникальныйИдентификаторКоманды()) Тогда
       ТабличныйДокумент = СформироватьПечатнуюФорму(МассивОбъектовНазначения, ОбъектыПечати);
       УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
           КоллекцияПечатныхФорм,
           УникальныйИдентификаторКоманды(),
           ЭтотОбъект.Метаданные().Синоним,
           ТабличныйДокумент
       );
   КонецЕсли;
КонецПроцедуры

не помогает...
8 pessok
 
01.09.11
16:08
так и не выводится
9 Kerk
 
01.09.11
16:36
Ищи где вызывается внешние печатные формы в конфигурации. Тут явно, чего-то не хватает...
10 pessok
 
01.09.11
17:45
да я в курсе, а вот найти не могу :) вроде быб всего хватает...
11 Lenka_Boo
 
01.09.11
19:13
Помню, у меня была плюха при вызове внешней печатной формы из документа. Ошибка чисто по невнимательности. Не на ту строчку тыкнула при выборе типа реквизита.
"СсылкаНаОбъект" имела тип "ДокументОбъект", а нужно "ДокументСсылка"
12 pessok
 
01.09.11
19:31
(11) сейчас проверю :)
13 pessok
 
01.09.11
19:32
+(12) хотя СсылкаНаОбъект в УправлениеПечатьюКлиент.ВыполнитьКомандуПечатиНаПринтер передается нормально
14 pessok
 
01.09.11
19:38
Да нет. ДокументСсылка, все ок
15 pessok
 
01.09.11
19:43
Подключение = ВнешниеОбработки.Подключить(АдресХранилищаОбработки, ИмяОбработки , Истина);
   Отчет = ВнешниеОбработки.Создать(Подключение);

а не ВнешниеОтчеты тут надо использовать, кстати?
16 pessok
 
01.09.11
20:02
да вроде бы как нет...
чтож делать то?
*бьеца головой ап стену*
17 pessok
 
01.09.11
21:11
может с таблицей команд еще как-то енто связано?
18 pessok
 
01.09.11
22:16
так параметры печати в табличного документа тоже нормально передаются...
ПАРАМЕТРЫ_ПЕЧАТИПечатнаяФорма0c506179-0402-11e0-a874-002586ee26e4
19 pessok
 
01.09.11
22:49
Добавлю еще кое-что... Я прям в шоке - ТабличныйДокумент.Записать() - РАБОТАЕТ! И правильно пишет документ! А вот показывать не хочет... Что за хрень?
ТабличныйДокумент.Показать() - тишина,
ТабличныйДокумент.Записать() - вполне себе нормальный файл с нужными данными... ЧЯДНТ?!
20 pessok
 
01.09.11
23:01
Скорее всего надо толи форму как-то получить, толи хз...