Видимость экспортной переменной модуля объекта в 8.2 #462431


#0 by RealSaint
В модуле объекта справочника объявляю переменную: В этом же модуле инициализирую переменную значением: Далее, в обработчике ОбработкаЗаполнения или ПриКопировании этой переменной присваивается другое значение: Вопрос: почему в модуле формы в процедурах ПриСозданииНаСервере или ПриЧтенииНаСервере значение выражения РеквизитФормыВЗначение("Объект").м_Перем равно "1", а не "2"? Естественно, либо ОбработкаЗаполнения, либо ПриКопировании обрабатывается. Кто мне может объяснить это поведение? Как нужно менять значение экспортируемой переменной модуля объекта, чтобы её изменённое значение было доступно в форме?
#1 by Phace
А может ну его... экспортную переменную модуля та? И создать реквизит формы, раз в форме это значение используется, а?
#2 by RealSaint
Может и ну его, но вопрос то не об этом. Тем более что значение этой переменной не должно храниться в базе данных, а нужно только при работе с объектом. Это во-первых. А во-вторых, я всё-таки хочу понять поведение системы в данном случае. Вдруг это ошибка платформы? И я смогу вздохнуть с облегчением, осознавая что это не я осёл, а платформа глючит. :-))
#3 by RealSaint
К тому же реквизиты формы из модуля объекта недоступны. :-)
#4 by Phace
Данные реквизита формы не хранятся в базе (если не проставить флаг "Сохраняемы данные"). По описании проблемы в непонятно что ты хочешь сделать - в каком модуле чего присваиваешь и в какой последовательности.
#5 by strange2007
Где-то в доках видел, что 1С против каких-либо глобальных переменных. А вообще в 8.2 хитрая конструкция форм с объектами. В свое время поплясал вокруг "как сделать глобальную переменную в рамках одной обработки?" и сделал как рекомендуют. Аргументы были основаны на том, что серверная и клиентская части различаются на очень много
#6 by TitanLuchs
Нужно более подробное описание задачи: что за чем происходит и т.д. И чего вообще хочется достичь в итоге.
#7 by RealSaint
, Последовательность действий описана в первом сообщении. Цель всего этого следующая: на форме объекта отображается картинка, хранимая в реквизите типа ХранилищеЗначения этого объекта. При копировании такого объекта я хочу для нового объекта сразу же отобразить картинку на форме. Для этого предполагается получить навигационную ссылку или адрес во временном хранилище на картинку объекта копирования и показать эту картинку на форме нового элемента. Это в общем виде. Если кто знает как решить эту задачу вообще и более культурно в частности - буду рад совету. Но это не отменяет первоначального вопроса. :-)
#8 by RealSaint
Оно и понятно что части различаются, только зачем тогда нужны экспортные переменные модуля объекта? :-(
#9 by hhhh
когда создается новый объект - первым делом инициализируются экспортные переменные модуля.
#10 by RealSaint
Я знаю. Именно это у меня и делается выражением
#11 by TitanLuchs
Если ты собираешься показывать картинку на форме, то смысла устанавливать что-то в модуле ОБЪЕКТА нет никакого. Устанавливай в модуле формы в серверных процедурах. Чтобы в толстом клиенте ничего не переписывать
#12 by RealSaint
Ну и как мне тогда получить в форме картинку из хранилища значения для НЕЗАПИСАННОГО объекта?
#13 by TitanLuchs
"Естественно, либо ОбработкаЗаполнения, либо ПриКопировании обрабатывается" То есть, когда ты выполняешь метод РеквизитФормыВЗначение("Объект") у тебя выполняется ОбработкаЗаполнения или ПриКопировании в модуле объекта? И на точке останова ты видишь присвоение переменной значения 2?
#14 by TitanLuchs
А как ты собирался это делять для незаписанного объекта в модуле объекта? В форме ты можешь картинке подсунуть любой путь, в ТЧ взять ее из реквизита уже записанного объекта.
#15 by RealSaint
Нет. Сначала, т.е. при создании-копировании объекта, выполняется ПриКопировании. Потом в форме выполняется ПриСозданииНаСервере. В процедуре ПриСозданииНаСервере проверяется значение РеквизитФормыВЗначение("Объект").м_Перем. В момент этой проверки я вижу значение "1".
#16 by RealSaint
Например, получив навигационную ссылку на картинку объекта копирования. Или картинку из объекта копирования поместить во временное хранилище. А как я в форме узнаю, какой у меня был объект копирования?
#17 by Phace
параметры
#18 by TitanLuchs
А попробуй проверить: при выполнении РеквизитФормыВЗначение("Объект") в модуле объекта у тебя сработает м_Перем=1,  то есть первое присваивание? Скорее всего при создании экземпляра объекта только эта информация и запоминается для отображения на форме, а все изменения ПриКопировании нет.
#19 by RealSaint
ЗначениеКопирования? Наверное ты прав, я об этом как-то забыл. Спасибо, попробую.
#20 by RealSaint
Ты прав, при выполнении РеквизитФормыВЗначение("Объект") срабатывает м_Перем=1. Теперь я понял где собака порылась. Спасибо.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С