Имя: Пароль:
1C
 
УФ. Вызов процедуры НаСервереБезКонтекста с параметром Форма
0 Deon
 
05.12.14
09:46
Господа, поясните в чем профит такого кода, часто встречаемого в модулях управляемых форм типовых конфигураций:

&НаСервереБезКонтекста
Процедура РассчитатьНаСервере(Форма)
    ...
КонецПроцедуры

&НаКлиенте
Процедура РассчитатьВсё()
    РассчитатьНаСервере(ЭтотОбъект);
КонецПроцедуры

Конкретно - зачем нужен внеконтекстный вызов с передачей этого контекста в качестве параметра?
1 butterbean
 
05.12.14
09:48
ЭтотОбъект это не форма
2 Deon
 
05.12.14
09:50
УправляемаяФорма.ЭтотОбъект (ManagedForm.ThisObject)
УправляемаяФорма (ManagedForm)
ЭтотОбъект (ThisObject)
Использование:

Только чтение.
Описание:

Тип: УправляемаяФорма.
Содержит данную форму.

...
3 butterbean
 
05.12.14
09:54
(2) 8.3 что-ли?? я чего-то от жизни отстал
4 Deon
 
05.12.14
10:17
да, 8.3
5 МишельЛагранж
 
05.12.14
10:55
(0)раньше форму в УФ передавали в ЗначениеВРеквизит.
Тут - "напрямую" как контекст. И только.
Т.е. скоро увидим ОФ2.0 и УФ на свалке истории.
6 МишельЛагранж
 
05.12.14
10:57
+ передача такая еще в 7.7 была, и в 8.1 получила более "закрытое" решение.
7 pessok
 
05.12.14
10:58
ну так тут передается только контекст формы, а не весь контекст объекта, или я туплю?
8 МишельЛагранж
 
05.12.14
11:02
(7) тупишь.
"Содержит данную форму."
Это и есть и контекст Формы, и объект Формы. Только объект в урезанном понимании по 8.2шному.
9 pessok
 
05.12.14
11:03
(8) т.е. я могу РеквизитФормыВЗначение, а потом вызвать метод из модуля объекта?
10 МишельЛагранж
 
05.12.14
11:04
+ "а не весь контекст объекта"
- контекст объекта, к которому "приписана" форма никогда в 1С8 и не передавался через форму.
Ибо форма в 1С существует отдельно от объекта.
11 МишельЛагранж
 
05.12.14
11:05
(9) вы хотите. чтобы я справку написал за 1С? ))
попробуйте из модуля объекта вызвать, отпишитесь. У 1С везде все по разному работает ))
12 МишельЛагранж
 
05.12.14
11:06
+ здесь конкретно в одном модуле формы и клиентские, и серверные процедуры.
13 Жан Пердежон
 
05.12.14
11:12
смысл есть если функция экспортная, либо там на стоит
&НаКлиентеНаСервереБезКонекста, что встречается гораздо чаще, сабж я вообще не помню, чтобы видел в бп3
14 МишельЛагранж
 
05.12.14
11:18
(13) ТС и справшивает - зафига во внеконтекстной функции вызывать этот же контекст (который отсечен НаСервереБезКонекста) в виде передачи формы.
15 pessok
 
05.12.14
11:21
(14) умом разрабов типовых не понять
16 Жан Пердежон
 
05.12.14
11:22
(14) что не понятно из (13)?
17 МишельЛагранж
 
05.12.14
11:27
(16) все понятно, кроме одно - как это отвечает на вопрос ТС.
18 Бубка Гоп
 
05.12.14
11:32
(0) Любопытно, что за конфа такая и в каком модуле сие чудо обнаружено?
19 Deon
 
05.12.14
11:54
(13)(18)
БП 3.0
ПоступлениеНаРасчетныйСчет.ФормаДокумента:

&НаСервереБезКонтекста
Процедура РассчитатьКурсИСуммуВзаиморасчетов(СтрокаПлатеж, Форма)
20 Deon
 
05.12.14
12:00
(13)(18) А вообще да, я наврал. Встречается нечасто.
21 Жан Пердежон
 
05.12.14
12:00
(19) в этом случае смысла нет, видимо тупую копи-пасту недоисправили;
и что на счет частой встречаемости?
22 Вуглускр1991
 
05.12.14
12:02
Некоторые чуваки считают, что в 1С пишут "коммерческий код", чтобы нам было трудно его править. Видимо не без этого, но это мотивация "от чего-то уйти", а многое строится на мотивах "к чему-то прийти", считая, что в 1С есть набор средств проектирования и декомпозиции больших задач из него и вылазит весь этот кошмар. Можно сравнить с автоматическим построением кода для описания окон в винде. Нам не пкбликуют этот инструмент. И мы как слепые мыши копаемся в этой "неразберихе". Это все-равно как не иметь конвертации данных и разбираться в отладчике, как работают правила обмена.
23 Deon
 
05.12.14
12:04
В общем, попытка найти скрытый смысл успехом не увенчалась. Придется списать на недочеты при разработке.
24 Адский плющ
 
05.12.14
12:08
Как вам такая теория:

Разработчик изначально православно сделал НаКлиентеНаСервереБезКонтекста, а потом, когда понял что клиентских вызовов процедуры не будет, отпилил "НаКлиенте".
25 МишельЛагранж
 
05.12.14
12:12
(24) а сам-то смысл таких вызовов какой вообще?
26 Жан Пердежон
 
05.12.14
12:12
(24) там код, который на клиенте не исполнится (без допила), скорее копи-паста + отпил
27 Адский плющ
 
05.12.14
12:17
(25) Обычно юзают для управления видом формы. Менять видимость, доступность, текущие страницы элементов и т.д.
28 Жан Пердежон
 
05.12.14
12:19
(25) смысл в том, что в процедуру надо вызывать и на клиенте и на сервере, а в форме нельзя использовать &НаКлиентеНаСервере
29 Deon
 
05.12.14
12:30
(28) Вот мне маленько странно, почему не сделали такой директивы и в модулях форм