Имя: Пароль:
1C
1С v8
8.3. Куда теперь поместить несериализуемый объект?
,
0 mashunka
 
18.07.14
14:12
Добрый день! Имеется 1с-совместимая конфигурация, которая часто обменивается с типовой бухгалтерией данными через COM-соединение. Задача стоит следующая: нужно не подключаться к бухгалтерии каждый раз, как потребуется очередной обмен, а держать как бы постоянное COM-соединение. С этим возникают следующие проблемы.
Если создать COM-соединение на клиенте, то к нему можно потом смело обращаться в течение клиентского сеанса. НО - дальнейшие действия (запросы данных, создание новых документов и т.п.) могут быть выполнены только на сервере. А передать COM-объект с клиента на сервер для дальнейшей с ним работы программа не позволяет ("отсутствует отображение для типа COМОбъект").
Если создать COM-соединение на сервере, то серверная переменная благополучно "умирает" после завершения процедуры, и в следующий раз приходится подключаться заново. До обновления на платформу 8.2 я помещала созданный COM-объект во временное хранилище. Когда нужно было снова обмениваться данными, доставала его оттуда - это гораздо быстрее работает, чем снова подключаться. Теперь на 8.3 этот "несериализуемый" COM-объект во временное хранилище не помещается. 1С советуют "пересмотреть проектное решение". Я уже месяц пересматриваю и ничего придумать не могу.
Может быть, кто-то сможет подкинуть идею. Заранее спасибо за любые пинки в правильном направлении.
1 mikecool
 
18.07.14
14:18
заменить на веб-сервис
2 mashunka
 
18.07.14
14:20
(1) растолкуйте, пожалуйста, что вы имеете в виду?
3 mehfk
 
18.07.14
14:22
(0) ЕМНИП, Fragster предлагал костыль чтобы COM-объект на сервере не умирал.
4 Лодырь
 
18.07.14
14:26
(2) Он имеет в виду использовать не подключение через COM, а организовать передачу данных через web сервис.
5 mashunka
 
18.07.14
14:39
(3) ого, у него столько тем - сейчас попробую поискать
6 mashunka
 
18.07.14
14:41
(4) пошла учить матчасть )
7 H A D G E H O G s
 
18.07.14
14:41
(0) ОбщийМодуль с повторно-возвращаемыми значениями.
8 H A D G E H O G s
 
18.07.14
14:41
Проблема во времени жизни этих значений, оно очень мало.
9 H A D G E H O G s
 
18.07.14
14:43
На мое предложение на партнерском реализовать механизм хранилища несериализуемых серверных значений - на меня накинулась толпа долбоящюров из франчей с криками "попячься, линукс, разным серверы в кластере, вам это не надо". Разработчики тактично отмолчались.
Такие дела.
10 Лодырь
 
18.07.14
14:44
(9) Ну, область применения достаточно узкая, возможно, есть более приоритетные направления разработки.
11 Fragster
 
гуру
18.07.14
14:44
(3) я предлагал немного другое
12 Ksandr
 
18.07.14
14:47
(7) +1
Получил на этот вопрос несколько лет назад ответ от 1С - юзайте повторное использование возвращаемых значений
13 mashunka
 
18.07.14
14:49
(7),(8) - пишут про 20 минут, если указывать, что "на время сеанса" . в принципе, может подойти такой вариант. Там обычно человек сидит и подряд выгрузки фигачит. Если на 20 минут ушел покурить - можно и повторно подключиться, не помрет. Короче, пробовать можно, спасибо.
14 mashunka
 
18.07.14
14:49
(11) и где почитать? или там совсем не о том?
15 Defender aka LINN
 
18.07.14
14:51
(0) Дарю:

Структура = Новый Структура("Объект", НесериализумыйВ83Объект);
ПоместитьВоВременноеХранилище(Структура);

Можно также таблицу значений использовать
16 Лефмихалыч
 
18.07.14
14:52
(15) ета чит, а нормальные пацаны читами не пользуются - сам говорил
17 Fragster
 
гуру
18.07.14
14:52
(13) если "сидит и фигачит" - сделайте "ком" в форме на клиенте ;)
18 H A D G E H O G s
 
18.07.14
14:53
(15) (16) Этот чит не работает в 8.3
19 H A D G E H O G s
 
18.07.14
14:54
(13) ЛПП (ложь, п%^&^&шь, провокация).
20 Dolphinbet
 
18.07.14
14:55
21 Лефмихалыч
 
18.07.14
14:58
(18) у меня на 1С:Предприятие 8.3 (8.3.4.408) работает
в мануале написано, что вроде не должно, но, тля, работает тем не менее
22 H A D G E H O G s
 
18.07.14
14:59
Кэш сбрасывается достаточно произвольно, 20 минут - это фантастика.
24 mashunka
 
18.07.14
14:59
(17) на клиенте не получается, потом нужно через этот ком запросы формировать и документы создавать, надо на сервере
25 Лефмихалыч
 
18.07.14
15:00
+(21) лично только что, нахально ухмыляясь, поместил так во временное хренилище новый COMОбъект("Scripting.Filesystemobject")
26 mashunka
 
18.07.14
15:00
(15) да ну нафиг, я что-то подобное пробовало - не прокатило. Ушла еще раз проверять
27 H A D G E H O G s
 
18.07.14
15:01
(25) Режим совместимости?
28 mashunka
 
18.07.14
15:04
(21) РЕАЛЬНО РАБОТАЕТ. Я пробовала, помню, на первых этапах куда-то запихивать, почему-то мне кажется, что именно в структуру - не получилось!
29 Лефмихалыч
 
18.07.14
15:06
(27) Режим совместимости Версия 8.3.3, платформа тк и вообще 1С:Предприятие 8.3 (8.3.5.823)
30 Fragster
 
гуру
18.07.14
15:06
(24) при работе через КОМ не обязательно делать это на сервере (я про то, что _в ком объекте_ доступны те методы, которые недоступны в тонком клиенте)
31 H A D G E H O G s
 
18.07.14
15:07
(29) гхмм, надо тестировать. Походу разрешили в 8.3.4
32 Лефмихалыч
 
18.07.14
15:07
на 1С:Предприятие 8.3 (8.3.5.823) тоже сработало без режимов совместимости вобоще
33 mashunka
 
18.07.14
15:09
(30) хм, я не пробовала, конечно. Идея тоже пригодится, спасибо. Но в моем случае там много переписывать, потому что помимо действий с ком-объектом много попутных обращений к данным текущей базы, замучаюсь их- по клиентским и серверным процедурам разделять )
34 Лефмихалыч
 
18.07.14
15:10
1С:Предприятие 8.3 (8.3.4.408) без режима совместимости - работает

но это не повод этим пользоваться: это хитрой иглавъяйцеяцовутке рано или позжно работать перестанет - к бабке не ходи
35 mashunka
 
18.07.14
15:18
(34) возможно, платформа ваш объект приняла за сериализуемый, кто ее знает? Мои вот не хотят туда помещаться, пробовала еще раз только что. Через структуру, как подсказал добрый человек (15) почему-то сработало. Это дает мне отсрочку, но вы правы, рано или поздно 1с этот свой баг найдет и исправит :(
36 mikecool
 
18.07.14
15:21
:) непонятно - зачем пытаться использовать костыли, которые могут зависеть от платформы? объясните неграмотному
37 mashunka
 
18.07.14
15:25
(36) время торопит :) Необходимо срочно, чтобы программа работала под 8.3. Пока костыль помогает - пусть работают, а я буду учить матчасть.
38 mashunka
 
18.07.14
15:26
А вообще - всем большое спасибо, дали идеи, в каком направлении работать.
39 mikecool
 
18.07.14
15:27
(38) нет ничего более постоянного, чем временное )))
40 Infsams654
 
18.07.14
15:31
(31) "ромашка" какая-то, "любит, не любит".
Сказано же, что в вр. хранилище только сериализуемые объекты. Если сейчас работает, это не значит что потом будет работать.

Для (0) рекомендую - только на клиенте, и не надо будет задавать потом вопросы
41 mashunka
 
18.07.14
15:32
(39) так и есть! А ведь все тянется еще с той файловой версии программы, когда не было управляемых форм и ком-объект был доступен отовсюду! Никогда ж нет времени взять и все переписать заново! Так и появляются костыли...
42 H A D G E H O G s
 
18.07.14
15:35
(37) (41) Респект таким пацанам!
43 mashunka
 
18.07.14
15:39
(42) угу, пацанам респект, а нам, девчатам, пора идти реализовывать ваши советы.
Еще раз всем спасибо!
44 Defender aka LINN
 
18.07.14
15:41
(42) Где извинения за (19)-то? :)
45 H A D G E H O G s
 
18.07.14
15:42
(44) А что не так? Кэш повторно-возвращаемых живет своей жизнью. 1С объясняет это "если памяти не хватает - кэш сбрасываем"
46 Defender aka LINN
 
18.07.14
15:49
Промахнулся, (18) имел в виду :)
47 banco
 
18.07.14
16:18
(0) а в чем проблема заново подключаться, неужели эти 2-3 секунды так важны?
48 Лефмихалыч
 
18.07.14
16:19
(47) ты не поверишь
49 Лефмихалыч
 
18.07.14
16:20
2-3 секунды - очень важны
миллион записей в регистре сведений - это не много
пара-другая десятков тысяч документов - это мало
маленькая база - это 100Гб
30 пользователей - pfff
50 banco
 
18.07.14
16:24
(49) так ТС месяц пересматривает и не может найти решение, а 2-3 секунды на подключение это очень много.
51 Лефмихалыч
 
18.07.14
16:25
Ну, я так и сказал - ты не поверишь
52 blopp
 
18.07.14
16:54
(15) Максимум через 20 минут или на другом rphost'е сразу - в структуре извлеченной из этого хранилища будет лежать Неопределено.