Имя: Пароль:
1C
1С v8
Задача для упр форм
0 lisrws
 
14.02.19
14:21
Всем привет. Попалась на глаза вот такая задача:
Написать простейшую обработку под упр формы, в этой форме 1 кнопочка и какие-нибудь элементы(неважно). По кнопочке система сделает два вызова - клиентский и серверный, каждый из которых вызовет внеконтекстный серверный метод, в котором произойдет изменение видимости на противоположную любых элементов формы (одинаковый набор и для клиентского, и для серверного метода).

И вот у меня вопрос. А как из внеконтекстного метода можно изменять видимость элементов формы, ведь он на то и внеконтекстный, что в него элементы формы не передаются. Или я что-то пропустил?
1 magvay_k
 
14.02.19
14:37
Передай в неконтекстную процедуру параметр (ЭтотОбъект)
2 RomanYS
 
14.02.19
14:45
(1) Есть подозрение, что через границу клиент-сервер такое не пройдет)
3 Вася Теркин
 
14.02.19
14:46
(1) внеконтекстный серверный метод - это &НаСервереБезКонтекста
Там нет ЭтотОбъект
4 palsergeich
 
14.02.19
14:48
(0) используй директиву компиляции НаКлиентеНаСервереБезКонтекста и передавай туда форму
5 lisrws
 
14.02.19
14:49
(1) Наверное имел ввиду не ЭтотОбъект, а просто Объект. он передался в внеконтекстный метод, но вопрос, что с ним там делать? он содержит реквизиты обработки, а не элементы формы
6 palsergeich
 
14.02.19
14:49
По правилу ближайшего контекста - передачи контекста и лишней медконтекстной сериализации не будет.
7 palsergeich
 
14.02.19
14:50
(5) видимость она у коллекции Элементы формы, ЭтотОбъект это верное решение
8 magvay_k
 
14.02.19
14:50
В том то и дело - (ЭтотОбъект). В рамках формы и есть управляемая форма
9 Вася Теркин
 
14.02.19
14:51
Если только
&НаСервереБезКонтекста
Функция ПовернемНаоборот(Правда)
Возврат НЕ Правда;
КонецФункции

&НаСервереБезКонтекста
Процедура ПовернемНаоборотСКонтекстом()
ЭтотОбъект.Видно = ПовернемНаоборот(ЭтотОбъект.Видно);
КонецПроцедуры

&НаКлиенте
...
ПовернемНаоборотСКонтекстом();
ЭтаФорма.Реквизит1.Видимость = ЭтотОбъект.Видно;

...
10 palsergeich
 
14.02.19
14:52
Не мучь мозги.
&НаКлиентеНаСервереБезКонтекста
Процедура МояПроцедура(УпрФорма)

Это работает инфа сотка
11 palsergeich
 
14.02.19
14:52
(9) баженька ужас какой
12 Вася Теркин
 
14.02.19
14:53
(5, 10) внеконтекстный серверный метод - это &НаСервереБезКонтекста
Там нет Объект
13 Вася Теркин
 
14.02.19
14:53
(11) Нисработаит?
14 magvay_k
 
14.02.19
14:53
(10) 100%
15 palsergeich
 
14.02.19
14:53
(13) да, ты на безконтекстной процедуре обращаешься к контексту.
16 Вася Теркин
 
14.02.19
14:55
(15) Нет, просто накопипастил. Вот так:
    
Если только
&НаСервереБезКонтекста
Функция ПовернемНаоборот(Правда)
Возврат НЕ Правда;
КонецФункции

&НаСервере
Процедура ПовернемНаоборотСКонтекстом()
ЭтотОбъект.Видно = ПовернемНаоборот(ЭтотОбъект.Видно);
КонецПроцедуры

&НаКлиенте
...
ПовернемНаоборотСКонтекстом();
ЭтаФорма.Реквизит1.Видимость = ЭтотОбъект.Видно;

...
17 Вася Теркин
 
14.02.19
14:56
А какой смысл туда слать ЭтотОбъект?
(1) и  (10) чисто теоретический вариант или что то там сладкое есть?
18 Лодырь
 
14.02.19
14:57
(10) Сработает. Осталось только доказать, что это именно серверный метод )
19 magvay_k
 
14.02.19
14:57
&НаКлиенте
Процедура Перевернуть()
    ПеревернутьНаСервереБезКонекста(ЭтотОбъект);
КонецПроцедуры


&НаКлиентеНаСервереБезКонтекста
Процедура ПеревернутьНаСервереБезКонекста(Форма)
    Форма.Элементы.Элемент1.Видимость = Не Форма.Элементы.Элемент1.Видимость;
КонецПроцедуры
20 lisrws
 
14.02.19
14:57
(10) Блин, за эту дерективу забыл. она позволяет передавать элементы формы в качестве параметров. Так будет работать
21 Ластик
 
14.02.19
14:58
22 palsergeich
 
14.02.19
15:01
(17) ты не шлёшь туда форму, ты шлёшь туда указатель на форму и тебе доступны все коллекции и методы.
С точки зрения производительности это лучший вариант, потому что десериализации не происходит
23 lisrws
 
14.02.19
15:22
(22) а правильней передать ЭтотОбъект в качестве параметра неконтекстного метода, или же вместо него сразу нужный реквизит?
24 Вафель
 
14.02.19
15:27
(21) там речь про интеллисенс
25 Вафель
 
14.02.19
15:28
кнопочка то одна.
Клиент - сервер с конекстом - серевер без контекста с передачей формы
26 palsergeich
 
14.02.19
15:47
(23) имхо дорабатывать удобнее когда форму передаешь.
27 YAGolova
 
14.02.19
16:08
(0) http://1clancer.ru/vacancies.respond/vacancyId=4421
Пытаешься устроиться на вакансию?)))
28 Ластик
 
14.02.19
16:18
(24) да, я знаю, просто дал пример что не только передать можно а и работать по человечески с формой
29 lisrws
 
14.02.19
17:23
(27) не)) я написал чуваку про отсутствие контекста формы, а он отправил хитрость искать. вот и заинтересовало
30 Вася Теркин
 
15.02.19
06:43
(22) Прикольно