![]() |
|
Параменты управляемой формы | ☑ | ||
---|---|---|---|---|
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) Спасибо!!! Вот теперь прояснилось!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |