Пишу в консолидации процедуру заполнения, эта процедура выполняется командой Выполнить.
В этой процедуре используется следующий код:
#Если Клиент ИЛИ ВнешнееСоединение Тогда
База = ОбщегоНазначения.ПолучитьСоединение(глТаблицаПодключений, ИспользуемаяИБ, 1);
#ИначеЕсли Сервер Тогда
База = УправлениеСоединениямиВИБ.ПолучитьСоединение(ИспользуемаяИБ, 1);
#Иначе
База = Неопределено;
#КонецЕсли
При выполнении данного кода вне процедуры Выполнить все замечательно, при выполнении внутри процедуры Выполнить всегда попадает в #Иначе независимо от того, на сервере выполняется или на клиенте.
Подскажите, пожалуйста, это баг или фича? Где может выполняться данный код, если не на сервере и не на клиенте?
Код методом/оператором Выполнить выполняется всегда в том контексте, где запущен. Если хочется на сервере, то надо делать серверную функцию, внутри которой будет Выполнить.
(2) Я кстати возможно не совсем корректно сформулировал правило, хотя пример его четко поясняет.
Думаю правильнее будет
"Метод Выполнить все термы-значения в директивах препроцессора считает равными Ложь".
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.