|
Проверить существование общего модуля | ☑ | ||
---|---|---|---|---|
0
Stim
17.03.15
✎
10:29
|
Добрый день.
Есть обработка, работающая на типовой БП 3.0. Но в связи с тем, что разработчики делают мигрирование процедур/функций из одного общего модуля в другой, приходится делать несколько версий обработки. В некоторых версиях - отличия только в наименовании общего модуля. Хотелось бы оставить одну универсальную версию, проверяя общие модули в базе. Через попытку сделать не получается, выдается ошибка. как бы так сделать по-правильному? |
|||
1
butterbean
17.03.15
✎
10:31
|
метаданные.общиеМодули
|
|||
2
patria0muerte
17.03.15
✎
10:31
|
А если так:
ОбщийМодуль = Метаданные.ОбщиеМодули.Найти( и далее... Или из внешней обработки не вызовется? |
|||
3
pessok
17.03.15
✎
10:33
|
общий модуль то никуда не денется, скорее всего, а вот метод из него могут удалить, так что, скорее всего, не взлетит. можно костыли понаставить в виде Попытка Исключение, но тоже моветон. Лучше уж сделать зависимость от версии конфы, имхо
|
|||
4
Поpyчик-4
17.03.15
✎
10:34
|
(0)
&НаСервереБезКонтекста Функция ЕстьОбщийМодуль(НазваниеМодуля) Возврат Метаданные.ОбщиеМодули.Найти(НазваниеМодуля) <> Неопределено; КонецФункции Если ЕстьОбщийМодуль("ОбменДаннымиПовтИсп") Тогда Результат = Вычислить("ОбменДаннымиПовтИсп.ПланыОбменаБСП().Найти(ТекущийПланОбмена) <> Неопределено"); Элементы.СписокУзловОбменаВыполнитьОбменДанными.Видимость = Результат; КонецЕсли; |
|||
5
Stim
17.03.15
✎
10:35
|
(2) и далее
не сработает Если Метаданные.ОбщиеМодули.Найти("общийМодуль1") <> Неопределенно Тогда ОбщийМодуль1.Процедура(); Иначеесли Метаданные.ОбщиеМодули.Найти("общийМодуль2") <> Неопределенно Тогда ОбщийМодуль2.Процедура(); КонецЕсли; будет открываться с ошибкой в коде, потому что какого-то общего модуля нет |
|||
6
Stim
17.03.15
✎
10:35
|
(3) про версии тоже думал, но лень перебирать все сборки, смотреть, в какой что изменилось
|
|||
7
patria0muerte
17.03.15
✎
10:36
|
(5) Так через Выполнить("ОбщийМодуль1.Процедура") можно сделать наверное... хотя опять же - параметры как...
|
|||
8
Поpyчик-4
17.03.15
✎
10:36
|
(6) Выполнить("Ваш код");
|
|||
9
Stim
17.03.15
✎
10:38
|
(7) (8) да, сделаю через выполнить(), спасибо
|
|||
10
Stim
17.03.15
✎
10:38
|
(7) параметры одинаковые
УправлениеКонтактнойИнформацией.ПредыдущаяСтруктураКонтактнойИнформацииXML и КонтактнаяИнформацияСлужебный.ПредыдущаяСтруктураКонтактнойИнформацииXML кому интересно |
|||
11
Поpyчик-4
17.03.15
✎
10:42
|
(10) Вот ещё для интереса
http://forum.aeroion.ru/topic820.html#5664 |
|||
12
patria0muerte
17.03.15
✎
10:48
|
(10) Да я просто как то выполнить() не пользовал в работе. Параметры туда вообще реально передать? Т.е. такая конструкция взлетит:
Параметры = Новый СТруктура("Параметр1", Параметр1); ВЫполнить("ОбщийМодуль1.ПРоцедура111(Параметры)"); ? |
|||
13
Stim
17.03.15
✎
10:52
|
(12) да
|
|||
14
Stim
17.03.15
✎
10:53
|
+ выполнится везде, кроме веб-клиента( интересно, почему)
|
|||
15
pessok
17.03.15
✎
10:55
|
чтобы всякие html - лютые не запихнули в потенциально опасный "Выполнить"
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |