Имя: Пароль:
1C
1С v8
Помогите в 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
о! ура! и отладку нашла, и запись в файл заработала. спасибо всем огромное!!