|   |   | 
| 
 | Проверить существование общего модуля | ☑ | ||
|---|---|---|---|---|
| 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 - лютые не запихнули в потенциально опасный "Выполнить"     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |