|
Замена значения реквизита у объектов группы в управляемом приложении | ☑ | ||
---|---|---|---|---|
0
brenli
22.12.17
✎
15:26
|
Доброго времени.
Вопрос о правильности реализации. Так как с управляемыми формами и клиент-серверным взаимодействием не часто работаю, опыта мало. Нужно установить значение реквизита у элементов группы, на значение реквизита взятого из родительской для этих элементов группы. В диалоге модуля формы обрабатываю событие ПриИзменении &НаКлиенте Процедура ЭлементПриИзменении(Элемент) ЗаменаЗначенийУЭлементовВгруппе(Объект.Ссылка); КонецПроцедуры Передаю ссылку на текущий объект в качестве параметра серверной процедуре. И уже в ней &НаСервереБезКонтекста Процедура ЗаменаЗначенийУЭлементовВгруппе(Объект) Экспорт Выборка = Справочники.Номенклатура.Выбрать(Объект); Пока Выборка.Следующий() Цикл Если Выборка.ЭтоГруппа Тогда Продолжить; КонецЕсли; Попытка ОбъектНом = Выборка.ПолучитьОбъект(); ОбъектНом.МойРекв = Объект.МойРекв; ОбъектНом.Записать(); Исключение Сообщить(" Ошибка !!! Свяжитесь с разработчиком"); КонецПопытки; КонецЦикла; КонецПроцедуры Вопрос заключается именно в правильности способа передачи измененного реквизита и переопределении реквизитов элементов выборки. |
|||
1
nordbox
22.12.17
✎
15:39
|
а групповая обработка справочников и документов не канает?
|
|||
2
brenli
22.12.17
✎
15:50
|
(1) Нет. Вопрос чисто практический . Хочу разобраться.
По такой методе как сделал я, работает "криво". Первый раз запускаю обработчик события , ничего не происходит. Второй раз запускаю, значения у дочерних элементов меняются. Хотя уже и второй параметр добавил и передаю в него правильное значение (которое выбрано) &НаКлиенте Процедура КонтрагентПриИзменении(Элемент) ЗаменаЗначенийУЭлементовВгруппе(Объект.Ссылка, Объект.МойРекв); КонецПроцедуры &НаСервереБезКонтекста Процедура ЗаменаЗначенийУЭлементовВгруппе(Объект, Значение) Экспорт Выборка = Справочники.Номенклатура.Выбрать(Объект); Пока Выборка.Следующий() Цикл Если Выборка.ЭтоГруппа Тогда Продолжить; КонецЕсли; Попытка ОбъектНом = Выборка.ПолучитьОбъект(); ОбъектНом.МойРекв = Объект.МойРекв; ОбъектНом.Записать(); Исключение Сообщить(" Ошибка !!! Свяжитесь с разработчиком"); КонецПопытки; КонецЦикла; КонецПроцедуры Отладчиком проверяю, значения все правильные, т.е присваивается объекту из выборки то что нужно. Но фактически ничего не меняется. Приходится вызывать обработчик заново с тем же значением (уже измененным). |
|||
3
nordbox
22.12.17
✎
15:54
|
(0)>>Нужно установить значение реквизита у элементов группы, на значение реквизита взятого из родительской для этих элементов группы.
Что то я у тебя отбора не наблюдаю |
|||
4
nordbox
22.12.17
✎
15:55
|
НУ открыл ты выборку
ну проверил ты группу а ну и чо? |
|||
5
nordbox
22.12.17
✎
15:58
|
ОбъектНом.МойРекв в природе существует?
Какой тип И убери нфиг Попытка, понятнее будет где ошибка, а так он и при ошибке проскочит |
|||
6
brenli
22.12.17
✎
22:24
|
(5) ОбъектНом.МойРекв да существует, получается объект из выборки.
Тип реквизита справочник.ссылка. Вообще я правильно с объектом работаю? Т.е значение (новое) которое я выбрал в поле формы и которое вызвало событие я получаю так Объект.МойРекв, но это значение еще не записано в БД. |
|||
7
triviumfan
24.12.17
✎
13:55
|
Автор, перефразируй вопрос, покажи пример, вообще не понятно, что ты хочешь и пытаешься.
имхо у тебя проблема с пониманием механизмов или изложением мысли. |
|||
8
H A D G E H O G s
24.12.17
✎
14:02
|
У автора форма не обновилась после обработки
|
|||
9
H A D G E H O G s
24.12.17
✎
14:03
|
ОбъектНом.МойРекв = Объект.МойРекв;
заменить на ОбъектНом.МойРекв = МойРекв; МойРекв - получать до цикла |
|||
10
H A D G E H O G s
24.12.17
✎
14:04
|
В остальном - кусок приемлемого б-кода.
позабавило Сообщить(" Ошибка !!! Свяжитесь с разработчиком"); Телепатируйте. Хоть бы вывели ОписаниеОшибки() |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |