|
Помогите в 1с 8.3 в модуле объекта "увидеть" переменную, объявленную в нём же | ☑ | ||
---|---|---|---|---|
0
Девушка-Вамп
22.01.15
✎
09:43
|
Процедуры в модуле формы:
&НаКлиенте Процедура Загрузить(Команда) //вызывается нажатием на кнопку формы ЗагрузитьНАСервере(); КонецПроцедуры &НаСервере Процедура ЗагрузитьНАСервере() //делаем процедуру на сервере, чтобы увидеть процедуры модуля объекта ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); ОбработкаОбъект.ОткрытьФайлЛогов(); ОбработкаОбъект.СделатьЧтоНибудь(); Сообщить("--**--Всё готово--**--!"+Формат(ТекущаяДата(),"ДЛФ=T")); ОбработкаОбъект.ЗакрытьФайлЛогов(); КонецПроцедуры Процедуры в модуле объекта: &НаСервере Перем ФайлЛоговОшибок Экспорт; Процедура ОткрытьФайлЛогов() Экспорт ФайлЛоговОшибок = Новый ЗаписьТекста; Попытка ФайлЛоговОшибок.Открыть(ПутьКФайлу+"\log_oshib_"+Формат(ТекущаяДата(),"ДФ=ММdd_ЧЧммсс")+".txt", КодировкаТекста.UTF8); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; КонецПроцедуры &НаСервере Процедура СообщитьОшибку(Стр) Сообщить(Стр,СтатусСообщения.Внимание); ФайлЛоговОшибок.ЗаписатьСтроку(Стр); КонецПроцедуры &НаСервере Процедура ЗакрытьФайлЛогов() Экспорт ФайлЛогов.Закрыть(); ФайлЛоговОшибок.Закрыть(); КонецПроцедуры &НаСервере Процедура СделатьЧтоНибудь() Экспорт //что-то делаем СообщитьОшибку("сообщаем что-то"); //в этом месте возникает ошибка:"Файл не открыт." КонецПроцедуры что я делаю не так? в 8.1 работало как часы, а тут не могу никак разобратсья :( |
|||
1
banco
22.01.15
✎
09:45
|
(0) а ошибка где?
|
|||
2
Девушка-Вамп
22.01.15
✎
09:49
|
(1)
в процедуре СделатьЧтоНибудь, когда пытается записать строку в файл, пишет что файл не открыт: &НаСервере Процедура СделатьЧтоНибудь() Экспорт //что-то делаем СообщитьОшибку("сообщаем что-то"); !!!!!!!тут ошибка:"Файл не открыт."!!! КонецПроцедуры |
|||
3
zulu_mix
22.01.15
✎
09:51
|
а кому ты на сервере сообщать собрался?
|
|||
4
Девушка-Вамп
22.01.15
✎
09:51
|
если быто точнее, то здесь:
Процедура ЗагрузитьНАСервере() ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); ОбработкаОбъект.ОткрытьФайлЛогов(); !!! создаём и открываем текстовый файл, ОбработкаОбъект.СделатьЧтоНибудь(); !!! здесь, при попытке записать в это файл информацию возникает ошибка, что файл не открыт ОбработкаОбъект.ЗакрытьФайлЛогов(); КонецПроцедуры |
|||
5
Челбас
22.01.15
✎
09:53
|
(4) у тебя открытие в попытки, может оно и впрямь не открывается?
|
|||
6
banco
22.01.15
✎
09:54
|
(2) значит переменную видит, раз пишет что файл не открыт. а на сервере по этому пути точно есть этот файл и есть права на этот файл?
|
|||
7
Девушка-Вамп
22.01.15
✎
09:55
|
это моя процедура так называется, она запись в текстовый файл делает
в модуле объекта объявляем глобальную переменную, затем из модуля формы запускаем глобальную процедуру, которая создаёт текстовый файл и фиксирует его за этой переменной, следом запускам другу процедуру, которая в этот файл текст записать пытается, и тут ошибка на 8.1 такая конструкция работает + я не знаю как отладчиком пройтись по процедуре, которая на сервере делается :( файл сознаю на своём, локальном, диске |
|||
8
Maxus43
22.01.15
✎
09:58
|
нет в Управляемом приложении глобальных переменных. Объект уничтожается на сервере, когда на клиент едет.
используй реквизиты формы, либо объекта |
|||
9
banco
22.01.15
✎
10:00
|
(7) файл у тебя на локальном диске. а сервер где? сервер знает про твой локальный диск?
|
|||
10
Девушка-Вамп
22.01.15
✎
10:01
|
(8) поняла, спасибо!
а ещё подскажите, на клиенте нельзя запускать глобальные процедуры из модуля объекта? или можно, просто я не нашла кк? |
|||
11
Провинциальный 1сник
22.01.15
✎
10:02
|
(8) Только надо понимать, что между вызовами сервер НИЧЕГО не хранит.. и все эти реквизиты объекта сериализуются в контекст и гоняются между клиентом и сервером почем зря..
|
|||
12
Defender aka LINN
22.01.15
✎
10:05
|
(0) Ты создаешь новый объект. С чего бы у него переменная модуля была заполнена?
|
|||
13
Девушка-Вамп
22.01.15
✎
10:09
|
(12) я её в одной процедуре присваиваю, а из другой смотрю. в 8.1 работает
(11)спасибо! теперь поняла, буду по другому придумывать. так хорошо раньше было(( |
|||
14
Defender aka LINN
22.01.15
✎
10:12
|
(13) Одна процедура - в одном объекте, другая - в другом. От того, что ты себе ногу отрежешь, сестра-близнец не охромеет. Так понятнее?
|
|||
15
banco
22.01.15
✎
10:12
|
(8)
Процедура ЗагрузитьНАСервере() ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); ОбработкаОбъект.ОткрытьФайлЛогов(); !!! создаём и открываем текстовый файл, ОбработкаОбъект.СделатьЧтоНибудь(); !!! здесь, при попытке записать в это файл информацию возникает ошибка, что файл не открыт ОбработкаОбъект.ЗакрытьФайлЛогов(); КонецПроцедуры тут все вызовы на сервере, так что причина не в том что нет переменной, а в том что путь к файлу неправильно указан и файл не создается |
|||
16
Maxus43
22.01.15
✎
10:19
|
(15) не все вызовы на сервере, а 3 вызова сервера, и переменная пустая при каждом вызове. Заполнив в одном - в других вызовах она будет неопределено
|
|||
17
Девушка-Вамп
22.01.15
✎
10:19
|
(15) да правильно путь к файлу указан. (11) хорошо пояснил, что "между вызовами сервер НИЧЕГО не хранит"
СПАСИБО!! заработало!! может ещё подскажите, как мне отладчиком пройтись по процедурам, которые на сервере делаются? |
|||
18
Девушка-Вамп
22.01.15
✎
10:19
|
(16) спасибо!!
|
|||
19
Девушка-Вамп
22.01.15
✎
10:33
|
о! ура! и отладку нашла, и запись в файл заработала. спасибо всем огромное!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |