как правильно описать глобальную переменную в модуле формы 1с
Есть такой код. Переменная ЗаписьJSON инициализированная в одной процедуре, не воспринимается в другой. Как это заставить работать?
&НаСервере
Перем ЗаписьJSON;
&НаСервере
Процедура ВыгрузитьНаСервереНачало()
ВременныйФайл = ПолучитьИмяВременногоФайла(".json");
ЗаписьJSON = Новый ЗаписьJSON;
ПараметрыЗаписиJSON = новый ПараметрыЗаписиJSON(,Символы.Таб);
ЗаписьJSON.ОткрытьФайл(ВременныйФайл, "windows-1251",,ПараметрыЗаписиJSON);
ЗаписьJSON.ЗаписатьНачалоОбъекта();
КонецПроцедуры
&НаСервере
Процедура ВыгрузитьНаСервереКонец()
ЗаписьJSON.ЗаписатьКонецОбъекта();
ЗаписьJSON.Закрыть();
Двоичное = Новый ДвоичныеДанные(ВременныйФайл);
АдресФайлаВоВременномХранилище = ПоместитьВоВременноеХранилище(Двоичное, ЭтаФорма.УникальныйИдентификатор);
Попытка
УдалитьФайлы(ВременныйФайл);
Исключение
КонецПопытки;
КонецПроцедуры
Ответы (2 шт):
Не совсем понятно как Вы вызываете эти процедуры ?
В данном случае можно сделать так:
&НаСервере
Перем ЗаписьJSON;
Перем ВременныйФайл;
&НаСервере
Процедура ВыгрузитьНаСервереНачало()
ВременныйФайл = ПолучитьИмяВременногоФайла(".json");
ЗаписьJSON = Новый ЗаписьJSON;
ПараметрыЗаписиJSON = новый ПараметрыЗаписиJSON(,Символы.Таб);
ЗаписьJSON.ОткрытьФайл(ВременныйФайл, "windows-1251",,ПараметрыЗаписиJSON);
ЗаписьJSON.ЗаписатьНачалоОбъекта();
ВыгрузитьНаСервереКонец();
КонецПроцедуры
&НаСервере
Процедура ВыгрузитьНаСервереКонец()
ЗаписьJSON.ЗаписатьКонецОбъекта();
ЗаписьJSON.Закрыть();
Двоичное = Новый ДвоичныеДанные(ВременныйФайл);
АдресФайлаВоВременномХранилище = ПоместитьВоВременноеХранилище(Двоичное, ЭтаФорма.УникальныйИдентификатор);
Попытка
УдалитьФайлы(ВременныйФайл);
Исключение
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура Команда1(Команда)
ВыгрузитьНаСервереНачало();
КонецПроцедуры
Здесь объявил переменную ВременныйФайл как глобальную, это позволит корректно удалить временный файл во время выполнения процедуры ВыгрузитьНаСервереКонец().
Процедуру ВыгрузитьНаСервереКонец() вызываем также на сервере иначе ЗаписьJSON будет неопределена.
Проблема была с переменной записьJSON. Как оказалось 1С не передает объект JSON не передается между сервером и клиентом. Поэтому JSON оставил на клиенте, а на сервере обработку данных и передачу результата на клент через временное хранилище.