Имя: Пароль:
1C
 
вызвать обработку из макета
0 inkvizitr
 
18.10.18
15:54
Стоит задача, внешнею обработку1 запихнуть в макет внешней обработки2, и от туда ее вызывать, как это реализовать
1 Lexey_
 
18.10.18
15:56
(0) получить обработку из макета, записать в файл, вызвать
2 Cool_Profi
 
18.10.18
15:57
1. Запихнуть обработку в макет.
2. Создать обработку и подсунуть ей ДД из того макета.
3. Вызвать.

N. Перечислить мне M рублей
3 inkvizitr
 
18.10.18
15:57
(1) Уже записал как двоичные данные, а как вызвать
4 Lexey_
 
18.10.18
15:58
(3) ВнешниеОбработкиМенеджер (ExternalDataProcessorsManager)


Методы:
Подключить (Connect)
ПолучитьФорму (GetForm)
Создать (Create)


Описание:
Предназначен для управления внешними обработками и позволяет получать значения типа ВнешняяОбработка при помощи метода Создать. Доступ к объекту осуществляется через свойство глобального контекста ВнешниеОбработки.
5 inkvizitr
 
18.10.18
16:01
(4) это я так понимаю использовать временно хранилище
6 Greeen
 
18.10.18
16:27
АдресФайлаВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
Обработка_Имя = ВнешниеОбработки.Подключить(АдресФайлаВоВременномХранилище, , Ложь);
СуперПуперОбработка= ВнешниеОбработки.Создать(Обработка_Имя);
СуперПуперОбработка.СделатьВсе();
7 inkvizitr
 
18.10.18
16:51
(6) Щас попробую
8 inkvizitr
 
18.10.18
17:46
(6) пробую так

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

валится на ИмяВнешнейОбработки = ПолучитьОбработку();
как дальше правильно реализовать?
9 Greeen
 
18.10.18
18:44
Если нужно форму именно открыть, то вот так (+ допилить передачу параметров)
  &НаКлиенте
  Процедура  Команда1(Команда)
      
      ИмяВнешнейОбработки = ПолучитьОбработку();    
      
      Форма_имя =  "ВнешняяОбработка."+ ИмяВнешнейОбработки +".Форма";
      ОткрытьФорму(Форма_имя);
      
  КонецПроцедуры
  
  &НаСервере
  Функция ПолучитьОбработку()
      ДвоичныеДанные = ПолучитьДвоичныеДанные();
      АдресФайлаВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные, Новый УникальныйИдентификатор);
      Обработка = ВнешниеОбработки.Подключить(АдресФайлаВоВременномХранилище, , Ложь);
      Возврат Обработка;
  КонецФункции    
  
  &НаСервере
  Функция ПолучитьДвоичныеДанные()
      Возврат РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
  КонецФункции
10 inkvizitr
 
18.10.18
20:09
(9) Спасибо огромное, ты лучший, я отладчиком прогнал, теперь стало ясно как работает данный алгоритм
11 TormozIT
 
гуру
18.10.18
22:54
(10) Теперь осталось поставить в такой внешней обработке точку останова и попытаться остановиться в ней при рабочем вызове.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший