|
Вызов процедуры внешней обработки? | ☑ | ||
---|---|---|---|---|
0
Demetres
03.06.15
✎
13:46
|
Добрый день! Столкнулся с бидэ, пытаюсь открыть внешнюю обработку из двоичных данных и вызвать экспортную процедуру модуля объекта этой обработки, выдает ошибку нет такого метода. Все в обычном приложении.
Код: /////////////////////////////////// ДвоичныеДанные = Base64Значение(Строка64Base); АдресВХД = ПоместитьВоВременноеХранилище(ДвоичныеДанные); Попытка АдресОбработки = ВнешниеОбработки.Подключить(АдресВХД,, Ложь); Обработка = ВнешниеОбработки.Создать(АдресОбработки, Ложь); Исключение Результат = Новый Структура("Результат, ТекстОшибки", Ложь, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ПоместитьВоВременноеХранилище(Результат, АдресВременногоХранилища); Возврат; КонецПопытки; Результат = Неопределено; Попытка Обработка.ВыполнитьДействияОбработки(Параметры, Результат); Исключение Результат = Новый Структура("Результат, ТекстОшибки", Ложь, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; /////////////////////////////////// текст ошибки: {ОбщийМодуль.УниверсальныеМеханизмы.Модуль(3528)}: Метод объекта не обнаружен (ВыполнитьДействияОбработки) Обработка.ВыполнитьДействияОбработки(Параметры, Результат); Если кто знает в чем проблема подскажите |
|||
1
Волшебник
модератор
03.06.15
✎
13:47
|
сделай её экспортной
|
|||
2
Demetres
03.06.15
✎
13:47
|
Ой
|
|||
3
ДенисЧ
03.06.15
✎
13:47
|
Я знаю только один способ столкнуться с бидэ....
|
|||
4
Demetres
03.06.15
✎
13:47
|
Вроде дошло
|
|||
5
Demetres
03.06.15
✎
13:47
|
Ложная тревога, вопрос актуален
|
|||
6
Demetres
03.06.15
✎
13:49
|
(1) вот она из модуля объекта обработки:
Процедура ВыполнитьДействияОбработки(СтруктураПараметров, Результат) Экспорт как сделать её ещё экспортней, не знаю :( |
|||
7
EugeniaK
03.06.15
✎
13:51
|
(6) Смотри, что в объекте "Обработка"
|
|||
8
Demetres
03.06.15
✎
13:53
|
(7) Там:
ИспользуемоеИмяФайла "e1cib\tempstorage\7aa5283c-673f-4a56-bf0d-8d8b99be5046" Строка ЭтотОбъект ВнешняяОбработкаОбъект.ВнешняяОбработка ВнешняяОбработкаОбъект.ВнешняяОбработка |
|||
9
asady
03.06.15
✎
13:55
|
(0) код у тебя где выполняется?
|
|||
10
Demetres
03.06.15
✎
13:55
|
(9) на сервере
|
|||
11
Demetres
03.06.15
✎
13:57
|
Похоже так не получиться вызвать процедуру модуля объекта этой внеш. обработки, в СП написано что можно только к реквизитам обращаться.
ВнешняяОбработка (ExternalDataProcessor) Свойства: <Имя реквизита> (<Attribute name>) <Имя табличной части> (<Tabular section name>) ИспользуемоеИмяФайла (UsedFileName) ЭтотОбъект (ThisObject) Методы: Метаданные (Metadata) ПолучитьМакет (GetTemplate) ПолучитьФорму (GetForm) ПроверитьЗаполнение (CheckFilling) События: ОбработкаПроверкиЗаполнения (FillCheckProcessing) |
|||
12
Demetres
03.06.15
✎
14:07
|
Может есть другой способ, запустить её и вызвать процедуру модуля объекта?
|
|||
13
Demetres
03.06.15
✎
14:29
|
Ребята, может у кого есть умная идея? Очень бы пригодилось.
|
|||
14
shpioleg
03.06.15
✎
15:39
|
(11) Все там можно обращаться.
Напутал ты просто где-то. |
|||
15
shpioleg
03.06.15
✎
15:44
|
+(14) Попробуй без второго параметра, просто
Обработка = ВнешниеОбработки.Создать(АдресОбработки); |
|||
16
Demetres
03.06.15
✎
15:47
|
(15) Спасибо за поддержку, пробовал без создания, все равно пишет что "Метод объекта не обнаружен (ВыполнитьДействияОбработки)". Нашел код похожий, тоже вызывается процедура Модуля объекта обработки, почему у меня не срабатывает не пойму???
|
|||
17
shpioleg
03.06.15
✎
15:53
|
Ну у меня прекрасно работает
|
|||
18
shpioleg
03.06.15
✎
15:57
|
Вариант синтаксиса: По имени обработки
Синтаксис: Создать(<Имя>) Параметры: <Имя> (обязательный) Тип: Строка. Имя внешней обработки, полученное после подключения. Описание варианта метода: Предварительно обработка должна быть подключена методом Подключить. Возвращаемое значение: Тип: ВнешняяОбработка. |
|||
19
Demetres
03.06.15
✎
15:57
|
(17) Блин, в чем же дело, почему у меня тогда не работает, вроде все тоже самое
|
|||
20
Demetres
03.06.15
✎
15:59
|
(18) Да вроде же и подключение есть, надо разбираться дальше, главное что теперь точно известно что так можно
|
|||
21
shpioleg
03.06.15
✎
16:06
|
Так ты поменял Обработка = ВнешниеОбработки.Создать(АдресОбработки, Ложь);
вот на это Обработка = ВнешниеОбработки.Создать(АдресОбработки); ? Ты используешь синтаксис по пути к файлу Вариант синтаксиса: По имени файла Синтаксис: Создать(<ПолноеИмяФайла>, <БезопасныйРежим>) |
|||
22
Михаил Козлов
03.06.15
✎
16:07
|
(20) В типовых так работают внешние печатные формы и обработки таб. частей (через экспортные процедуры модулей объектов).
|
|||
23
Demetres
03.06.15
✎
16:16
|
(21) Сейчас как раз пробую
|
|||
24
Demetres
03.06.15
✎
16:23
|
(21) Тоже самое {ОбщийМодуль.УправлениеПечатьюВызовСервера.Модуль(267)}: Метод объекта не обнаружен (ВыполнитьДействияОбработки)
Прописал: АдресОбработки = ВнешниеОбработки.Подключить(АдресВХД); |
|||
25
НЕА123
03.06.15
✎
16:24
|
может обработка не та, или все-таки процедура в форме.
|
|||
26
shpioleg
03.06.15
✎
16:31
|
(24) А причем здесь метод Подключить? Я как бы про Создать писал. Создай просто экспортную переменную в модуле обработки. Ее должно быть видно в отладчике в твоей переменной Обработка.
|
|||
27
Demetres
03.06.15
✎
16:34
|
(25) Точно модуль объекта, уже 100 раз это проверил
(26) А реквизиты должны быть видны после создания или нет? |
|||
28
shpioleg
03.06.15
✎
16:37
|
(27) После создания. Ты отладчик запускал, смотрел что у тебя в переменных?
|
|||
29
Demetres
03.06.15
✎
16:40
|
(28) у меня там только то что в (8) реквизитов нет почему-то? наверное создание неправильно сделал?
|
|||
30
shpioleg
03.06.15
✎
16:43
|
(29) А я о чем? :) У метода Создать 2 варианта синтаксиса. Тебе нужен второй, по имени обработки(то что вернул метод Подключить), а не по имени файла, как у тебя.
|
|||
31
Demetres
03.06.15
✎
16:57
|
(30) Ясно. Сейчас буду пробовать, только пока база мертвая нужно подождать немного
|
|||
32
Demetres
03.06.15
✎
17:14
|
(30) Все равно
АдресОбработки = ВнешниеОбработки.Подключить(АдресВХД,, Ложь); ТекОбработка = ВнешниеОбработки.Создать(АдресОбработки); не пойму что с х... |
|||
33
Demetres
03.06.15
✎
17:47
|
(30) А как у вас получается реквизит АдресХранилища?
|
|||
34
Demetres
04.06.15
✎
08:00
|
Нужно использовать не "ВнешниеОбработки.Создать(" а "ВнешниеОтчеты.Создать(". Всем спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |