|
Параменты управляемой формы |
☑ |
0
saradip
17.08.19
✎
15:38
|
Доброго времени.
В общем, есть процедура &НаСервере которая получается ссылку на "элемент справочника" Люди
и присваивает ее "реквизиту формы", допустим с именем СсылкаНаЧеловека.
Так вот, чтобы эту ссылку использовать в параметрах метода ОткрытьФорму:
ПараметрыФормы = Новый Структура("Ключ", СсылкаНаЧеловека);
ОткрытьФорму("Справочник.Люди.ФормаОбъекта", ПараметрыФормы);
Необходимо чтобы ранее созданный "реквизит формы" с именем СсылкаНаЧеловека имел тип
СправочникСсылка.Люди
Почему? Ведь в серверной процедуре я и так присваиваю реквизиту тип СправочникСсылка.Люди с конкретной ссылкой.
|
|
1
saradip
17.08.19
✎
16:01
|
Вот, к примеру.
Почему реквизит формы СсылкаНаПодарок должен быть с типом:
СправочникСсылка.Подарки?
Ведь я в процедуре ПоискНаСервере и так присваиваю ему тип прямой ссылки на элемент.
Если поменять тип реквизита формы СсылкаНаПодарок, допустим на СправочникСсылка.Сотрудники, то параметры при открытии формы не сработают.
Почему?
Ведь я тип реквизиту "переприсваиваю" в процедуре.
&НаСервере
Процедура ПоискНаСервере()
Менеджер = Справочники.Подарки;
Выборка = Менеджер.Выбрать();
Цена = 0;
Подарок = Справочники.Подарки.ПустаяСсылка();
Пока Выборка.Следующий() Цикл
Если Выборка.Цена > Цена Тогда
Цена = Выборка.Цена;
Подарок = Выборка.Ссылка;
КонецЕсли;
КонецЦикла;
Элементы.НадписьПодарок.Заголовок = Подарок.Наименование;
Элементы.НадписьЦена.Заголовок = Цена;
СсылкаНаПодарок = Подарок;
КонецПроцедуры
&НаКлиенте
Процедура НадписьПодарокНажатие(Элемент)
ПараметрыФормы = Новый Структура("Ключ", СсылкаНаПодарок);
ОткрытьФорму("Справочник.Подарки.ФормаОбъекта", ПараметрыФормы);
КонецПроцедуры
|
|
2
saradip
17.08.19
✎
16:09
|
Не могу поймать логику.
Разве я не могу реквизиту с типом ссылка в коде присвоить какую угодно ссылку?
Ссылка = Справочники.Подарки.НайтиПоНаименованию("Телефон");
Ссылка = Справочники.Подарки.НайтиПоНаименованию("Браслет");
Ссылка = Справочники.Подарки.НайтиПоНаименованию("Часы");
Ссылка = Справочники.Подарки.НайтиПоНаименованию("ЧтоТоЕще");
|
|
3
saradip
17.08.19
✎
16:16
|
Если реквизит формы имеет тип СправочникСсылка.Подарки, то после завершения процедуры
ПоискНаСервере() ,он получает:
значение> Телефон и тип> СправочникСсылка.Подарки
Если реквизит имеет тип СправочникСсылка.Люди, то он получает:
значение> "пустое" и тип> СправочникСсылка.Люди
|
|
4
hhhh
17.08.19
✎
16:35
|
(3) да, так и задумано. Тут мы вам ничем не поможем. Это язык такой, 1с.
|
|
5
saradip
17.08.19
✎
16:39
|
(4) Так я не пойму, почему я не могу реквизит формы указать строка, а через код присвоить ему тип ссылка?
реквизиты формы имеют жесткий тип, или я что-то не пойму?
|
|
6
hhhh
17.08.19
✎
16:46
|
(5) ну, такой язык. Если задан тип строка, то через код нельзя переприсвоить.
|
|
7
Asmody
17.08.19
✎
16:49
|
(5) Реквизиты - это не просто переменные. Они типизированы на уровне метаданных. Но могут быть составного типа.
|
|
8
saradip
17.08.19
✎
17:18
|
(7) Спасибо!!! Вот теперь прояснилось!
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший