Имя: Пароль:
1C
1С v8
Глобальная переменная модуля формы на сервере
0 sbabay
 
11.07.13
12:00
Добрый день.
Хочу сделать переменную типа ЗаписьТекста глобальной на сервере для формы внешней обработки.
Надо чтобы работало:


&НаСервере
Процедура СоздатьГлоб()
ГлобЗапись = Новый ЗаписьТекста(ИмяФайлаНаСервере,,,Истина);
КонецПроцедуры

&НаСервере
Процедура ЗаписатьГлобСервер(СтрокаТеста)
ГлобЗапись.ЗаписатьСтроку(СтрокаТеста);
КонецПроцедуры


&НаКлиенте
Процедура ЗаписьЗаписьГлобСер(Команда)
СоздатьГлоб();

Для НомерСтроки = 1 По КолСтрокОбработки Цикл
 СтрокаТеста = "Строка № "+НомерСтроки;
   
 ЗаписатьГлобСервер(СтрокаТеста);
КонецЦикла;
КонецПроцедуры
1 sbabay
 
11.07.13
12:02
ЗаписьТекста - не сериализуется, поэтому в строку/ХЗ и прочее его не положишь.
Желательно без правки основной конфигурации, хотя если других вариантов не будет, то можно и конфу поправить.
Есть идеи?
2 mikecool
 
11.07.13
12:03
нет глобальных переменных, максимум параметры сеанса
3 mikecool
 
11.07.13
12:04
и нафик такой изврат? пиши на клиенте
4 sbabay
 
11.07.13
12:04
А как в параметр сеанса засунуть?
5 mikecool
 
11.07.13
12:05
(4) никак
6 Cube
 
11.07.13
12:05
7 sbabay
 
11.07.13
12:06
(3) это я для теста привел. Вся запись идет на сервере - логгирование.
Но вызов сервера происходит между "клиентами", поэтому надо хранить эту переменную. Если инициализировать её каждый раз заново, тогда не получаю скорость, ради которой всё это и затевалось. (~42 сек. против ~0 сек для 500 строк)
8 sbabay
 
11.07.13
12:08
(6) см. (1)
Объект не сериализуется
9 Cube
 
11.07.13
12:09
(8) А что, COMОбъект сериализуется?
10 Maxus43
 
11.07.13
12:09
меняй логику... записывай 1 раз на сервере, а не гоняй туда-сюда
11 Darych
 
11.07.13
12:09
глоб переменная для юзанья во внешней обработке ток... хм
12 acsent
 
11.07.13
12:10
&НаСервереБезКонтекста
попробуй
13 Cube
 
11.07.13
12:10
(10) А если надо пользователю прогрессбар обновлять?
14 sbabay
 
11.07.13
12:11
(10) Там примерно такая схема:

&НаКлиента
Процедура Загрузить()
 Сервер1();
 Сервер2();
 ЧтоТоклиент();
 Сервер3();
КонецПроцедуры

На вызовах Сервера мне надо записывать в файл.
15 sbabay
 
11.07.13
12:12
(12) А саму переменную где хранить/объявить?
16 Maxus43
 
11.07.13
12:17
(14) на логику
 ЧтоТоклиент();
 Сервер123();

надо попытаться изменить
17 sbabay
 
11.07.13
13:02
(16) это неизменно.

У сабжа вообще есть решения?
18 Поросенок Петр
 
11.07.13
13:05
(17) Есть. Переписать это г*но, пока никто не увидел.
19 sbabay
 
11.07.13
13:16
(18) Это про 1С ?
20 Cube
 
11.07.13
13:20
sbabay или что-то не понял или ты внатуре писатель...
У меня всё работает:


&НаКлиенте
Процедура Команда1(Команда)
   
   СоздатьГлоб();
   
   Для НомерСтроки = 1 По 5 Цикл
       СтрокаТеста = "Строка № "+НомерСтроки;
       ЗаписатьГлобСервер(СтрокаТеста);
   КонецЦикла;
   
КонецПроцедуры

&НаСервере
Процедура СоздатьГлоб()
   
   ГлобЗапись = Новый ЗаписьТекста(ИмяФайлаНаСервере,,,Истина);
   ПараметрыСеанса.ГлобЗапись = ПоместитьВоВременноеХранилище(ГлобЗапись, Новый УникальныйИдентификатор());
   
КонецПроцедуры

&НаСервере
Процедура ЗаписатьГлобСервер(СтрокаТеста)
   
   ГлобЗапись = ПолучитьИзВременногоХранилища(ПараметрыСеанса.ГлобЗапись);
   ГлобЗапись.ЗаписатьСтроку(СтрокаТеста);
   
КонецПроцедуры
21 sbabay
 
11.07.13
13:23
(20) Я вместо "ПараметрыСеанса.ГлобЗапись" использовал реквизит формы типа строка - не прокатывало.
Странно почему тут работает
22 Лефмихалыч
 
11.07.13
13:25
(0) зачем?
23 Лефмихалыч
 
11.07.13
13:26
есть же ЗаписьЖурналаРегистрации(), зачем в текстовое файло логи писать?
24 sbabay
 
11.07.13
13:29
(23) свой формат, возможно и много отладочного текста, зачем захломлять ЖР?
25 sbabay
 
11.07.13
13:43
(20),(21) работает и со строковым реквизитом. Просто я при помещении во врем. хранилище не указывал УИД.
В общем 1 вариант есть.
26 Cube
 
11.07.13
13:44
(25) Как так? Он же не сериализуется? См. (8)
27 sbabay
 
11.07.13
13:50
(26) Не знаю как но из справки к методу "ПоместитьВоВременноеХранилище".

"Описание:

Сохраняет сериализуемое значение во временное хранилище."
28 Cube
 
11.07.13
13:52
Готов выслушать слова благодарности))
29 sbabay
 
11.07.13
14:02
(28) Спасибо. )
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.