Вход | Регистрация

1С:Предприятие ::

Метки: 

Замена значения реквизита у объектов группы в управляемом приложении

Я
   brenli
 
22.12.17 - 15:26
Доброго времени.
Вопрос  о правильности реализации.
Так как с управляемыми формами и клиент-серверным взаимодействием не часто работаю, опыта мало.

Нужно установить значение реквизита у элементов группы, на значение реквизита взятого из родительской для этих элементов группы.

В диалоге модуля формы обрабатываю событие ПриИзменении  
&НаКлиенте
Процедура ЭлементПриИзменении(Элемент)
    ЗаменаЗначенийУЭлементовВгруппе(Объект.Ссылка);
КонецПроцедуры

Передаю ссылку на текущий объект в качестве параметра серверной процедуре. И уже в ней

&НаСервереБезКонтекста
Процедура ЗаменаЗначенийУЭлементовВгруппе(Объект) Экспорт
    Выборка  = Справочники.Номенклатура.Выбрать(Объект);
    Пока Выборка.Следующий() Цикл
        Если Выборка.ЭтоГруппа Тогда
            Продолжить;
        КонецЕсли;    
        Попытка
            ОбъектНом            =    Выборка.ПолучитьОбъект();
            ОбъектНом.МойРекв =  Объект.МойРекв;
            ОбъектНом.Записать();
        Исключение
            Сообщить(" Ошибка !!! Свяжитесь с разработчиком");
        КонецПопытки;    
    КонецЦикла;    
КонецПроцедуры

Вопрос заключается именно в правильности способа передачи измененного реквизита и переопределении  реквизитов элементов выборки.
 
 
   nordbox
 
1 - 22.12.17 - 15:39
а групповая обработка справочников и документов не канает?
   brenli
 
2 - 22.12.17 - 15:50
(1) Нет. Вопрос чисто практический . Хочу разобраться.

По такой методе как сделал я, работает "криво".
Первый раз запускаю обработчик события , ничего не происходит.
Второй раз запускаю, значения у дочерних элементов меняются.

Хотя уже и второй параметр добавил и передаю в него правильное значение (которое выбрано)

&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
    ЗаменаЗначенийУЭлементовВгруппе(Объект.Ссылка, Объект.МойРекв);
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ЗаменаЗначенийУЭлементовВгруппе(Объект, Значение) Экспорт
    Выборка  = Справочники.Номенклатура.Выбрать(Объект);
    Пока Выборка.Следующий() Цикл
        Если Выборка.ЭтоГруппа Тогда
            Продолжить;
        КонецЕсли;    
        Попытка
            ОбъектНом            =    Выборка.ПолучитьОбъект();
            ОбъектНом.МойРекв =  Объект.МойРекв;
            ОбъектНом.Записать();
        Исключение
            Сообщить(" Ошибка !!! Свяжитесь с разработчиком");
        КонецПопытки;    
    КонецЦикла;    
КонецПроцедуры

Отладчиком проверяю, значения все правильные, т.е присваивается объекту из выборки то что нужно.
Но фактически ничего не меняется. Приходится вызывать обработчик заново с тем же значением (уже измененным).
   nordbox
 
3 - 22.12.17 - 15:54
(0)>>Нужно установить значение реквизита у элементов группы, на значение реквизита взятого из родительской для этих элементов группы.

Что то я у тебя отбора не наблюдаю
   nordbox
 
4 - 22.12.17 - 15:55
НУ открыл ты выборку
ну проверил ты группу
а ну и чо?
   nordbox
 
5 - 22.12.17 - 15:58
ОбъектНом.МойРекв в природе существует?
Какой тип
И убери нфиг Попытка, понятнее будет где ошибка, а так он и при ошибке проскочит
   brenli
 
6 - 22.12.17 - 22:24
(5) ОбъектНом.МойРекв да существует, получается объект из выборки.
Тип реквизита справочник.ссылка.

Вообще я правильно с объектом работаю?
Т.е значение (новое) которое я выбрал в поле формы и которое вызвало событие я получаю так Объект.МойРекв, но это значение еще не записано в БД.
   triviumfan
 
7 - 24.12.17 - 13:55
Автор, перефразируй вопрос, покажи пример, вообще не понятно, что ты хочешь и пытаешься.
имхо у тебя проблема с пониманием механизмов или изложением мысли.
   H A D G E H O G s
 
8 - 24.12.17 - 14:02
У автора форма не обновилась после обработки
   H A D G E H O G s
 
9 - 24.12.17 - 14:03
ОбъектНом.МойРекв =  Объект.МойРекв;
заменить на 
ОбъектНом.МойРекв =  МойРекв;

МойРекв - получать до цикла
   H A D G E H O G s
 
10 - 24.12.17 - 14:04
В остальном - кусок приемлемого б-кода.

позабавило
Сообщить(" Ошибка !!! Свяжитесь с разработчиком");

Телепатируйте.

Хоть бы вывели ОписаниеОшибки()
 
  Рекламное место пустует


Список тем форума
  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует