|
УстановитьЗначениеПараметра в динамическом списке равному значению реквизита формы | ☑ | ||
---|---|---|---|---|
0
Bro
22.08.19
✎
10:45
|
Работаю в учебной версии 8.3.
Создал форму с одним динамическим списком товаров и полем фильтром по цене. В качестве источника списка указал: ВЫБРАТЬ СправочникТовар.Ссылка, СправочникТовар.ПометкаУдаления, СправочникТовар.Код, СправочникТовар.Наименование, СправочникТовар.Цена, СправочникТовар.Предопределенный, СправочникТовар.ИмяПредопределенныхДанных ИЗ Справочник.Товар КАК СправочникТовар ГДЕ СправочникТовар.Цена = &Цена Дальше при изменении цены: &НаКлиенте Процедура ЦенаПриИзменении(Элемент) Список.Параметры.УстановитьЗначениеПараметра("Цена", Цена); Сообщить("Изменение цены " + Цена); КонецПроцедуры Ввожу 20, в динамическом списке становится пусто (хотя товары с ценой 20 есть), но в сообщении пишет Изменение цены 20 Изменяю код на &НаКлиенте Процедура ЦенаПриИзменении(Элемент) Список.Параметры.УстановитьЗначениеПараметра("Цена", 20); Сообщить("Изменение цены " + Цена); КонецПроцедуры Все работает. Что я делаю не так? |
|||
1
Василий Алибабаевич
22.08.19
✎
10:49
|
(0) "Дальше при изменении цены" Кто такой "цена" в данном контексте?
Судя по отличиям рабочего и нерабочего кода "Цена" - не число. |
|||
2
aleks_default
22.08.19
✎
10:50
|
(1)+1 тип реквизита строка наверное
|
|||
3
Bro
22.08.19
✎
10:56
|
(2) Точно, спасибо, действительно строка.
Тогда еще один вопрос, а есть событие на программное изменение реквизита формы Цена? То есть если в другом действии будет написано что Цена = 15, как отловить это и обновить значение параметра запроса? Потому как ПриИзменении это чисто при интерактивном изменении. |
|||
4
Василий Алибабаевич
22.08.19
✎
11:36
|
(3) Если вот это вот "Цена = 15" будет происходить на клиенте - тогда можно писать примерно так :
Цена = 15; ЦенаПриИзменении(0); |
|||
5
Bro
22.08.19
✎
12:12
|
(4) Это понятно, но откуда я знаю, где может изменяться эта цена. Плюс что делать, если изменение реквизита действительно происходит на сервере?
Лет 10 назад когда имел дело с фокспро у них было отдельно programmaticchange и interactivechange, мне здесь нужно любое change. Соответственно как это в 1С сделать? |
|||
6
D_E_S_131
04.10.19
✎
15:43
|
"...но откуда я знаю, где может изменяться эта цена" - цена же у Вас реквизит формы - она и поменяться может только при каком-то действии, вызванном в этой форме. И уже вот в этой процедуре "действия" в самом конце вызывается процедура "ЦенаПриИзменении(<значение цены>)". А для "действий", которые отрабатывают &НаСервере нужно сделать серверный обработчик изменения реквизита "Цена":
&НаКлиенте Процедура ЦенаПриИзменении(Элемент) ПриИзмененииЦеныСервер(); КонецПроцедуры &НаСервере Процедура ПриИзмененииЦеныСервер() Список.Параметры.УстановитьЗначениеПараметра("Цена", 20); Сообщить("Изменение цены " + Цена); КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |