Надоело повторное COM-соединение? Не помещается COM-объект в хранилище? Есть решение!

19.04.17

Интеграция - Обмен между базами 1C

В этой статье описывается решение проблемы хранения COM-соединения, а также повторного соединения к базе каждый раз, как потребуется очередной обмен.

Итак, начнем с того, что в платформе 8.2 можно было сохранить соединение во временное хранилище. Как это делается:

л_COMОбъект=Новый COMОбъект("v82.Application");
л_АдресВХранилище=ПоместитьВоВременноеХранилище(л_COMОбъект, Новый УникальныйИдентификатор());

Ну и получать COM-объект из временного хранилища:

л_COMОбъект = ПолучитьИзВременногоХранилища(л_АдресВХранилище);

Но в платформе 8.3 возникает ошибка "Переданное значение не может быть помещено во временное хранилище".

На 8.3 во временное хранилище можно помещать только те данные, для которых поддерживается сериализация. Делается точно так же, но немного другой код:

 

л_COMОбъект = Новый COMОбъект("V83.Application");
л_Структура = Новый Структура("COMОбъект", л_COMОбъект);
л_АдресВХранилище = ПоместитьВоВременноеХранилище(л_Структура, Новый УникальныйИдентификатор());

Соответственно получаем:

л_COMОбъект = ПолучитьИзВременногоХранилища(л_АдресВХранилище).COMОбъект;

Важно: получать из хранилища только на сервере (если на сервере помещали), или аналогично на клиенте.

На этом статья заканчивается.

См. также

SALE! 20%

Перенос данных из УПП 1.3 в ERP 2 / УТ 11 / КА 2. Переносятся документы, справочная информация и остатки

Обмен между базами 1C Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) в продаже с 2015 года, постоянно работаем над их развитием | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

45650 36520 руб.

04.08.2015    159680    363    267    

345

SALE! 15%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 22572 руб.

12.06.2017    134933    722    291    

388

SALE! 20%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

34650 27720 руб.

15.04.2019    68417    178    138    

111

SALE! 20%

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Воспользовались более 79 предприятий! | Предлагаем приобрести готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | В продаже с 2020г. | Оперативно обновляем правила до актуальных релизов 1С | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

43450 34760 руб.

03.12.2020    34169    80    58    

78

SALE! 10%

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.87.x) и УТ 11.5 (11.5.16.x).

28000 25200 руб.

23.07.2020    46290    196    64    

158

SALE! 10%

Перенос данных из БП 3.0 в УТ 11 / КА 2 / ERP 2. Переносятся начальные остатки, документы и справочники

Обмен между базами 1C Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

В продаже с 2014г. | Воспользовались более 122 предприятий! | Перенос данных из БП 3.0 в УТ 11 | из БП 3.0 в КА 2 | из БП 3.0 в ERP | Сэкономьте свое время - используйте готовое решение для перехода! | Постоянно работаем над развитием переноса данных | Обновляем на новые релизы 1С | Есть фильтр выгрузки по организациям | Переносятся начальные остатки на выбранную дату, документы за период времени и вся возможная справочная информация | Перенос сделан на технологии КД 2 (правила конвертации данных)

50722 45650 руб.

31.10.2014    231404    124    327    

296

Перенос данных из Парус 10 в ЗГУ ред.3

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9207    9    8    

10

SALE! 10%

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.223.x) и БП 3.0 (3.0.149.x). Правила подходят для версии ПРОФ и КОРП.

28000 25200 руб.

15.12.2021    20247    132    38    

90
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. jobkostya1c_ERP 100 24.02.15 07:07 Сейчас в теме
Может стоит и попробовать прием, но опасно
COM-объект в хранилище
. А вдруг опять проблема с релизом платформы?
2. karpik666 3760 24.02.15 09:13 Сейчас в теме
И такой способ реально работает?
3. ZhokhovM 724 24.02.15 09:17 Сейчас в теме
4. tormozit 7136 24.02.15 09:51 Сейчас в теме
В примере для 8.3 забыл про второй параметр метода ПоместитьВоВременноеХранилище
5. ZhokhovM 724 24.02.15 09:53 Сейчас в теме
(4) tormozit, точно. Спасибо.
6. kalyaka 1053 24.02.15 09:56 Сейчас в теме
В 8.3 может и не сработать, см. "Особенности временного хранилища" в публикации http://infostart.ru/public/198766/
32. androgin 03.03.15 02:45 Сейчас в теме
(6) kalyaka, в 8.3 все прекрасно работает!
40. kalyaka 1053 13.03.15 16:18 Сейчас в теме
(32) androgin, а если кластер состоит из нескольких рабочих серверов и произойдет переподключение с одного рабочего сервер на другой?
7. rulan87 25.02.15 11:33 Сейчас в теме
Есть другой способ: использовать модуль повторного использования, в котором получать функцией ком соединение. При первом обращении ком соединение кешируется
asdPerepel; ProChelny; Sersh2010; molodoi1sneg; Bassgood; Yashazz; BigB; +7 Ответить
8. tormozit 7136 25.02.15 12:48 Сейчас в теме
(7) Через 20 мин однако это значение из кэша удаляется.
9. ZhokhovM 724 25.02.15 12:50 Сейчас в теме
10. ZhokhovM 724 25.02.15 12:55 Сейчас в теме
(7) rulan87, да, на время сеанса либо COM+.
71. Regner 20.05.19 10:53 Сейчас в теме
(7) а как потом закрывать соединение?В кэше данные хранятся 20 мин, спустя это время при повторном использовании новый сом объект создатся.
11. dmpas 417 25.02.15 13:21 Сейчас в теме
Пилю out-of-process COM-класс для такого рода задач. Работает примерно так:
R = New ComObject("V8Pool.CacheConnector");
R.setCacheId("1");

A = R.connect("File=C:\Users\sbatanov\Documents\InfoBase12");
A.ОбщийМодуль1.SetCommonData("abababab");

R.setCacheId("2");

B = R.connect("File=C:\Users\sbatanov\Documents\InfoBase12");
B.ОбщийМодуль1.SetCommonData("dfdfdfdf");

A = Undefined;
B = Undefined;

R.setCacheId("1");
C = R.connect("File=C:\Users\sbatanov\Documents\InfoBase12");

Message(C.ОбщийМодуль1.GetCommonData()); // abababab
Показать


Мне нужно сохранять соединение между сеансами для работы веб-сервиса. По сути, разница с обычным КОМ-соединителем только в строке класса COM-объекта.
tormozit; rtnm; BigB; ZhokhovM; +4 Ответить
12. tormozit 7136 25.02.15 15:42 Сейчас в теме
(11) baton_pk, когда планируешь допилить? Что будет если два сеанса одновременно запросят один и тот же CacheId? В какой момент уничтожается объект или он работает резидентно через COM+?
13. dmpas 417 25.02.15 16:27 Сейчас в теме
(12) tormozit,

когда планируешь допилить?

Для моих мелочных нужд оно, в принципе, уже работает. Если приводить к более-менее коробочному виду, то к концу следующей недели думал закончить.


Что будет если два сеанса одновременно запросят один и тот же CacheId?

Они получат один и тот же COM-объект. Потому у меня в качестве id используется имя пользователя, а одновременная работа двух пользователей с одним именем у меня отсекается на уровне логики приложения.


В какой момент уничтожается объект или он работает резидентно через COM+?

С этим сейчас у меня пока творческий ступор: как сделать лучше. Это COM+ (насколько я знаком с терминологией), то есть EXE-сервер. Сейчас он выключается по истечении некоторого таймаута после отключения последнего сеанса. То есть как-то так:

Первый подключился - запускается EXE-сервер.
второй-третий-...-тысячный - работают с тем же EXE-сервером и с его хранилищем 1С-соединений

как только все-все-все отсоединятся, запускается таймер-убийца (для отладки у меня 10 секунд стоит, но в боях я буду минут 10 выставлять). Если по истечении времени не было новых соединений, то EXE-сервер закрывается и закрывает все 1С-соединения. Следующее соединение уже запустит новый чистый EXE-сервер.

Не запутаться бы, где какое соединение :-)
15. tormozit 7136 25.02.15 17:06 Сейчас в теме
(13) baton_pk, про COM+ описал правильно. Твоя реализация судя по описанию не позволяет конкурентно использовать пул внешних соединений. Про ограничение количества сеансов на одного пользователя я так понял, что в случае обслуживания операции веб-сервиса сразу от нескольких клиентов только один из них получит ответ, а остальные отказ.
16. dmpas 417 25.02.15 17:46 Сейчас в теме
(15) tormozit, Нет, у меня разные клиенты под разными пользователями входят. Соответственно, у каждого свой кэш получается.
Если тебе нужно, чтобы внутри одного сеанса хранился объект, то в качестве идентификатора кэша можно использовать имя пользователя и номер сеанса. А если всё-таки между сеансами перебрасывать, то тут либо пользователей разносить, либо какой-то механизм сессий вводить, когда ты клиенту передаёшь идентификатор при первом соединении и клиент с этим идентификатором дальше с тобой общается (типа сессий в PHP). Я пока в эту сторону думаю.
14. dmpas 417 25.02.15 16:30 Сейчас в теме
(12) tormozit,
Что будет если два сеанса одновременно запросят один и тот же CacheId?

Тут надо ещё один момент уточнить: сопоставление идёт не CacheId => ComObject, а {CacheId, ConnectionString} => ComObject.

То есть в одном кэше два подключения к разным базам (или под разным пользователем и т.д.) - это разные объекты, разумеется.
17. rtnm 614 26.02.15 08:33 Сейчас в теме
(11) baton_pk, а замерял на сколько падает производительность при использовании V8Pool.CacheConnector? В моей реализации подобного пула (больше похожего на то что описывал tormozit - конкурентное получение соединения из пула с фиксированным размером) производительность упала в 10-20 раз. Замерял время на сортировке, т.е. на коде который совершает много мелких вызовов. Даже осознавая присутствие маршалинга, я был сильно разочарован и "заморозил" разработку.
18. dmpas 417 26.02.15 08:41 Сейчас в теме
(17) rtnm, нет, замерами не занимался. мне просто даже в голову не пришло, что поиск соединения в пуле может быть в разы медленнее, чем создание нового соединения с Комплексной Автоматизацией.
19. rtnm 614 26.02.15 09:24 Сейчас в теме
(18) baton_pk, причем тут поиск соединения? Речь про затраты на маршалинг.
20. dmpas 417 26.02.15 09:42 Сейчас в теме
(19) rtnm, тогда я не понимаю, что с чем надо сравнивать?
что через CacheConnector, что через родной ComConnector работа в итоге идёт через один и тот же класс внешнего соединения? Маршаллинг в любом случае присутствует.
21. rtnm 614 26.02.15 10:16 Сейчас в теме
(20) baton_pk, я, например, сравнивал скорость работы алгоритма сортировки (не помню какого точно), генерировал массив с воспроизводимыми псевдослучайными значениями, и запускал сортировку:
1. в обычной среде выполнения 1С
2. с использованием V8x.ComConnector (без учета времени подключения)
3. с использованием своей компоненты, аналог вашей V8Pool.CacheConnector (без учета времени подключения)

Так вот 3 получался медленнее 1 примерно в 10-20 раз. 2 тоже был медленнее 1, но не так сильно.
Естественно для 2 и 3 речь идет о том, что сам алгоритм сортировки располагался в базе которая подключается, а не к которой подключаются.

Маршалинг в 2 и 3 присутствует, но он разный, в случае 3 он будет межпроцессным.

Было бы интересно увидеть ваши замеры.

22. dmpas 417 26.02.15 10:53 Сейчас в теме
(21) rtnm, померял.
Сделал две сортировки: одну "в лоб", одну "правильно".
В лоб разница существенная: 10 секунд против 88.
Правильно - это с сокращением количества "клиент-серверных" вызовов. Там разница 2 мс против 4 мс.

Не вижу поводов отчаиваться, при правильно построенной логике клиент-серверного взаимодействия разница в скорости будет мала.
Грубо говоря, вместо
Для Каждого КомЭлемент Из КомСписок Цикл
	КомБаза.КомОбработать(КоэмЭлемент);
КонецЦикла;

Надо делать:
КомБаза.КомОбработатьСразуСписок(КомСписок);


PS. Но разницу в маршаллинге внутри процесса и между процессами зарубил себе на носу в любом случае. Спасибо.
Прикрепленные файлы:
Обработка.Сортировка.Команда.КомандаВыполнитьСортировку.МодульКоманды.txt
Обработка.Сортировка.Команда.КомандаВыполнитьСортировкуПравильно.МодульКоманды.txt
23. rtnm 614 26.02.15 11:15 Сейчас в теме
(22) baton_pk, спасибо за замеры, появилась мысль "разморозить" разработку, найти бы только время :)

По поводу правильно построенной логике клиент-серверного взаимодействия.
Основная идея создания такой компоненты заключалась в том, чтобы не было необходимости снимать типовую конфигурацию с полной поддержки.

Например, есть типовая конфигурация на полной поддержке. Необходимо сделать для нее веб-сервис(http-сервис) со следующими ограничениями:
1. Не снимать полную поддержку с типовой конфигурации
2. Реализовать логику работы веб-сервиса(http-сервис) средствами 1С, чтобы любой разработчик 1С мог в ней разобраться (без подключения других инструментов, например, ASP.NET)
3. Получить в итоге адекватное время ответа от веб-сервиса(http-сервиса).

Кстати, еще одной причиной "заморозки" моей разработки являлась анонсированная в 8.3.6 возможность расширений, в которой я думал будет возможность, например, подключать веб-сервисы и http-сервисы, но пока этого не случилось.
24. dmpas 417 26.02.15 11:22 Сейчас в теме
(23) rtnm,
снимать типовую конфигурацию с полной поддержки.

А если попробовать через внешнее соединение подключать внешнюю обработку и всю логику запихивать туда?
25. rtnm 614 26.02.15 11:37 Сейчас в теме
(24) baton_pk, этот вариант нужно всегда иметь на заметке. Конкретно в моем случае, я использую pool com-конектора, и обработку надо будет постоянно загружать заново, потому что она будет выгружаться при завершении соединения и помещении его в pool. В общем тут надо подумать :)
26. Yashazz 4709 26.02.15 13:16 Сейчас в теме
Мне одному кажется, что за попытку передать com-соединение на сервер надо люто минусовать этот бред?
И что эта, простигосспади, "статья" противоречит рекомендациям 1С по разработке?
27. ZhokhovM 724 26.02.15 13:44 Сейчас в теме
Мне одному кажется, что за попытку передать com-соединение на сервер надо люто минусовать этот бред?

Попробуйте создать реквизит обработки произвольного типа и хранить com-объект в нем.
28. Yashazz 4709 26.02.15 13:46 Сейчас в теме
(27) это не ответ. Сама попытка передачи COM-соединения с клиента на сервер - это грубейшая ошибка. В 8.2 защита ещё не была доведена до ума, поэтому позволяла такие хамские вольности, в 8.3 это, к счастью, пресекли.
29. ZhokhovM 724 26.02.15 14:00 Сейчас в теме
(28) Yashazz, цитирую из статьи:
Важно: получать из хранилища только на сервере (если на сервере помещали), или аналогично на клиенте.
30. Yashazz 4709 26.02.15 14:09 Сейчас в теме
А, то есть речь о работе клиент-клиент или сервер-сервер? Тогда да, согласен, нормально.
31. androgin 03.03.15 02:44 Сейчас в теме
33. ZhokhovM 724 03.03.15 09:14 Сейчас в теме
(31) androgin, псс-с. Всего-то помаленьку.
34. androgin 03.03.15 21:54 Сейчас в теме
(33) lf да ты стырил ВСЁ, только префиксы добавил.
Только мой вариант более живучий, чем твой)))
Догадайся почему))
35. ZhokhovM 724 04.03.15 10:07 Сейчас в теме
(34) androgin, ну я сперва начал искать ответы на разных сайтах, решил сделать статью и показать другу, как это работает в 8.3. Могу привести ссылки:
http://forum.infostart.ru/forum86/topic118827/
http://forum.infostart.ru/forum26/topic103575/
http://forum-mista.pro/topic.php?id=714692/
были еще ссылки...

Только мой вариант более живучий, чем твой)))
Догадайся почему))

м.б. то что на клиенте у меня не работает или нет глобальной переменной?
36. androgin 09.03.15 19:45 Сейчас в теме
(35) Если бы ты сам писал код, то имена переменных, вплоть до расстановки знаков, не были бы идентичны
37. karpik666 3760 10.03.15 06:15 Сейчас в теме
38. ZhokhovM 724 10.03.15 10:57 Сейчас в теме
39. karpik666 3760 10.03.15 17:48 Сейчас в теме
(38) вообще-то это не спам, просто дополнение к вашей беседе, кто у кого и сколько скопировал=)
41. androgin 20.03.15 01:39 Сейчас в теме
(39) karpik666, Если ты не понял сути, то зачем встревать со своей статьей?))
42. dj_serega 390 27.04.15 09:36 Сейчас в теме
Спасибо за статью. Отработало как часы.
43. ZhokhovM 724 27.04.15 09:47 Сейчас в теме
44. Гость 09.09.15 11:39
Добрый день.

А как быть с временем соединения... спустя минуту COM автоматически сбрасываться(
(Используются серверные базы)

Можно как-то настроить?
45. tormozit 7136 17.01.16 16:08 Сейчас в теме
Есть еще такой метод v82Server.dll - Технология Microsoft COM+ для доступа к 1C82, но посложнее в настройке конечно и нет готовых бинарников/исходников для 8.2+
46. Abcraft 68 09.03.16 05:56 Сейчас в теме
В какой-то момент времени на сервере перестал работать данный метод. Структура в хранилище сохраняется, но после чтения из хранилища данных нет ( л_Структура.COMОбъект = неопределено ).
Проблема решилась добавлением фиксированной структуры:
л_Структура = Новый ФиксированнаяСтруктура( Новый Структура("COMОбъект", л_COMОбъект));
tormozit; ZhokhovM; +2 Ответить
47. Caliban 133 15.04.16 08:46 Сейчас в теме
(46) infosoftvc, у меня сегодня внезапно тоже перестал сохраняться COM-объект в структуре. До этого больше года работало как часы. Вариант с фиксированной структурой не помог. Кто нибудь еще сталкивался с таким?
48. kalyaka 1053 28.04.16 11:50 Сейчас в теме
(47) Caliban, не все com объекты поддерживают сериализацию. Еще, возможно, сама 1С не сериализует com, а использует ссылку на существующий объект и если происходит переподключение с одного рабочего процесса на другой, то не факт, что будет сохранен com объект.
49. Serginio 938 28.04.16 12:36 Сейчас в теме
Я бы на нет сделал статическое свойство (синглетон) Dictioanary<string,object> который бы по ProgID отдавал нужную ссылку и создавал её если еще не создавалась. Загруженные библиотеки не выгружаются из процесса. И этот синглетон будет жить пока рабочий процесс не перегрузится.
50. dj_serega 390 06.12.16 11:35 Сейчас в теме
8.3.8.1652.
Теперь нельзя помещать во временное хранилище COM подключение (покрайней мере на клиенте) :(
51. tormozit 7136 06.12.16 12:25 Сейчас в теме
53. dj_serega 390 06.12.16 17:31 Сейчас в теме
(51) Код следующий:
COMConnector = Новый COMОбъект("V83.COMConnector")
COMConnector.Connect(СтрокаПодключения);
АдресCOMПодключения = ПоместитьВоВременноеХранилище(Новый Структура("ПодключениеБазы", COMConnector), Новый УникальныйИдентификатор);
52. dj_serega 390 06.12.16 17:27 Сейчас в теме
COM = Новый COMОбъект("V83.Application"); - Все ок

COM = Новый COMОбъект("V83.COMConnector"); - Ошибка.

Текст ошибки
55. tormozit 7136 06.12.16 17:46 Сейчас в теме
(52) это на тонком клиенте что ли?
57. dj_serega 390 06.12.16 17:47 Сейчас в теме
59. fokin 12.03.17 14:02 Сейчас в теме
(57) Получилось побороть?

у меня на 8.3.8.2088 аналогичная беда

только не пойму почему все тоже самое, но &НаСервере отрабатывает без ошибок?
54. dj_serega 390 06.12.16 17:38 Сейчас в теме
Хотя нет... и Application туда ошибку :( Сейчас наваяю обработку и приложу сюда
56. dj_serega 390 06.12.16 17:46 Сейчас в теме
Воть.
База: 1С:Предприятие 8.3 (8.3.8.1652)
Пустая новая конфигурация.
Прикрепленные файлы:
ОбработкаПомещенияВХранилище.epf
58. Farpost 116 24.01.17 12:37 Сейчас в теме
Вот кто мне объяснит - зачем УФ и тонкий клиент на сервере где все юзеры работают по РДП или на локальной машине?
Какое облегчение приносит применение УФ???
Видя насколько увеличился объём кода и реально замеряя производительность системы, прихожу к выводу, что УФ в описываемых мной случаях бред полный.
a0212; Yashazz; +2 Ответить
60. dj_serega 390 15.03.17 09:48 Сейчас в теме
(58)
Какое облегчение приносит применение УФ???

Запустите УПП на обычных формах на нетбуке.
И, там же, запустите какое-то (правильно написанное уф) через тонкий клиент или через веббраузер.
61. Farpost 116 16.03.17 07:41 Сейчас в теме
(60)
А зачем заниматься извращениями? Есть определенные требования ПО к аппаратной части - Вы же не будете запускать скажем WarCraft II на смартфоне и требовать от него такой же производительности....

Если Ваша фирма доросла до УППырища, то уж запускать этого монстра на нетбуках - такой же бред как применение УФ в описанных мной случаях
62. Farpost 116 16.03.17 07:44 Сейчас в теме
(60) Вдогон...
Вы мой пост либо недочитали, либо не осознали прочитанное - советую перечитать и вникнуть в смысл описанного... Я запускаю 1Сину НА СЕРВЕРЕ!!! Довольно мощном и доступ пользователей по РДП протоколу - и на кой хрен мне ваши УФ при таком режиме работы?
63. Anchoret 60 16.03.17 09:17 Сейчас в теме
(62)
Из популярного: попробуйте запустить обычные формы в браузере
dj_serega; +1 Ответить
66. Farpost 116 18.03.17 02:43 Сейчас в теме
(63) А зачем? Объясните мне смысл сего действия?
64. dj_serega 390 16.03.17 09:48 Сейчас в теме
(62)
Я запускаю 1Сину НА СЕРВЕРЕ!!!

В этом и вопрос. При правильной архитектуре и разработке сервер нужен только для хранения БД + публикация на вебсервере.

Итого. Есть один сервер где все сложное выполняется и есть клиентская часть где выполняется только отрисовка данных + простые вычисления.

На один сеанс клиента нужно +-500 мб памяти. При 100 пользователях объем не маленький. Все это нужно для сервера RDP. А в случае с тонким клиентом (по прямому подключению или через web) серверу нужно (в основном) только хранить подключение и выполнять запросы клиента.

Кстати, в (63) хороший пример приведен. Что бы не запускать тонкого клиента можно в 1С работать через веб-браузер. Нагрузка будет еще меньше (я про клиента).

p.s.: предлагаю почитать эту статью. Очень хорошо описаны проблемы клиент-серверного взаимодействия. Да есть нюансы, но присмотревшись на картинки видно что в случае с обычными формами "библиотека" будет находится возле каждого клиента. А в случае с управляемыми формами "библиотека" одна и клиенты только запрашивают простые данные.
65. Farpost 116 18.03.17 02:39 Сейчас в теме
(64)
И с чего это вы взяли что РДП жрет 500 мегабайт на сессию? Максимум 50 Мб... И уж если у меня будет 100 пользователей, то сервер у меня будет на порядок мощнее хотя бы для обеспечения работы СУБД... Вы сами себе противоречите - если надо экономить ресурсы сервера за счет терминальных подключений, то эта экономия сожрётся 1Синой на УФ...
В моём случае и я уверен у многих аналогичная ситуация, когда ресурсов сервера вполне хватает на все терминальные сеансы с запасом, а интернет весьма нестабильный у удаленных клиентов (раскиданы на площади примерно равной площади Франции) запускать УФ в любом виде, что в браузере, что в варианте тонкого клиента бредятина полная - 1Сина тупит на таких соединениях безбожно. А плюс РДП в том, что оборвался коннект - и ничего - восстановился и продолжаем работу в том же сеансе на том же месте...
Я уж не говорю про удобство доработки конф и отладки...
67. dj_serega 390 19.03.17 13:52 Сейчас в теме
(65) Каждый останется при своем мнении. Прям как вкус и цвет фломастеров :-))
69. Farpost 116 20.03.17 03:19 Сейчас в теме
(67) Еще раз убеждаюсь, что апологеты 1С или не читают вообще или не хотят ничего слышать критического...
Мой первый вопрос был: Какое облегчение приносит применение УФ? В конкретном случае - мне например непонятна политика 1С, соответственно франчей и большинства внедренцев везде впендюрить УФ... И ведь впендюривают, даже там где от УФ больше вреда чем пользы...
Я не спорю, есть моменты когда УФ возможно более удобны чем обычные, всякое бывает, но по своему опыту и практической работы увы вижу, что в 90% это чистый маркетинг...

(68) Да легко - например: http://infostart.me/public/313737/ или http://infostart.ru/public/197612/ да и маппинг портов тоже никто не отменял... ПОсмотреть отчеты тоже проще по РДП - быстрее шевелиться чем УФ через кучу провайдеров, а ещё есть разработки (правда не 1С, вот например: http://bureautics.ru/ на платформе хоровод) так там это все работает на пару порядков эффективней чем УФ - вот бы 1Сники посмотрели и опыт бы переняли...
Я к чему - да единого универсального решения нет и не будет, поэтому стремление всех запихнуть в "прокрустово ложе" идеологии 1С мне лично очень не нравится...
Cthulhu; a0212; Yashazz; Dethmontt; wowik; leonidt84; +6 1 Ответить
68. spacecraft 19.03.17 14:06 Сейчас в теме
(65) и как поживают ККМ на РДП? А если это не локальная сеть по своему кабелю? Иногда нужно директору с планшета, находясь в Америке, посмотреть пару отчетов?
Задач много. Единого универсального решения нет. Если устраивает текущая система работы, то и работать дальше на ней. Но не стоит говорить, что это решение единственно правильное для всех.
dj_serega; +1 Ответить
70. kote 536 18.12.17 00:09 Сейчас в теме
(0) Всё это работает ТОЛЬКО В ПРЕДЕЛАХ ОДНОГО СЕРВЕРА..
Если у Вас кластер - то считанное на другом сервере Хранилище с СОМ-объектом не работает..
72. newborn 15.06.20 21:19 Сейчас в теме
Прикольный способ... Надо будет как-нибудь проверить... Хотя в 2020 году это наверное уже не актуально...
73. maxlab 76 13.02.21 20:55 Сейчас в теме
(72) Это актуально и 2021 году :) Появление oData и прочих модных нынче фишек не отменяет кодовую базу, наработанную кровью и потом в древние времена! :)
74. Yashazz 4709 01.06.21 14:19 Сейчас в теме
(72) Не работает, причём уже давно. Выше писали.
Max777; BigB; +2 Ответить
75. SergF65 04.06.21 12:44 Сейчас в теме
(74) Только что проверил на 8.3.18.1433, все работает.
Только помещать надо не СОМ объект как таковой, а именно соединение.


	V83COMConnector= Новый COMОбъект("V83.COMConnector");
		Соединение = V83COMConnector.Connect(СтрокаПодключения);
		СтруктураСоединения = Новый ФиксированнаяСтруктура(Новый Структура("СОМобъект",Соединение));
		АдресСоединения = ПоместитьВоВременноеХранилище(СтруктураСоединения, Новый УникальныйИдентификатор());


Все это на сервере.
76. Yashazz 4709 04.06.21 15:20 Сейчас в теме
(75) Ясно, спасибо. Ну, 20 минут максимум поживёт. Да и всё равно это очень зависит от прихотей реализации работы с хранилищем.
79. mikl79 118 13.01.23 17:04 Сейчас в теме
(75)
ФиксированнаяСтруктура

Тоже хотел это написать, т.к. время тратится именно на Connect - у меня на сервере примерно 13 сек.
Если использовать эту технику, то при каждом соединении можно сэкономить это время.
У меня тоже на сервере работает, причем и просто Структура работает.
На Клиенте не проверял.
77. ogursoft 05.07.21 08:39 Сейчас в теме
Как проверить АдресСоединение?
Если ЭтоАдресВременногоХранилища(АдресСоединения) Тогда
  ПолучитьИзВременногоХранилища(АдресСоединения).COMОбъект;
Иначе
  СоздаемНовоеПодключение?
КонецЕсли;
80. mikl79 118 13.01.23 17:06 Сейчас в теме
(77), АдресСоединения - это строка.
Я так проверяю:
	Соединение = Неопределено;
	
	// получим из временного хранилища Соединение
	Если ЗначениеЗаполнено(АдресВХранилище) Тогда
		Соединение = ПолучитьИзВременногоХранилища(АдресВХранилище).Соединение;
	КонецЕсли;
	
	Если Соединение = Неопределено Тогда
		
Показать
78. user648080_gromov_a_n 10.12.21 12:52 Сейчас в теме
Оставьте свое сообщение