![]() |
![]() |
![]() |
|
Клиент и НаКлиенте - разница? | ☑ | ||
---|---|---|---|---|
0
mikecool
29.09.09
✎
14:58
|
Клиент оставили для совместимости?
|
|||
1
ShoGUN
29.09.09
✎
15:56
|
Основное отличие инструкций препроцессора от директив компиляции заключается в том, что инструкции препроцессора описывают, где компилируется
код, а директивы компиляции указывают, где нужно компилировать код. Кроме того, инструкции препроцессора могут располагаться как внутри процедур и функций, в то время как директивы компиляции могут располагаться только перед описанием процедуры, функции или переменной (для модуля формы). Другими словами, использование в коде инструкции препроцессора вида: #Если Сервер Тогда … #КонецЕсли указывает, что код, расположенный внутри условия, может быть скомпилирован (и исполнен) только на стороне сервера. Однако использование в коде директиву компиляции вида: &НаКлиенте Процедура МояПроцедура() … КонецПроцедуры указывает, что процедура после директивы компиляции должна быть скомпилирована (и исполнена) только на стороне клиента. (цы) |
|||
2
Fragster
гуру
29.09.09
✎
15:58
|
(1) чО?
|
|||
3
Dionisious
29.09.09
✎
15:59
|
Директива компиляции указывает где выполнять процедуру. А инструкция препроцессора указывает как скомпилировать код в зависимости от того где он выполняется.
|
|||
4
ShoGUN
29.09.09
✎
16:00
|
(2) Текст не мой :) Я согласен, что написано очень мутно :) Ну если совсем просто и коротко - директивы могут только в определенных местах в коде использоваться, а инструкции препроцессора - в любом месте.
|
|||
5
mikecool
29.09.09
✎
16:00
|
Инструкции препроцессору
Для указания разрешения использования процедур и функций общих модулей и модулей объектов используют инструкции препроцессору. Синтаксис: #Если <Логическое выражение> Тогда #ИначеЕсли <Логическое выражение> Тогда … #Иначе #КонецЕсли где: <Логическое выражение> = [НЕ] <Символ препроцессора> [<Булева операция> [НЕ] <Символ препроцессора> [<Булева операция> [НЕ] <Символ препроцессора>]…] <Символ препроцессора> = {НаКлиенте | НаСервере | ТолстыйКлиентОбычноеПриложение | ТолстыйКлиентУправляемоеПриложение | Клиент | Сервер | ВнешнееСоединение } <Булева операция> = {И | ИЛИ} Используемые термы: #Если (#If) #Тогда (#Then) #ИначеЕсли (#ElsIf) #Иначе (#Else) #КонецЕсли (#EndIf) Клиент (Client) НаКлиенте (AtClient) НаСервере (AtServer) ТолстыйКлиентОбычноеПриложение(ThickClientOrdinaryApplication) ТолстыйКлиентУправляемоеПриложение (ThickClientManagedApplication) Сервер (Server) ВнешнееСоединение (ExternalConnection) ТонкийКлиент (ThinClient) ВебКлиент (WebClient) И (AND) ИЛИ (OR) НЕ (NOT) тут есть хоть слово про директивы? |
|||
6
GROOVY
модератор
29.09.09
✎
16:01
|
Управляемые формы располагаются одновременно и на стороне сервера и на стороне клиента. Директивы & указывают где будет выполнятся эта процедура.
|
|||
7
mikecool
29.09.09
✎
16:01
|
(1) "Основное отличие инструкций препроцессора от директив компиляции заключается в том, что инструкции препроцессора описывают, где компилируется
код, а директивы компиляции указывают, где нужно компилировать код. " - масло масляное? :)) |
|||
8
Господин ПЖ
29.09.09
✎
16:02
|
про инструкции препроцессора можно забыть имхо, ибо смысла в них нет если под управляемый режим писать
|
|||
9
mikecool
29.09.09
✎
16:02
|
(6) пример приведи, пожалста
|
|||
10
ShoGUN
29.09.09
✎
16:03
|
(5) Значит я тебя не понял. По идее ИНСТРУКЦИИ Клиент и НаКлиенте - просто синонимы.
(7) Блин, это цитата из ЖКК 1С, фигли мне претензии предъявляете? |
|||
11
Господин ПЖ
29.09.09
✎
16:03
|
(7) читай (6)
|
|||
12
GROOVY
модератор
29.09.09
✎
16:05
|
(9)
&НаКлиенте Процедура ОрганизацияПриИзменении() //Вызовем серверную функцию для обращения к БД и чтению константы ОсновнаяОрганизация = ПолучитьОрганизациюПоУмолчанию(); КонецПроцедуры &НаСервереБезКонтекста Функция ПолучитьОрганизациюПоУмолчанию() Возврат Константы.ОсновнаяОрганизация.Получить(); КонецФункции |
|||
13
ShoGUN
29.09.09
✎
16:06
|
(6) О, теперь и мне понятней стало...
|
|||
14
mikecool
29.09.09
✎
16:07
|
(12) сочетания инструкций и директив допускаются?
или что будет в случае: &НаСервере Функция ПолучитьОрганизациюПоУмолчанию() #Если Клиент Тогда .... #КонецЕсли Возврат Константы.ОсновнаяОрганизация.Получить(); КонецФункции ? |
|||
15
mikecool
29.09.09
✎
16:09
|
+14 кусок #Если Клиент будет проигнорирован?
|
|||
16
Господин ПЖ
29.09.09
✎
16:10
|
а смысл этот кусок туда совать?
|
|||
17
ShoGUN
29.09.09
✎
16:11
|
(14) Кусок в условии просто будет пропущен, если я всё правильно понял. Имхо инструкции - скорей для общих модулей, директивы - для управляемых форм. Комбинировать можно, но смысла от этого немного.
|
|||
18
mikecool
29.09.09
✎
16:11
|
и кстати - вопрос в топике немного звучал по другому, в свете набора инструкций (5) как соотносятся?
|
|||
19
mikecool
29.09.09
✎
16:12
|
(16) в жизни всякое бывает :)
|
|||
20
mikecool
29.09.09
✎
16:12
|
+19 хочется основы понять, а не тупо быдлокодить :)
|
|||
21
ShoGUN
29.09.09
✎
16:12
|
(18)
Для выполнения на клиентском месте в обычном и управляемом режиме: #Если НаКлиенте Тогда … #КонецЕсли или #Если Клиент Тогда … #КонецЕсли Из справки, т.е. это синонимы, оставлено для совместимости. |
|||
22
acsent
29.09.09
✎
16:13
|
В версии документации, которая находится на сентябрьском ИТС, данный раздел переработан (5.8.1.1). Надеемся, что стало лучше.
P.S. Теперь этот раздел имеет номер 4.8.1.1. С партнерского по этой же теме |
|||
23
GROOVY
модератор
29.09.09
✎
16:14
|
Процедуры управляемых форм исполняются ЛИБО на клиенте ЛИБО на сервере, вставлять внутрь эти инструкции (#) не имеет смысла.
|
|||
24
Ненавижу 1С
гуру
29.09.09
✎
16:14
|
Если я в серверном общем модуле напишу &НаКлиенте что будет?
|
|||
25
ShoGUN
29.09.09
✎
16:14
|
А, еще! Директивы компиляции работают и в файл-серверном режиме, инструкции препроцессора - только в клиент-серверном.
|
|||
26
mikecool
29.09.09
✎
16:15
|
(24) имхо - игнор функции
|
|||
27
mikecool
29.09.09
✎
16:34
|
решил почитать на эту тему ИТС...
кто придумал термины "частотные" и "нечастотные" применимо к командам? чего-то слух режет... |
|||
28
SilentMan
29.09.09
✎
22:51
|
(25) Не фантазируй
|
|||
29
ShoGUN
30.09.09
✎
00:02
|
(28) В файловом варианте инструкции препроцессору #Если Сервер…, #Если Клиент…, #Если ТолстыйКлиентОбычноеПриложение или #Если ТолстыйКлиентУправляемоеПриложение… пропускаются, поэтому экземпляр кода будет присутствовать всегда.
В тонком клиенте доступны – ТонкийКлиент, НаКлиенте, Клиент. На серверной части тонкого клиента – Сервер, НаСервере. Во внешнем соединении – ВнешнееСоединение, НаСервере. (с) справка по 8.2 Я поторопился, конечно. Но часть инструкций препроцессора - игнорируется в файл-серверном режиме. Директивы компиляции совсем не про то... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |