![]() |
|
Видимость экспортной переменной модуля объекта в 8.2 | ☑ | ||
---|---|---|---|---|
0
RealSaint
17.02.10
✎
15:11
|
В модуле объекта справочника объявляю переменную:
В этом же модуле инициализирую переменную значением:
Далее, в обработчике ОбработкаЗаполнения() или ПриКопировании() этой переменной присваивается другое значение:
Вопрос: почему в модуле формы в процедурах ПриСозданииНаСервере() или ПриЧтенииНаСервере() значение выражения РеквизитФормыВЗначение("Объект").м_Перем равно "1", а не "2"? Естественно, либо ОбработкаЗаполнения(), либо ПриКопировании() обрабатывается. Кто мне может объяснить это поведение? Как нужно менять значение экспортируемой переменной модуля объекта, чтобы её изменённое значение было доступно в форме? |
|||
1
Phace
17.02.10
✎
15:19
|
А может ну его... экспортную переменную модуля та? И создать реквизит формы, раз в форме это значение используется, а?
|
|||
2
RealSaint
17.02.10
✎
15:22
|
(1) Может и ну его, но вопрос то не об этом. Тем более что значение этой переменной не должно храниться в базе данных, а нужно только при работе с объектом. Это во-первых. А во-вторых, я всё-таки хочу понять поведение системы в данном случае. Вдруг это ошибка платформы? И я смогу вздохнуть с облегчением, осознавая что это не я осёл, а платформа глючит. :-))
|
|||
3
RealSaint
17.02.10
✎
15:24
|
(1) К тому же реквизиты формы из модуля объекта недоступны. :-)
|
|||
4
Phace
17.02.10
✎
15:28
|
(2) Данные реквизита формы не хранятся в базе (если не проставить флаг "Сохраняемы данные"). По описании проблемы в (0) непонятно что ты хочешь сделать - в каком модуле чего присваиваешь и в какой последовательности.
|
|||
5
strange2007
17.02.10
✎
15:29
|
Где-то в доках видел, что 1С против каких-либо глобальных переменных. А вообще в 8.2 хитрая конструкция форм с объектами. В свое время поплясал вокруг "как сделать глобальную переменную в рамках одной обработки?" и сделал как рекомендуют.
Аргументы были основаны на том, что серверная и клиентская части различаются на очень много |
|||
6
TitanLuchs
17.02.10
✎
15:32
|
(0) Нужно более подробное описание задачи: что за чем происходит и т.д. И чего вообще хочется достичь в итоге.
|
|||
7
RealSaint
17.02.10
✎
15:39
|
(4),(6) Последовательность действий описана в первом сообщении. Цель всего этого следующая: на форме объекта отображается картинка, хранимая в реквизите типа ХранилищеЗначения этого объекта. При копировании такого объекта я хочу для нового объекта сразу же отобразить картинку на форме. Для этого предполагается получить навигационную ссылку или адрес во временном хранилище на картинку объекта копирования и показать эту картинку на форме нового элемента. Это в общем виде. Если кто знает как решить эту задачу вообще и более культурно в частности - буду рад совету.
Но это не отменяет первоначального вопроса. :-) |
|||
8
RealSaint
17.02.10
✎
15:40
|
(5) Оно и понятно что части различаются, только зачем тогда нужны экспортные переменные модуля объекта? :-(
|
|||
9
hhhh
17.02.10
✎
15:52
|
(8) когда создается новый объект - первым делом инициализируются экспортные переменные модуля.
|
|||
10
RealSaint
17.02.10
✎
15:53
|
(9) Я знаю. Именно это у меня и делается выражением
|
|||
11
TitanLuchs
17.02.10
✎
15:53
|
(7) Если ты собираешься показывать картинку на форме, то смысла устанавливать что-то в модуле ОБЪЕКТА нет никакого. Устанавливай в модуле формы в серверных процедурах.
(8) Чтобы в толстом клиенте ничего не переписывать |
|||
12
RealSaint
17.02.10
✎
15:55
|
(11) Ну и как мне тогда получить в форме картинку из хранилища значения для НЕЗАПИСАННОГО объекта?
|
|||
13
TitanLuchs
17.02.10
✎
15:55
|
(0) "Естественно, либо ОбработкаЗаполнения(), либо ПриКопировании() обрабатывается"
То есть, когда ты выполняешь метод РеквизитФормыВЗначение("Объект") у тебя выполняется ОбработкаЗаполнения() или ПриКопировании() в модуле объекта? И на точке останова ты видишь присвоение переменной значения 2? |
|||
14
TitanLuchs
17.02.10
✎
15:57
|
(12) А как ты собирался это делять для незаписанного объекта в модуле объекта? В форме ты можешь картинке подсунуть любой путь, в ТЧ взять ее из реквизита уже записанного объекта.
|
|||
15
RealSaint
17.02.10
✎
16:00
|
(13) Нет. Сначала, т.е. при создании-копировании объекта, выполняется ПриКопировании(). Потом в форме выполняется ПриСозданииНаСервере(). В процедуре ПриСозданииНаСервере() проверяется значение РеквизитФормыВЗначение("Объект").м_Перем. В момент этой проверки я вижу значение "1".
|
|||
16
RealSaint
17.02.10
✎
16:03
|
(14) Например, получив навигационную ссылку на картинку объекта копирования. Или картинку из объекта копирования поместить во временное хранилище.
А как я в форме узнаю, какой у меня был объект копирования? |
|||
17
Phace
17.02.10
✎
16:04
|
(16) параметры
|
|||
18
TitanLuchs
17.02.10
✎
16:05
|
(15) А попробуй проверить: при выполнении РеквизитФормыВЗначение("Объект") в модуле объекта у тебя сработает м_Перем=1, то есть первое присваивание? Скорее всего при создании экземпляра объекта только эта информация и запоминается для отображения на форме, а все изменения ПриКопировании нет.
|
|||
19
RealSaint
17.02.10
✎
16:07
|
(17) ЗначениеКопирования? Наверное ты прав, я об этом как-то забыл. Спасибо, попробую.
|
|||
20
RealSaint
17.02.10
✎
16:11
|
(18) Ты прав, при выполнении РеквизитФормыВЗначение("Объект") срабатывает м_Перем=1. Теперь я понял где собака порылась. Спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |