Как передать ссылку на документ в управляемую внешнюю печатную форму

Новая тема
Показывать по 10 20 40 сообщений
Добрый день! Помогите пожалуйста со следующим вопросом.  
В УТ 11 редакция (управляемое приложение) мне нужно создать  внешнюю печатную  форму, которая могла бы вызываться из документов  некоторого типа и  выполнять какие-то действия (в частности, печатать  этикетки из  документов Поступление товаров услуг и Перемещение товаров).  Подключить  внешнюю обработку удалось, указала и вид и назначение, и все   остальное, что нужно - форма вызывается из нужных документов, НО: я   никак не могу понять, как передать в обработку ссылку на вызвавший ее   документ. В 10.3 это было реализовано через реквизит СсылкаНаОбъект, в   который автоматически передавалась ссылка. В 11 редакции такого нет.  Подскажите пожалуйста, как это  сделать!
[Промодерировано]
Ну так в этой обработке тоже СсылкаНаОбъект выбирается на форме. А мне нужно, чтобы при добавлении печатной формы в виде внешней Дополнительной обработки вызывающий ее документ передавал в нее ссылку на себя (т.е. обработка еще "не знает, кто ее вызовет")
>  "не знает, кто ее вызовет"
Понятно что не знает. Я не занимался еще управляемыми формами, но исследование найденного на просторах интернета "ТоварныйЧек" показало, что в процедуру Печать передается МассивОбъектовНазначения ...
Задайте в гугле СведенияОВнешнейОбработке и посмотрите темы на Мисте.
""Найденный на просторах интернета "ТоварныйЧек"""" я тоже смотрела. Только вот там МассивОбъектовНазначения формируется как: МассивОбъектовНазначения.Добавить(Объект.СсылкаНаОбъект);   а СсылкаНаОбъект задается на форме, как я уже писала. С этим вариантом все ясно.
СведенияОВнешнейОбработке  - это функция, которая возвращает РегистрационныеДанные об обработке, нужна чтобы подключить обработку в дополнительные, т.е. это совсем не то.

Мне нужно, чтобы зарегистрированная как дополнительная внешняя обработка, вызываясь из любого документа, получала себе ссылку на этот документ. Как подключить обработку и как ее вызывать я знаю, мне нужен только момент передачи ссылки. Вот этот момент я никак не пойму(("
Я подключил эту обработку и из ЧекаККМ вызвал. Никакая форма кроме готового отчета у меня не открывалась. А Форма в обработке - это просто форма для тестирования. Из конфигурации идет прямое обращение к процедуре Печать.
Там даже в комментарии написано:
// Экспортная процедура печати, вызываемая из основной программы
Вот и обрабатывайте МассивОбъектовНазначения ...
А вы уверены, что открылся готовый отчет обработки, а не стандартная процедура печати? У меня открылась она...
>>Из конфигурации идет прямое обращение к процедуре Печать
++Поясните пожалуйста, не поняла, это как?

>>Вот и обрабатывайте МассивОбъектовНазначения
++Вобщем-то как раз это я и спрашиваю - как ее обработать, чтобы ссылку с процедуру передать(((
"> А вы уверены, что открылся готовый отчет обработки
Абсолютно

> чтобы ссылку с процедуру передать
Ссылка в массиве!

В модуле обработки написано:

// Экспортная процедура печати, вызываемая из основной программы
//
// Параметры:
// ВХОДЯЩИЕ:
//  МассивОбъектовНазначения - Массив - список объектов ссылочного типа для печати документа
//                 Как правило, содержит один элемент с ссылкой на вызвавший форму объект (документ, справочник)
//
// ИСХОДЯЩИЕ:
//  КоллекцияПечатныхФорм - ТаблицаЗначений - таблица сформированных табличных документов.
//                 Как правило, содержит одну строку с именем текущей печатной формы
//  ОбъектыПечати - СписокЗначений - список объектов печати.
//  ПараметрыВывода - Структура - Параметры сформированных табличных документов. Содержит поля:
//   ДоступнаПечатьПоКомплектно - булево - по умолчанию Ложь
// ПолучательЭлектронногоПисьма
// ОтправительЭлектронногоПисьма
//
Процедура Печать(МассивОбъектовНазначения, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ТоварныйЧек") Тогда

ТабличныйДокумент = СформироватьПечатнуюФормуТоварногоЧека(МассивОбъектовНазначения, ОбъектыПечати);

УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"ТоварныйЧек",
"Товарный чек",
ТабличныйДокумент
);

КонецЕсли;

КонецПроцедуры



Скажите какое из слов: "МассивОбъектовНазначения - ... Как правило, содержит один элемент с ссылкой на вызвавший форму объект (документ, справочник)" было не понятно?

Поясняю: стандартный код общих модулей конфигурации вызывает процедуру Печать из в МодулеОбработки. Попробуйте убрать слово Экспорт и не будет у вас работать! Для платформы 8.1 точно также была нужна экспортная процедура Печать, только вызывалась без параметров, и параметром считался реквизит СсылкаНаОбъект. Теперь, судя по всему, нафиг никому не нужен, разве что для совместимости с 8.1."
"В этой обработке для печати товарного чека МассивОбъектовНазначения заполняется в модуле формы обработки:

Процедура ВыполнитьПечать()
   МассивОбъектовНазначения = Новый Массив;
   МассивОбъектовНазначения.Добавить(Объект.СсылкаНаОбъект);
   .....
КонецПроцедуры

""""Как правило, содержит один элемент с ссылкой..."""" - ну да, что туда передадут, то и содержит.
Где мне сформировать этот МассивОбъектовНазначения перед вызовом печатной формы, ну никак я не пойму! =("
В конфигурациях этих унифицированы алгоритмы обращения к внешним печатным формам, поэтому если форма подготовлена в соответствии с придуманными правилами, то она и подключается "ровно" и в нее система по умолчанию передает сама этот МассивОбъектов, который формирует в каком то общем модуле конфигурации. Вот тут кусок кода я приводил, который полностью устроил конфигурацию и через МассивОбъектов как раз внешняя обработка получала сведения о документе, который обычно в самом деле один, из которого она вызывается, тем не менее, не возбраняется передать массив ссылок и алгоритм сформировал бы в моем случае набор печатных форм.
http://www.buh.ru/forum/thread.jsp?id=577053
Читают тему
(гостей: 1)

Быстрый переход