|
Запуск процедур по динамическому имени? | ☑ | ||
---|---|---|---|---|
0
aspirator23
10.08.15
✎
15:57
|
Есть справочник внешних обработок. Открывая программно разные обработки, можно ли запускать их процедуры обращаясь по имени?
Мы обращаемся так Справочники["Номенклатура"]. Можно ли подобное применить для запуска процедур? Например, что-то подобное этому: Процедура ЗапускВнешнейОбработки(КодОбрабоки,ИмяПроцедуры) Экспорт ОбъектОбработка=Справочники.ВнешниеОбработки.НайтПоКоду(КодОбработки).ПолучитьОбъект(); ОбъектОбработка[ИмяПроцедры]; КонецПроцедуры Команда Выполнить здесь похоже не подходит? Понятно, что можно решить эту задачу традиционными способами. |
|||
1
ДенисЧ
10.08.15
✎
16:05
|
F xtv Dsgjkybnm() yt gjl[jlbn&
|
|||
2
ДенисЧ
10.08.15
✎
16:05
|
Блин...
Чем Выполнить() не подходит? |
|||
3
aspirator23
10.08.15
✎
16:06
|
Выполнить("Справочник.ВнешниеОбработки.НайтиПоКоду(""01"").МояПроцедура");
Так? |
|||
4
ДенисЧ
10.08.15
✎
16:07
|
То есть за попробовать у тебя руки оторвут?
|
|||
5
aspirator23
10.08.15
✎
16:08
|
Проверяю, проверяю..
|
|||
6
aspirator23
10.08.15
✎
16:12
|
Не.. Не срабатывает
Так Выполнить("Справочники.ВнешниеОбработки.НайтиПоНаименованию(""Проба"").МояПроцедура"); Ошибка компиляции Так Выполнить("Справочники.ВнешниеОбработки.НайтиПоНаименованию(""Проба"").МояПроцедура()"); Встроенный язык: Строка 1: Метод объекта не обнаружен (МояПроцедура) |
|||
7
vde69
10.08.15
✎
16:17
|
Справочник[имяспр].мояпроцедура()
|
|||
8
aspirator23
10.08.15
✎
16:20
|
(7) Тут главная идея обратится по динамическому имени.
Т.е. МояПроцедура - это в этом примере так, а завтра хочу вызвать ТвояПроцедура, или "СоседскаяПроцедура". |
|||
9
vde69
10.08.15
✎
16:22
|
Ааааа=справочник[имч]
выполнить("ааааа."+имяпроцедуры+"()") |
|||
10
Nuobu
10.08.15
✎
16:22
|
(8) Если Твоей, моей или соседской процедуры там не будет, то не обратишься.
Оберни в попытку и вызывай по очереди. |
|||
11
aspirator23
10.08.15
✎
16:24
|
(9) Это падает в (6) описано - второй случай
(10) Конечно, все процедуры в обработке есть. И Моя и твоя и соседская. Все они экспортные. |
|||
12
vde69
10.08.15
✎
16:27
|
В 6 написан бред...
ты пытанся найти ссылку, у ссылки нет процедур обращайся или к объекту или к менеджеру |
|||
13
sash-ml
10.08.15
✎
16:28
|
так вызывай из внешней обработки а не из справочника, сохрани ее куда-нибудь из хранилища значений что ли
|
|||
14
Nuobu
10.08.15
✎
16:28
|
(11) ВнешОтчет = Справочники.ВнешниеОбработки.НайтиПоНаименованию("Рабочий стол (отчет)");
Если ВнешОтчет <> Справочники.ВнешниеОбработки.ПустаяСсылка() Тогда ДвоичныеДанные = ВнешОтчет.ХранилищеВнешнейОбработки.Получить(); ИмяФайла = ПолучитьИмяВременногоФайла(); ДвоичныеДанные.Записать(ИмяФайла); Обработка = ВнешниеОтчеты.Создать(ИмяФайла); ВЫполнить("Обработка.ТвояПроцедура()"); КонецЕсли; |
|||
15
Nuobu
10.08.15
✎
16:29
|
(14) взял из v8: справочник внешние обработки
|
|||
16
aspirator23
10.08.15
✎
16:32
|
(12) Ты прав. Тоже увидел. Изменил
Выполнить("Справочники.ВнешниеОбработки.НайтиПоНаименованию(""Проба"").ПолучитьОбъект().МояПроцедура"); Ошибки теже (15) Спасибо, понял в чем ошибка. |
|||
17
vde69
10.08.15
✎
16:42
|
(16)скобок нет, нельзя выполнить переменную
|
|||
18
aspirator23
10.08.15
✎
16:43
|
(17) Да, верно, (13) и (14) ткнули носом в нужном направлении.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |