Надоело повторное 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! 10%

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

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

55778 50200 руб.

04.08.2015    166743    334    278    

375

SALE! 10%

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

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

35000 31500 руб.

15.12.2021    24172    171    51    

130

Перенос данных 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

26280 руб.

12.06.2017    141813    799    297    

420

SALE! 10%

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

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

35000 31500 руб.

23.07.2020    51539    228    70    

186

SALE! 10%

Перенос данных 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 | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой

55778 50200 руб.

15.04.2019    72193    182    150    

124

SALE! 10%

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

Правила переноса кадровых и расчетных данных и справочной информации из "1С:УПП1.3" или "1С:КА 1.1" в "1С:ЗУП 3.1 | Разработан в формате КД 2 (правила конвертации данных) | При выгрузке есть фильтр по организациям | Обновляется при выходе новых релизов 1С | Развитие алгоритмов | Расчетные документы переносятся в документ "Перенос данных" | Создаются документы "Начальная штатная расстановка" и "Начальная задолженность по зарплате", переносятся кадровые документы

55778 50200 руб.

29.10.2018    56285    59    105    

61

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

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 2, УНФ 1.6 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

15300 руб.

18.02.2016    187014    590    509    

527

SALE! 10%

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

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

48278 43450 руб.

25.02.2015    171294    301    257    

378
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. jobkostya1c_ERP 100 24.02.15 07:07 Сейчас в теме
Может стоит и попробовать прием, но опасно
COM-объект в хранилище
. А вдруг опять проблема с релизом платформы?
2. karpik666 3856 24.02.15 09:13 Сейчас в теме
И такой способ реально работает?
3. ZhokhovM 756 24.02.15 09:17 Сейчас в теме
4. tormozit 7238 24.02.15 09:51 Сейчас в теме
В примере для 8.3 забыл про второй параметр метода ПоместитьВоВременноеХранилище
5. ZhokhovM 756 24.02.15 09:53 Сейчас в теме
(4) tormozit, точно. Спасибо.
6. kalyaka 1112 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 1112 13.03.15 16:18 Сейчас в теме
(32) androgin, а если кластер состоит из нескольких рабочих серверов и произойдет переподключение с одного рабочего сервер на другой?
7. rulan87 25.02.15 11:33 Сейчас в теме
Есть другой способ: использовать модуль повторного использования, в котором получать функцией ком соединение. При первом обращении ком соединение кешируется
asdPerepel; ProChelny; Sersh2010; molodoi1sneg; Bassgood; Yashazz; BigB; +7 Ответить
8. tormozit 7238 25.02.15 12:48 Сейчас в теме
(7) Через 20 мин однако это значение из кэша удаляется.
9. ZhokhovM 756 25.02.15 12:50 Сейчас в теме
10. ZhokhovM 756 25.02.15 12:55 Сейчас в теме
(7) rulan87, да, на время сеанса либо COM+.
71. Regner 20.05.19 10:53 Сейчас в теме
(7) а как потом закрывать соединение?В кэше данные хранятся 20 мин, спустя это время при повторном использовании новый сом объект создатся.
11. dmpas 418 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 7238 25.02.15 15:42 Сейчас в теме
(11) baton_pk, когда планируешь допилить? Что будет если два сеанса одновременно запросят один и тот же CacheId? В какой момент уничтожается объект или он работает резидентно через COM+?
13. dmpas 418 25.02.15 16:27 Сейчас в теме
(12) tormozit,

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

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


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

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


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

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

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

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

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

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

То есть в одном кэше два подключения к разным базам (или под разным пользователем и т.д.) - это разные объекты, разумеется.
17. rtnm 616 26.02.15 08:33 Сейчас в теме
(11) baton_pk, а замерял на сколько падает производительность при использовании V8Pool.CacheConnector? В моей реализации подобного пула (больше похожего на то что описывал tormozit - конкурентное получение соединения из пула с фиксированным размером) производительность упала в 10-20 раз. Замерял время на сортировке, т.е. на коде который совершает много мелких вызовов. Даже осознавая присутствие маршалинга, я был сильно разочарован и "заморозил" разработку.
18. dmpas 418 26.02.15 08:41 Сейчас в теме
(17) rtnm, нет, замерами не занимался. мне просто даже в голову не пришло, что поиск соединения в пуле может быть в разы медленнее, чем создание нового соединения с Комплексной Автоматизацией.
19. rtnm 616 26.02.15 09:24 Сейчас в теме
(18) baton_pk, причем тут поиск соединения? Речь про затраты на маршалинг.
20. dmpas 418 26.02.15 09:42 Сейчас в теме
(19) rtnm, тогда я не понимаю, что с чем надо сравнивать?
что через CacheConnector, что через родной ComConnector работа в итоге идёт через один и тот же класс внешнего соединения? Маршаллинг в любом случае присутствует.
21. rtnm 616 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 418 26.02.15 10:53 Сейчас в теме
(21) rtnm, померял.
Сделал две сортировки: одну "в лоб", одну "правильно".
В лоб разница существенная: 10 секунд против 88.
Правильно - это с сокращением количества "клиент-серверных" вызовов. Там разница 2 мс против 4 мс.

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

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


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

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

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

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

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

Попробуйте создать реквизит обработки произвольного типа и хранить com-объект в нем.
28. Yashazz 4794 26.02.15 13:46 Сейчас в теме
(27) это не ответ. Сама попытка передачи COM-соединения с клиента на сервер - это грубейшая ошибка. В 8.2 защита ещё не была доведена до ума, поэтому позволяла такие хамские вольности, в 8.3 это, к счастью, пресекли.
29. ZhokhovM 756 26.02.15 14:00 Сейчас в теме
(28) Yashazz, цитирую из статьи:
Важно: получать из хранилища только на сервере (если на сервере помещали), или аналогично на клиенте.
30. Yashazz 4794 26.02.15 14:09 Сейчас в теме
А, то есть речь о работе клиент-клиент или сервер-сервер? Тогда да, согласен, нормально.
31. androgin 03.03.15 02:44 Сейчас в теме
33. ZhokhovM 756 03.03.15 09:14 Сейчас в теме
(31) androgin, псс-с. Всего-то помаленьку.
34. androgin 03.03.15 21:54 Сейчас в теме
(33) lf да ты стырил ВСЁ, только префиксы добавил.
Только мой вариант более живучий, чем твой)))
Догадайся почему))
35. ZhokhovM 756 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 3856 10.03.15 06:15 Сейчас в теме
38. ZhokhovM 756 10.03.15 10:57 Сейчас в теме
39. karpik666 3856 10.03.15 17:48 Сейчас в теме
(38) вообще-то это не спам, просто дополнение к вашей беседе, кто у кого и сколько скопировал=)
41. androgin 20.03.15 01:39 Сейчас в теме
(39) karpik666, Если ты не понял сути, то зачем встревать со своей статьей?))
42. dj_serega 393 27.04.15 09:36 Сейчас в теме
Спасибо за статью. Отработало как часы.
43. ZhokhovM 756 27.04.15 09:47 Сейчас в теме
44. Гость 09.09.15 11:39
Добрый день.

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

Можно как-то настроить?
45. tormozit 7238 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 137 15.04.16 08:46 Сейчас в теме
(46) infosoftvc, у меня сегодня внезапно тоже перестал сохраняться COM-объект в структуре. До этого больше года работало как часы. Вариант с фиксированной структурой не помог. Кто нибудь еще сталкивался с таким?
48. kalyaka 1112 28.04.16 11:50 Сейчас в теме
(47) Caliban, не все com объекты поддерживают сериализацию. Еще, возможно, сама 1С не сериализует com, а использует ссылку на существующий объект и если происходит переподключение с одного рабочего процесса на другой, то не факт, что будет сохранен com объект.
49. Serginio 941 28.04.16 12:36 Сейчас в теме
Я бы на нет сделал статическое свойство (синглетон) Dictioanary<string,object> который бы по ProgID отдавал нужную ссылку и создавал её если еще не создавалась. Загруженные библиотеки не выгружаются из процесса. И этот синглетон будет жить пока рабочий процесс не перегрузится.
50. dj_serega 393 06.12.16 11:35 Сейчас в теме
8.3.8.1652.
Теперь нельзя помещать во временное хранилище COM подключение (покрайней мере на клиенте) :(
51. tormozit 7238 06.12.16 12:25 Сейчас в теме
53. dj_serega 393 06.12.16 17:31 Сейчас в теме
(51) Код следующий:
COMConnector = Новый COMОбъект("V83.COMConnector")
COMConnector.Connect(СтрокаПодключения);
АдресCOMПодключения = ПоместитьВоВременноеХранилище(Новый Структура("ПодключениеБазы", COMConnector), Новый УникальныйИдентификатор);
52. dj_serega 393 06.12.16 17:27 Сейчас в теме
COM = Новый COMОбъект("V83.Application"); - Все ок

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

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

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

только не пойму почему все тоже самое, но &НаСервере отрабатывает без ошибок?
54. dj_serega 393 06.12.16 17:38 Сейчас в теме
Хотя нет... и Application туда ошибку :( Сейчас наваяю обработку и приложу сюда
56. dj_serega 393 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 393 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 65 16.03.17 09:17 Сейчас в теме
(62)
Из популярного: попробуйте запустить обычные формы в браузере
dj_serega; +1 Ответить
66. Farpost 116 18.03.17 02:43 Сейчас в теме
(63) А зачем? Объясните мне смысл сего действия?
64. dj_serega 393 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 393 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 537 18.12.17 00:09 Сейчас в теме
(0) Всё это работает ТОЛЬКО В ПРЕДЕЛАХ ОДНОГО СЕРВЕРА..
Если у Вас кластер - то считанное на другом сервере Хранилище с СОМ-объектом не работает..
72. newborn 15.06.20 21:19 Сейчас в теме
Прикольный способ... Надо будет как-нибудь проверить... Хотя в 2020 году это наверное уже не актуально...
73. maxlab 77 13.02.21 20:55 Сейчас в теме
(72) Это актуально и 2021 году :) Появление oData и прочих модных нынче фишек не отменяет кодовую базу, наработанную кровью и потом в древние времена! :)
74. Yashazz 4794 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 4794 04.06.21 15:20 Сейчас в теме
(75) Ясно, спасибо. Ну, 20 минут максимум поживёт. Да и всё равно это очень зависит от прихотей реализации работы с хранилищем.
79. mikl79 119 13.01.23 17:04 Сейчас в теме
(75)
ФиксированнаяСтруктура

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