Имя: Пароль:
1C
1С v8
Универсальный код для разный конфигураций
0 Slon747
 
15.12.17
16:46
8.3
Пытаюсь создать универсальный код для 2-х конфигураций.
Но даже если условие не соблюдается, всё равно ругается на отсутствие общего модуля:

Функция ПолучитьКурсВалюты(Валюта, Дата) Экспорт

    Если УТ_11() Тогда
        Возврат РаботаСКурсамиВалют.ПолучитьКурсВалюты(Валюта, Дата);
    Иначе
        Возврат МодульВалютногоУчета.ПолучитьКурсВалюты(Валюта, Дата);
    КонецЕсли;

КонецФункции


Есть ли удобный вариант обхода?
Может как-то директивой препроцессора или еще как?
1 lodger
 
15.12.17
16:48
Выполнить (Execute)
Синтаксис:
Выполнить(<Строка>)

Параметры:
<Строка>
Строка, содержащая текст исполняемого кода.

Описание:
Позволяет выполнить фрагмент кода, который передается ему в качестве строкового значения.

Примечание:
В режиме запуска веб-клиент оператор не поддерживается, при его вызове будет сгенерировано исключение.

В режимах запуска мобильного приложения оператор не поддерживается в операционной системе iOS.
2 lodger
 
15.12.17
16:49
Функция ПолучитьКурсВалюты(Валюта, Дата) Экспорт

    Если УТ_11() Тогда
        Выполнить ("Структура = РаботаСКурсамиВалют.ПолучитьКурсВалюты(Валюта, Дата)");
    Иначе
        Выполнить ("Структура = МодульВалютногоУчета.ПолучитьКурсВалюты(Валюта, Дата)");
    КонецЕсли;

Возврат Структура;
КонецФункции
3 lodger
 
15.12.17
16:50
что-то в этом духе. без отладчика точнее не скажу.
4 mehfk
 
15.12.17
16:50
(2) см в СП "Вычислить"
5 lodger
 
15.12.17
16:51
(4) ну или так.
выполнить для процедур
вычислить для функций
6 AlexTim03
 
15.12.17
16:52
В типовых посмотри, как делают.
Общий модуль - это тоже объект и можно проверить его наличие
7 nordbox
 
15.12.17
16:55
(0)> всё равно ругается на отсутствие общего модуля:
он там есть?
8 nordbox
 
15.12.17
16:56
Даже при отсутствие компилятор то все равно проверяет условие компилирует его
9 nordbox
 
15.12.17
16:56
+8 при отсутствии общего модуля
10 Мыш
 
15.12.17
17:04
(0) МодульПолученияКурсовВалют = ОбщегоНазначения.ОбщийМодуль("МойОбщийМодуль");
11 hhhh
 
15.12.17
17:07
(10) это ничем не поможет. то же самое. в конфах может не быть ОбщегоНазначения.ОбщийМодуль()
12 Мыш
 
15.12.17
17:08
(11) Это поможет для типовых конфигураций. Не для всех, да.
13 nordbox
 
15.12.17
17:09
Мыш, да там другое, РАЗНЫЕ конфы, в одной модуль есть, в другой нет, а ТС думает что при отсутствии модуля, компилятор проглотит хотелку
ТС народным творчеством занимается наверное
14 Мыш
 
15.12.17
17:11
(13) Я понял, что разные. Одна из них УТ 11, в которой используется БСП. Про вторую ничего не сказано. Т.е. допустима БП, например.
15 Slon747
 
15.12.17
17:17
(5) Спасибо. Работает.
16 D3O
 
15.12.17
18:15
(0) в БСП (и всех типовых) есть ОбщегоНазначения.ПодсистемаСуществует(ИмяПодсистемы)

а дальше используешь
Модуль = ОбщегоНазначения.ОбщийМодуль(ИмяМодуля)
Модуль.вызовНужнойФункции
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс