Имя: Пароль:
1C
1С v8
Чудят директивы компиляции? Или я что-то не так делаю?
0 GlebHappy
 
15.11.16
15:03
Всем знатокам хорошего дня.
Возник вопрос - определить клиент, в котором открыта управляемая форма, и в зависимости от этого сделать в ней некоторые изменения перед запуском.
Решил воспользоваться директивами компиляции.
Создал клиентский общий модуль и добавил туда функцию такого вот вида:

Функция ПолучитьРежимЗапуска() Экспорт
    РежимЗапуска = Неопределено;
    #Если ТонкийКлиентУправляемоеПриложение Тогда
        РежимЗапуска = "ТонкийКлиент";
    #ИначеЕсли ВебКлиент Тогда
        РежимЗапуска = "ВебКлиент";
    #ИначеЕсли ТолстыйКлиентУправляемоеПриложение Тогда
        РежимЗапуска = "ТолстыйКлиент";
    #КонецЕсли
    
    Возврат РежимЗапуска;
КонецФункции

Начал проверять.
На толстом клиенте всё нормально, выполняется присваивание в нужной ветке.
А вот в тонком при отладке игнорируется весь блок #Если ... #КонецЕсли
1 GlebHappy
 
15.11.16
15:03
Мне кажется, или это не совсем ожидаемое поведение?
Синтакс-помощник уже покурил)
2 NafBF
 
15.11.16
15:06
(0) потому что выполняется на сервере?
3 NafBF
 
15.11.16
15:08
и это в терминологии 1С не "Директивы компиляции", а "Инструкции препроцессора"
4 НЕА123
 
15.11.16
15:08
#Если ТонкийКлиент Тогда
5 NafBF
 
15.11.16
15:09
и да "ТонкийКлиентУправляемоеПриложение" такого нет терма
6 GlebHappy
 
15.11.16
16:28
(5) Спасибо, добрый человек, моя очепятка, исправил, и всё заработало как планировалось) Видимо, там есть некий базовый синтаксический контроль на инструкции, но по ходу оно при наличии ошибок просто несется дальше без выдачи сообщений.
7 Лефмихалыч
 
15.11.16
16:31
(0) перед функцией нет &НаКлиенте, соответственно - она на сервере выполняется, а там всего этого блока и нет