Имя: Пароль:
1C
1С v8
Определить использование общего модуля
0 cons74
 
17.06.16
16:53
Пишу отчет. Надо чтоб работал в 2х базах (УПП и БП). В одной есть Общий модуль Модуль1, а в другой - Модуль2.
Как написать так, чтобы при открытии в базе, где нет одного из модулей - не возникало ошибки?
1 Волшебник
 
модератор
17.06.16
16:54
Выполнить("текст")
2 Зая Бусечка
 
17.06.16
16:55
Пиши отчёт так, чтобы эти модули не использовались.
3 xxTANATORxx
 
17.06.16
16:56
(0)в БСП смотри как сделано
4 FIXXXL
 
17.06.16
16:56
Метаданные.ОбщиеМодули.Найти(ИмяМодуля)
5 Nuobu
 
17.06.16
17:00
(0) Если Метаданные.ИмяКонфигурации = "Бушка" Тогда
Модуль2
ИначеЕсли Метаданные.ИмяКонфигурации = "Упэпэшка" Тогда
Модуль1
КонецЕсли;
6 mehfk
 
17.06.16
17:02
(0) Кусок работающего кода

            // УТ 10.3
            
            Если Метаданные.ОбщиеМодули.Найти("ОбработкаТабличныхЧастей") <> Неопределено Тогда
                Выполнить("
                |Попытка
                |    ОбработкаТабличныхЧастей.ПриИзмененииСуммыТабЧасти(НоваяСтрока, ДокументПоступления, глЗначениеПеременной(""глТекущийПользователь""));
                |Исключение
                |КонецПопытки;
                |");
            КонецЕсли;
            
            // Розница 2.1
            
            Если Метаданные.ОбщиеМодули.Найти("ОбработкаТабличнойЧастиТоварыСервер") <> Неопределено Тогда
                
                Выполнить("
                |Попытка
                |    СтруктураТЧ.Вставить(""ТекущаяСтрока"", НоваяСтрока);
                |    ОбработкаТабличнойЧастиТоварыСервер.ПриИзмененииРеквизитовВТЧСервер(СтруктураТЧ, СтруктураДействий, Неопределено);
                |Исключение
                |КонецПопытки;
                |");
                
            КонецЕсли;
7 Tateossian
 
17.06.16
17:18
(5) Это омнокод, лучше такие вещи делать через метеданные.
8 Cyberhawk
 
17.06.16
18:18
(5) При открытии такой обработки должна быть ошибка компиляции , если не через "Выполнить" идет обращение к муодулям
9 Beretta
 
17.06.16
18:41
Только не выполнить, а вычислить.

если метаданные.общиемодули.найти("модуль1")<>неопределено тогда
моймодуль=вычислить("модуль1")
иначеесли метаданные.общиемодули.найти("модуль2")<>неопределено тогда
моймодуль=вычислить("модуль2")
иначе
вызватьисключение("а я томат")
конецесли

моймодуль.суперпроцедура()