|
Глобальная переменная модуля формы на сервере | ☑ | ||
---|---|---|---|---|
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
|
Думаю аналогично этому: Книга знаний: Хранение COM Объектов на Сервере ТонкогоКлиента
|
|||
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) Спасибо. )
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |