Имя: Пароль:
1C
 
Очистить реквизит формы
, , ,
0 rowvg
 
naïve
16.03.20
09:50
У формы есть реквизит, с типом СправочникСсылка. Подскажите, пжл, как его программно очистить? Формы управляемые.
1 Ц_У
 
16.03.20
09:51
очистить в где?
2 rowvg
 
naïve
16.03.20
09:57
На форме есть элемент управления, связанный с этим реквизитом. Когда пользователь выполнит определенные действия нужно в этом элементе управления его очистить.
3 Михаил Михайлович
 
16.03.20
09:58
(2) в чем вопрос?
4 rowvg
 
naïve
16.03.20
10:00
как это сделать? На клиенте справочники недоступны, есл реквизиту присвоить пустое значение на сервере, то на клиента это никак не влияет, при возращении на клиента реквизит остается заполненным
5 Ц_У
 
16.03.20
10:02
(4) ты определись или реквизит формы или поле объекта
если реквизит формы, то на клиенте, если объекта то на сервере
от этого и пляши
6 rowvg
 
naïve
16.03.20
10:03
4+ То есть на клиенте
ЭтотОбъект.Элементы.Собственник = Справочники.Контрагенты.ПустаяСсылка(); выполнить нельзя

на сервере такое присваивание срабатывает, но при возращении в клиентскую процедуру ЭтотОбъект.Элементы.Собственник снова заполнен.
7 rowvg
 
naïve
16.03.20
10:04
5+ я однозначно в теме написал - реквизит формы
8 Михаил Михайлович
 
16.03.20
10:05
(6) врешь, наверное или не правильно написал
9 sqr4
 
16.03.20
10:05
.Собственник = Справочники.Контрагенты.ПустаяСсылка();
10 sqr4
 
16.03.20
10:06
без точки
11 sqr4
 
16.03.20
10:07
(6) Срочно книжки читать по управляемому интерфейсу и не трепать форум
12 rowvg
 
naïve
16.03.20
10:14
(11) Спасибо, получилось

Почему вот так нельзя ЭтотОбъект.Собственник = Справочники.Контрагенты.ПустаяСсылка();  ?
13 hhhh
 
16.03.20
10:19
(12) так можно
14 Ц_У
 
16.03.20
10:19
(12)

Процедура Сменить()
    СменитьНаСервере()
Конецпроцедуры

СменитьНаСервере()
   ЭтотОбъект.Собственник = Справочники.Контрагенты.ПустаяСсылка()
Конецпроцедуры
15 rowvg
 
naïve
16.03.20
10:23
(14)

&НаСервере
Процедура ДобавитьСобственникаНаСервере()
    
    ЭтотОбъект.Собственник = Справочники.Контрагенты.ПустаяСсылка();

    Собственник = Справочники.Контрагенты.ПустаяСсылка();
КонецПроцедуры

Верхняя строчка не срабатывает...
16 Александр Б
 
16.03.20
10:26
Можешь на клиенте сделать
Объект.Собственник = Неопределено
17 Ц_У
 
16.03.20
10:27
18 Александр Б
 
16.03.20
10:29
(14) Реквизит формы можно очистить и без вызова сервера.
19 rowvg
 
naïve
16.03.20
10:31
15+  Вернее не срабатывает вот такой вызов

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



&НаСервере
Процедура ДобавитьСобственникаНаСервере(Собственник)
    ЭтотОбъект.Собственник = Справочники.Контрагенты.ПустаяСсылка();
КонецПроцедуры
20 rowvg
 
naïve
16.03.20
10:32
(16)  Александр Б, у меня реквизит формы, а не объекта
21 rowvg
 
naïve
16.03.20
10:33
19+ А вот так все прекрасненько срабатывает!

15+  Вернее не срабатывает вот такой вызов

&НаКлиенте
Процедура ДобавитьСобственника(Команда)
    ДобавитьСобственникаНаСервере();
КонецПроцедуры



&НаСервере
Процедура ДобавитьСобственникаНаСервере()
    ЭтотОбъект.Собственник = Справочники.Контрагенты.ПустаяСсылка();
КонецПроцедуры


Это что за фокусы?
22 Александр Б
 
16.03.20
10:33
(20) Тогда просто на клиенте делаешь Собственник = ПредопределенноеЗначение("Справочник.Контрагенты.ПустаяСсылка");
23 Александр Б
 
16.03.20
10:34
(21) Реквизит формы находится в контексте формы. Тебе не нужно обращаться к форме через ЭтотОБъект. Можно сразу обращаться к реквизиту.
24 rowvg
 
naïve
16.03.20
10:35
22 Спасибо, не знал
25 rowvg
 
naïve
16.03.20
10:36
23 Это я для читабельности. Меня интересует почему если я реквизит формы передал аргументом на сервер, то ЭтотОбъект.Собственник = Справочники.Контрагенты.ПустаяСсылка(); не срабатывает?
26 ptiz
 
16.03.20
10:37
Вы тут прикалываетесь, что-ли?
Реквизит1 = Неопределено;

и всё
27 Александр Б
 
16.03.20
10:38
(25) Не думай об этом. Два глупых и бесполезных действия одновременно
28 Ц_У
 
16.03.20
10:39
(26) не ломай кайф
29 rowvg
 
naïve
16.03.20
10:41
(27) Вопрос уже не об очистке реквизита, что меняется от вызова с параметром и без него?
30 Жан Пердежон
 
16.03.20
10:41
(25) почитай что-нибудь про формальные и фактические параметры, как они работают при клиент-серверных вызовах, заодно и этот пример проверишь:

&НаСервере
Процедура ДобавитьСобственникаНаСервере(ЗНАЧ Собственник)
    ЭтотОбъект.Собственник = Справочники.Контрагенты.ПустаяСсылка();
КонецПроцедуры
31 Александр Б
 
16.03.20
10:43
(25) Вообще тебе на заметку. Реквизиты формы существуют одновременно и на клиенте и на сервере. Если ты вызываешь процедуры &НаСервере или &НаКлиенте.
Реквизит формы с клиента на сервер имеет смысл передавать только тогда, когда ты делаешь безконтекстный вызов &НаСервереБезКонтекста. Тогда в этом методе форма и её реквизиты не будут видны, кроме того, что ты передашь в параметрах.
32 rowvg
 
naïve
16.03.20
11:02
(30) Все, спасибо, разобрался. Оказывается 1С для того чтобы уменьшить трафик не передает параметр, который передавался по значению, обратно на клиента. Хотя как можно передавать по значению ссылочный объект?
33 Жан Пердежон
 
18.03.20
13:41
(32) нет, не для этого. И ссылка - это ещё не весь объект.
34 DrZombi
 
гуру
18.03.20
13:49
(0) Выбрать их "программно", пройтись по массиву реквизитов и понять, что данный реквизит содержит тип "СправочникСсылка". И очистить.
35 DrZombi
 
гуру
18.03.20
13:49
(30) Можно просто:

Объект.Собственник = Неопределено;
Ошибка? Это не ошибка, это системная функция.