|
Как сделать доступной переменную одной процедуры в другой | ☑ | ||
---|---|---|---|---|
0
Дарья_92
08.11.13
✎
18:14
|
//Объявила переменную
Перем СсылкаНаОбъект Экспорт; //Первая процедура Процедура ПриКопировании(ОбъектКопирования) мСкопирован = Истина; мОбъектКопирования = ОбъектКопирования; СсылкаНаОбъект = ОбъектКопирования.Ссылка; КонецПроцедуры //Последующие процедуры Процедура ПриЗаписи(Отказ) КопированиеНаСервере(); КонецПроцедуры Процедура КопированиеНаСервере() Сообщить(СсылкаНаОбъект ); // Вот тут значение пустое КонецПроцедуры Все действия происходят в модуле объекта справочника. Помогите, пожалуйста! |
|||
1
godmod80
08.11.13
✎
18:17
|
фото конечно хорошее..
|
|||
2
Жан Пердежон
08.11.13
✎
18:19
|
передавай в параметре
|
|||
3
NeZar
08.11.13
✎
18:20
|
СсылкаНаОбъект = ОбъектКопирования.Ссылка;
Скорее всего, не присваивается. Задействуйте дебаггер |
|||
4
Жан Пердежон
08.11.13
✎
18:20
|
при серверных вызовах переменные модуля заново инициализируются
|
|||
5
godmod80
08.11.13
✎
18:21
|
Процедура КопированиеНаСервере(ххх) - тут должен быть аргумент функции
|
|||
6
Зойч
08.11.13
✎
18:23
|
наверняка упр формы
|
|||
7
Дарья_92
08.11.13
✎
18:36
|
(3) Присваивается, отладчиком проверяла.
(5) Простите, функции? (4) Не могли бы Вы на примере показать? |
|||
8
Classic
08.11.13
✎
18:38
|
(7)
Процедура ПриЗаписи(Отказ) КопированиеНаСервере(СсылкаНаОбъект); КонецПроцедуры Процедура КопированиеНаСервере(СсылкаСообщить) Сообщить(СсылкаСообщить); // Вот тут значение пустое КонецПроцедуры |
|||
9
Дарья_92
08.11.13
✎
18:47
|
(8) Попробовала, все равно выводит пусто!
|
|||
10
Дарья_92
08.11.13
✎
19:10
|
В принципе эта переменная остается доступной только в рамках процедуры ПриКопировании. Понимаю, что что-то упустила, но не могу понять, что
|
|||
11
ilkoder
08.11.13
✎
19:15
|
Процедура ПриКопировании(ОбъектКопирования, СсылкаНаОбъект)
мСкопирован = Истина; мОбъектКопирования = ОбъектКопирования; СсылкаНаОбъект = ОбъектКопирования.Ссылка; КонецПроцедуры В модулях не может быть переменных модуля |
|||
12
Classic
08.11.13
✎
19:22
|
(11)
Чё? |
|||
13
Дарья_92
08.11.13
✎
19:33
|
(11) Нет, и так не получается...заколдованная переменная
|
|||
14
ilkoder
08.11.13
✎
19:35
|
чего-то я туплю в тяпницу вечером...
|
|||
15
welwel
08.11.13
✎
20:01
|
(0) а если вместо переменной использовать реквизит
|
|||
16
sapphire
08.11.13
✎
20:03
|
Доп свойства не предлагать?
|
|||
17
sapphire
08.11.13
✎
20:04
|
(15) лишнее, ИМХО
|
|||
18
Дарья_92
08.11.13
✎
20:13
|
(15) даже попробовала реквизит...не выходит!
|
|||
19
sapphire
08.11.13
✎
20:14
|
(18) ДополнительныеСвойства пробовала {мануально :)) }?
|
|||
20
av_x86
08.11.13
✎
20:16
|
Вот похожий случай:
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=569399 |
|||
21
фобка
08.11.13
✎
20:17
|
(18) реквизитом выйдет, только обращайся через ЭтотОбъект.ИмяРека
можно задать переменную в общем модуле ( как раз со словом экспорт) |
|||
22
sapphire
08.11.13
✎
20:18
|
//Объявила переменную
Перем СсылкаНаОбъект Экспорт; //Первая процедура Процедура ПриКопировании(ОбъектКопирования) мСкопирован = Истина; мОбъектКопирования = ОбъектКопирования; СсылкаНаОбъект = ОбъектКопирования.Ссылка; ДополнительныеСвойства.Вставить("ОбъектКопирования",ОбъектКопирования.Ссылка); ДополнительныеСвойства.Вставить("Скопирован",Истина); КонецПроцедуры //Последующие процедуры Процедура ПриЗаписи(Отказ) КопированиеНаСервере(); КонецПроцедуры Процедура КопированиеНаСервере() //Сообщить(СсылкаНаОбъект ); // Вот тут значение пустое Если ДополнистельныеСвойства.Свойство("Скопирован") Тогда Сообщить(ДополнистельныеСвойства.ОбъектКопирования); КонецЕсли; КонецПроцедуры |
|||
23
sapphire
08.11.13
✎
20:19
|
(21) Глупость
|
|||
24
Жан Пердежон
08.11.13
✎
20:20
|
Процедура ПриКопировании(ОбъектКопирования)
ДополнительныеСвойства.Вставить("ОбъектКопирования", ОбъектКопирования.Ссылка); КонецПроцедуры Процедура ПриЗаписи(Отказ) Если ДополнительныеСвойства.Свойство("ОбъектКопирования") тогда Сообщить(ДополнительныеСвойства.ОбъектКопирования); КонецЕсли; КонецПроцедуры |
|||
25
Дарья_92
08.11.13
✎
20:27
|
(22) (24) Условие не проходит. Раньше сообщение выдавалось, но было пустым, а сейчас в принципе не выдается. Значит условие не проходит!
|
|||
26
sapphire
08.11.13
✎
20:28
|
(24) Сокращенная копипаста :) Можно и так
|
|||
27
Славен
08.11.13
✎
20:33
|
да скорее всего используется переменная с тем же именем что и реквизит, особо забавно если тип у них разный
|
|||
28
sapphire
08.11.13
✎
20:34
|
(25) В модуле формы ПриСозданииНаСервере проверь доп свойства объекта. В принципе, при вызове формы так и будет.
И вот почему. Если, копирование вызвано из формы, то объект создается, вызывается его модуль, после чего данные передаются форме. Но. Форма - это реализация шаблона ООП Representer, т.е. мы работаем уже не с самим объектом, а его представлением и данные на момент записи уже, простите, херятся, но, опять же при создании на сервере данные еще есть. Так что, в перед записью из формы можно передать свойства обратно. |
|||
29
sapphire
08.11.13
✎
20:35
|
+(28) Под данными кои херятся имеется ввиду переменные и доп свойства модуля объекта.
|
|||
30
Дарья_92
08.11.13
✎
20:36
|
Процедура ПриКопировании(ОбъектКопирования)
мСкопирован = Истина; мОбъектКопирования = ОбъектКопирования; СохранитьЗначение("МойСклад", ОбъектКопирования.Ссылка); КонецПроцедуры Процедура ПриЗаписи(Отказ) КопированиеНаСервере(); КонецПроцедуры Процедура КопированиеНаСервере() ДефСклад = ВосстановитьЗначение("МойСклад"); КонецПроцедуры Всем большое спасибо за отклики!!! Вот как заработало))) |
|||
31
banco
08.11.13
✎
20:38
|
(30) а можно узнать зачем вам в ПриЗаписи ссылка на ОбъектКопирования?
|
|||
32
Жан Пердежон
08.11.13
✎
20:38
|
(30) не показывай никому этот код
|
|||
33
sapphire
08.11.13
✎
20:38
|
(30)Боже тебя упаси от такой реализации!!!
|
|||
34
sapphire
08.11.13
✎
20:39
|
(30) Для нового документа будет сообщать старое значение склада. Включи мозг, если он есть.
|
|||
35
mrDSide
09.11.13
✎
00:25
|
(0) возможно было бы неплохо сделать следующее:
1.перекраситься(но не факт); 2.в модуле объекта (это в самом низу, где будет пространство имен объекта, а не какой-нибудь процедуры модуля...) сделать следующее: СсылкаНаОбъект=...здесь должен быть текст; П.С. извините за грубость, день тяжелый. |
|||
36
User_Agronom
09.11.13
✎
00:35
|
(21) переменная в общем модуле не взлетит.
|
|||
37
miron25
09.11.13
✎
07:14
|
(0)Как же событие возникнет и тебе сообщит???
Процедура КопированиеНаСервере() Сообщить(СсылкаНаОбъект ); // Вот тут значение пустое КонецПроцедуры Если событие при записи еще не возникло..а оно возникает после закрытия кнопочки ЗаписатьИзакрыть..То есть Вот тут значение пустое будет полным,после закрытия формы...оно даже успевает показать сообщение.То есть код в нулевом посту правильный.Хотя ДефСклад = ВосстановитьЗначение("МойСклад") тоже хорошо смотрится. |
|||
38
hhhh
09.11.13
✎
10:12
|
(0) может так лучше?
Процедура ПриЗаписи(Отказ) Сообщить(СсылкаНаОбъект ); // Вот тут значение пустое КонецПроцедуры при записи оно и так на сервере |
|||
39
av_x86
09.11.13
✎
11:07
|
(38) Может лучше проверить? И убедиться что не прокатывает.
|
|||
40
Dzenn
гуру
09.11.13
✎
13:20
|
С такими ээээээээ..... глазами нет смысла идти в программисты ;-)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |