helpf.pro
Регистрация
#Если ()

1C v 8.2
Синтаксис:
Код 1C v 8.2 УП
 #Если <Логическое выражение> Тогда
#ИначеЕсли <Логическое выражение> Тогда

#Иначе
#КонецЕсли

где:
<Логическое выражение> = [НЕ] <Символ препроцессора> [<Булева операция> [НЕ] <Символ препроцессора> [<Булева операция> [НЕ] <Символ препроцессора>]…]
<Символ препроцессора> = {НаКлиенте | НаСервере | ТолстыйКлиентОбычноеПриложение | ТолстыйКлиентУправляемоеПриложение | Клиент | Сервер | ВнешнееСоединение }
<Булева операция> = {И | ИЛИ}

Используемые термы:
#Если (#If)
#Тогда (#Then)
#ИначеЕсли (#ElsIf)
#Иначе (#Else)
#КонецЕсли (#EndIf)
Клиент (Client)
НаКлиенте (AtClient)
НаСервере (AtServer)
ТолстыйКлиентОбычноеПриложение(ThickClientOrdinaryApplication)
ТолстыйКлиентУправляемоеПриложение (ThickClientManagedApplication)
Сервер (Server)
ВнешнееСоединение (ExternalConnection)
ТонкийКлиент (ThinClient)
ВебКлиент (WebClient)
И (AND)
ИЛИ (OR)
НЕ (NOT)
Регистр букв (строчные или заглавные) при написании не имеет значения.

Описание использования:
В варианте клиент-сервер
Если используется клиент–серверный вариант запуска системы 1С:Предприятие, то можно организовывать выполнение различных процедур и функций на сервере приложения или на клиентском месте.

Для выполнения на сервере (инструкции Сервер и НаСервере равнозначны):
#Если НаСервере Тогда

#КонецЕсли
Для того, чтобы процедура присутствовала и была вызвана на стороне сервера, фрагмент кода должен выглядеть следующим образом:
#Если Сервер Тогда
Процедура Проц1() Экспорт

КонецПроцедуры
#КонецЕсли
Важно! В приведенном тексте ВСЯ процедура, а не ее часть находится внутри блока #Если Сервер Тогда … #КонецЕсли.

При запуске конфигурации на выполнение производится загрузка и компиляция конфигурации. Экземпляры всех общих модулей создаются как на серверной, так и на клиентской стороне. Если в каком-то из общих модулей содержится приведенный фрагмент кода, то он в соответствии с инструкцией препроцессора #Если Сервер Тогда … #КонецЕсли будет скомпилирован только на стороне сервера, а на стороне клиента данный фрагмент «выпадет» из компилируемого текста и, таким образом, процедура на стороне клиента не будет представлена совсем.
Далее, при компиляции на стороне клиента модулей, в которых содержится обращение к данной процедуре, будет произведен ее поиск на стороне клиента. На стороне клиента таковой процедуры нет, следовательно, она не будет найдена. Тогда будет произведен поиск процедуры в общих модулях на стороне сервера, где она будет обнаружена и все вызовы будут переправляться для выполнения на сервер 1С:Предприятия.

Если блок #Если Сервер Тогда … #КонецЕсли включает только часть процедуры, то процедура будет присутствовать как на стороне клиента, так и на стороне сервера. Только на клиентской стороне она будет без той части, которая заключена в блок, поэтому результат выполнения процедуры может зависеть от того, где обрабатывается вызов этой процедуры.

Для выполнения на клиентском месте в обычном и управляемом режиме:
Код 1C v 8.2 УП
 #Если НаКлиенте Тогда

#КонецЕсли

или
#Если Клиент Тогда

#КонецЕсли


Инструкция препроцессора НаКлиенте (AtClient) определена для всех клиентских приложений. Для тонкой подстройки модуля под конкретное клиентское приложение дополнительно введены инструкции ТолстыйКлиентОбычноеПриложение (ThickClientOrdinaryApplication), ТолстыйКлиентУправляемоеПриложение (ThickClientManagedApplication), ТонкийКлиент (ThinClient) и ВебКлиент (WebClient), которые определены в соответствующих приложениях.
Для выполнения на клиенте:
#Если ТолстыйКлиентОбычноеПриложение Тогда

#КонецЕсли
#Если ТолстыйКлиентУправляемоеПриложение Тогда

#КонецЕсли
Для выполнения на тонком клиенте:
#Если ТонкийКлиент Тогда

#КонецЕсли
Для выполнения на веб-клиенте:
#Если ВебКлиент Тогда

#КонецЕсли

В файл–серверном варианте
В обычном клиенте в обычном и управляемом режиме доступны НаКлиенте, Клиент, ТолстыйКлиентОбычноеПриложение, ТолстыйКлиентУправляемоеПриложение , НаСервере, Сервер.
В файловом варианте инструкции препроцессору #Если Сервер…, #Если Клиент…, #Если ТолстыйКлиентОбычноеПриложение или #Если ТолстыйКлиентУправляемоеПриложение… пропускаются, поэтому экземпляр кода будет присутствовать всегда.
В тонком клиенте доступны – ТонкийКлиент, НаКлиенте, Клиент.
На серверной части тонкого клиента – Сервер, НаСервере.
Во внешнем соединении – ВнешнееСоединение, НаСервере, Сервер.

В сессии СОМ-соединения
Для включения возможности использования процедур и функций в сессии внешнего соединения применяется инструкция препроцессора.
Код 1C v 8.2 УП
 #Если ВнешнееСоединение Тогда

#КонецЕсли


1C v 8.0 - 8.1
Синтаксис:
Код 1C v 8.х
  #Если <Логическое выражение> Тогда
#ИначеЕсли <Логическое выражение> Тогда

#Иначе
#КонецЕсли

где:
<Логическое выражение> = [НЕ] <Символ препроцессора> [<Булева операция> [НЕ] <Символ препроцессора> [<Булева операция> [НЕ] <Символ препроцессора>]…]
<Символ препроцессора> = {Клиент | Сервер | ВнешнееСоединение }
<Булева операция> = {И | ИЛИ}

Используемые термы:
#Если (#If)
#Тогда (#Then)
#ИначеЕсли (#ElsIf)
#Иначе (#Else)
#КонецЕсли (#EndIf)
Клиент (Client)
Сервер (Server)
ВнешнееСоединение (ExternalConnection)
И (AND)
ИЛИ (OR)
НЕ (NOT)
Регистр букв (строчные или заглавные) при написании не имеет значения.

Описание использования:
В варианте клиент-сервер
Если используется клиент–серверный вариант запуска системы 1С:Предприятие, то можно организовывать выполнение различных процедур и функций на сервере приложения или на клиентском месте.

Для выполнения на сервере:
Код 1C v 8.х
    #Если Сервер Тогда

#КонецЕсли


Для выполнения на клиентском месте:
Код 1C v 8.х
    #Если Клиент Тогда

#КонецЕсли


Для того, чтобы процедура присутствовала и была вызвана на стороне сервера, фрагмент кода должен выглядеть следующим образом:
#Если Сервер Тогда
Процедура Проц1() Экспорт

КонецПроцедуры
#КонецЕсли

Важно! В приведенном тексте ВСЯ процедура, а не ее часть находится внутри блока #Если Сервер Тогда … #КонецЕсли.

При запуске конфигурации на выполнение производится загрузка и компиляция конфигурации. Экземпляры всех общих модулей создаются как на серверной, так и на клиентской стороне. Если в каком-то из общих модулей содержится приведенный фрагмент кода, то он в соответствии с инструкцией препроцессора #Если Сервер Тогда … #КонецЕсли будет скомпилирован только на стороне сервера, а на стороне клиента данный фрагмент «выпадет» из компилируемого текста и, таким образом, процедура на стороне клиента не будет представлена совсем.

Далее, при компиляции на стороне клиента модулей, в которых содержится обращение к данной процедуре, будет произведен ее поиск на стороне клиента. На стороне клиента таковой процедуры нет, следовательно, она не будет найдена. Тогда будет произведен поиск процедуры в общих модулях на стороне сервера, где она будет обнаружена и все вызовы будут переправляться для выполнения на сервер 1С:Предприятия.

Если блок #Если Сервер Тогда … #КонецЕсли включает только часть процедуры, то процедура будет присутствовать как на стороне клиента, так и на стороне сервера. Только на клиентской стороне она будет без той части, которая заключена в блок, поэтому результат выполнения процедуры может зависеть от того, где обрабатывается вызов этой процедуры.

В файл–серверном варианте
В файловом варианте инструкции препроцессору #Если Сервер… и #Если Клиент… определены всегда, поэтому экземпляр кода будет присутствовать всегда.

В сессии СОМ-соединения
Для включения возможности использования процедур и функций в сессии внешнего соединения применяется инструкция препроцессора.
Код 1C v 8.х
   #Если ВнешнееСоединение Тогда

#КонецЕсли


1C v 7.x
Описание отсутствует!
Разместил: E_Migachev Дата: 30.11.2009 Прочитано: 57581

Просмотр примеров использования "#Если" в Вопросах и Ответах, доступен только зарегистрированным пользователям!
Пожалуйста, войдите или зарегистрируйтесь!

Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.