Каждый разработчик желает знать где выполняется код. Клиент или Сервер? #194906


#0 by Моха Лёхов
Как-то непрозрачна эта тема. Вот пишу я в код процедуру, в комментарии к которой написано: "не выполняется на сервере 1С:Предприятия", ... и как мне при этом узнать, где будет выполняться мой код, есть ли какие-нибудь на эту тему комментарии? Прим. Прошу не путать с #Если Сервер и #Если Клиент, т.к. в этих случаях НЕ УСТАНАВЛИВАЕТСЯ место выполнения кода, а просто ПРОВЕРЯЕТСЯ.
#1 by vasinok
ждем книгу "Профессиональная разработка в системе 1С:Предприятие 8.0"
#2 by Моха Лёхов
А до нее лучше молчать чем говорить?
#3 by Херрес
если вызовется с сервера - будет выполняться на сервере. Если с клиента - то на клиенте. Либо не выполнится вовсе.
#4 by Моха Лёхов
И как при написании кода узнать откуда вызовется?
#5 by Моха Лёхов
+ А то как в том анеке "Как отличить зайца от зайчихи".
#6 by fishca
Для указания разрешения использования процедур и функций общих модулей и модулей объектов используют инструкции препроцессору. Синтаксис: … #Иначе #КонецЕсли где: <Логическое выражение> = [НЕ] <Символ препроцессора> [<Булева операция> [НЕ] <Символ препроцессора> [<Булева операция> [НЕ] <Символ препроцессора>]…] <Символ препроцессора> = {Клиент | Сервер | ВнешнееСоединение } <Булева операция> = {И | ИЛИ} Используемые термы:   НЕ (NOT) Регистр букв (строчные или заглавные) при написании не имеет значения. Описание использования: В варианте клиент-сервер Если используется клиент–серверный вариант запуска системы 1С:Предприятие, то можно организовывать выполнение различных процедур и функций на сервере приложения или на клиентском месте. Для выполнения на сервере: #Если Сервер Тогда … #КонецЕсли Для выполнения на клиентском месте: #Если Клиент Тогда … #КонецЕсли Для того, чтобы процедура присутствовала и была вызвана на стороне сервера, фрагмент кода должен выглядеть следующим образом: #Если Сервер Тогда … КонецПроцедуры #КонецЕсли Важно! В приведенном тексте ВСЯ процедура, а не ее часть находится внутри блока #Если Сервер Тогда … #КонецЕсли. При запуске конфигурации на выполнение производится загрузка и компиляция конфигурации. Экземпляры всех общих модулей создаются как на серверной, так и на клиентской стороне. Если в каком-то из общих модулей содержится приведенный фрагмент кода, то он в соответствии с инструкцией препроцессора #Если Сервер Тогда … #КонецЕсли будет скомпилирован только на стороне сервера, а на стороне клиента данный фрагмент «выпадет» из компилируемого текста и, таким образом, процедура на стороне клиента не будет представлена совсем. Далее, при компиляции на стороне клиента модулей, в которых содержится обращение к данной процедуре, будет произведен ее поиск на стороне клиента. На стороне клиента таковой процедуры нет, следовательно, она не будет найдена. Тогда будет произведен поиск процедуры в общих модулях на стороне сервера, где она будет обнаружена и все вызовы будут переправляться для выполнения на сервер 1С:Предприятия. Если блок #Если Сервер Тогда … #КонецЕсли включает только часть процедуры, то процедура будет присутствовать как на стороне клиента, так и на стороне сервера. Только на клиентской стороне она будет без той части, которая заключена в блок, поэтому результат выполнения процедуры может зависеть от того, где обрабатывается вызов этой процедуры. В файл–серверном варианте В файловом варианте инструкции препроцессору #Если Сервер… или #Если Клиент… пропускаются, поэтому экземпляр кода будет присутствовать всегда. В сессии СОМ-соединения Для включения возможности использования процедур и функций в сессии внешнего соединения применяется инструкция препроцессора. #Если ВнешнееСоединение Тогда … #КонецЕсли
#7 by Херрес
1. найти места откуда вызывается код (глобальным поиском) 2. узнать где выполняется место, откуда вызывается код (как - см. 1)
#8 by Моха Лёхов
Откуда текст, источник можно узнать?
#9 by Samosval
она разве еще не продается ?
#10 by Samosval
в Питер-пресс по моему уже анонс был ...
#11 by root
сунь в эту процедуру бесконечный цикл и посмотри где нагрузка на камушек будет больше. на клиенте или на сервере
#12 by root
напиши в процедуру реальную обработку для реальной задачи, сделай три замера: 1-ый без директив, 2 - с директивой для сервера, 3- для клиента; сравни результаты-получишь выводы
#13 by Neco
Можно использовать тот факт что некоторые процедуры на сервере не выполянются:
#14 by vde69
... ... ...
#15 by vasinok
из справки
#16 by Волшебник
Такой модуль даже не будет скомпилирован.
#17 by fishca
Моха Лёхов - синтакс-помощник, релиз 15.
#18 by Diman000
Вопрос такой. Если я правильно понял ситуацию, что код выполняется там, где создан объект, это значит, что модули проведения документов, вводимых пользователями, всегда будут скомпилированы на клиенте, но не на сервере.
#19 by SilentMan
Однако перепроведение документов из серверного общего модуля приведет к тому, что модули проведения будут скомпилированы на серверной стороне. Именно поэтому и нужны операторы препроцессора внутри процедур/функций.
#20 by Vozhd
если документ интерактивно проводится пользователем, то модуль проведения выполняется всегда на клиенте
#21 by ottto
Где будет исполнен этот код? #Если Сервер
#22 by Diman000
Если ДокументОбъект будет создан на клиенте (например, введен пользователем интерактивно), то, имхо, этот код вообще не скомпилируется. А если на сервере, то, естественно, на сервере.
#23 by Гений 1С
В КЗ почитай мои статьи, там подробно написано... :)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С