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

Опубликовал Максим Жохов (ZhokhovM) в раздел Обмен - Перенос данных из 1C8 в 1C8

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

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

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

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

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

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

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

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

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

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

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

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

См. также

Комментарии
1. Константин Юрин (kostyaomsk) 69 24.02.15 07:07 Сейчас в теме
Может стоит и попробовать прием, но опасно
COM-объект в хранилище
. А вдруг опять проблема с релизом платформы?
2. Андрей Карпов (karpik666) 405 24.02.15 09:13 Сейчас в теме
И такой способ реально работает?
3. Максим Жохов (ZhokhovM) 255 24.02.15 09:17 Сейчас в теме
4. Сергей Старых (tormozit) 4168 24.02.15 09:51 Сейчас в теме
В примере для 8.3 забыл про второй параметр метода ПоместитьВоВременноеХранилище
5. Максим Жохов (ZhokhovM) 255 24.02.15 09:53 Сейчас в теме
6. Андрей Калякин (kalyaka) 115 24.02.15 09:56 Сейчас в теме
В 8.3 может и не сработать, см. "Особенности временного хранилища" в публикации http://infostart.ru/public/198766/
7. rulan87 semisal (rulan87) 25.02.15 11:33 Сейчас в теме
Есть другой способ: использовать модуль повторного использования, в котором получать функцией ком соединение. При первом обращении ком соединение кешируется
molodoi1sneg; Bassgood; Yashazz; BigB; +4 Ответить 2
8. Сергей Старых (tormozit) 4168 25.02.15 12:48 Сейчас в теме
(7) Через 20 мин однако это значение из кэша удаляется.
9. Максим Жохов (ZhokhovM) 255 25.02.15 12:50 Сейчас в теме
10. Максим Жохов (ZhokhovM) 255 25.02.15 12:55 Сейчас в теме
(7) rulan87, да, на время сеанса либо COM+.
11. Сергѣй Батанов (baton_pk) 203 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 Ответить 2
12. Сергей Старых (tormozit) 4168 25.02.15 15:42 Сейчас в теме
(11) baton_pk, когда планируешь допилить? Что будет если два сеанса одновременно запросят один и тот же CacheId? В какой момент уничтожается объект или он работает резидентно через COM+?
13. Сергѣй Батанов (baton_pk) 203 25.02.15 16:27 Сейчас в теме
(12) tormozit,

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

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


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

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


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

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

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

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

Не запутаться бы, где какое соединение :-)
14. Сергѣй Батанов (baton_pk) 203 25.02.15 16:30 Сейчас в теме
(12) tormozit,
Что будет если два сеанса одновременно запросят один и тот же CacheId?

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

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

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

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


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

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

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

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

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

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

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

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

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

Текст ошибки
53. Сергей Галюк (dj_serega) 236 06.12.16 17:31 Сейчас в теме
(51) Код следующий:
COMConnector = Новый COMОбъект("V83.COMConnector")
COMConnector.Connect(СтрокаПодключения);
АдресCOMПодключения = ПоместитьВоВременноеХранилище(Новый Структура("ПодключениеБазы", COMConnector), Новый УникальныйИдентификатор);
54. Сергей Галюк (dj_serega) 236 06.12.16 17:38 Сейчас в теме
Хотя нет... и Application туда ошибку :( Сейчас наваяю обработку и приложу сюда
55. Сергей Старых (tormozit) 4168 06.12.16 17:46 Сейчас в теме
(52) это на тонком клиенте что ли?
56. Сергей Галюк (dj_serega) 236 06.12.16 17:46 Сейчас в теме
Воть.
База: 1С:Предприятие 8.3 (8.3.8.1652)
Пустая новая конфигурация.
Прикрепленные файлы:
ОбработкаПомещенияВХранилище.epf
57. Сергей Галюк (dj_serega) 236 06.12.16 17:47 Сейчас в теме
58. Вадим Тихонов (Farpost) 114 24.01.17 12:37 Сейчас в теме
Вот кто мне объяснит - зачем УФ и тонкий клиент на сервере где все юзеры работают по РДП или на локальной машине?
Какое облегчение приносит применение УФ???
Видя насколько увеличился объём кода и реально замеряя производительность системы, прихожу к выводу, что УФ в описываемых мной случаях бред полный.
59. Михаил Алексеевич (fokin) 12.03.17 14:02 Сейчас в теме
(57) Получилось побороть?

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

только не пойму почему все тоже самое, но &НаСервере отрабатывает без ошибок?
60. Сергей Галюк (dj_serega) 236 15.03.17 09:48 Сейчас в теме
(58)
Какое облегчение приносит применение УФ???

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

Если Ваша фирма доросла до УППырища, то уж запускать этого монстра на нетбуках - такой же бред как применение УФ в описанных мной случаях
62. Вадим Тихонов (Farpost) 114 16.03.17 07:44 Сейчас в теме
(60) Вдогон...
Вы мой пост либо недочитали, либо не осознали прочитанное - советую перечитать и вникнуть в смысл описанного... Я запускаю 1Сину НА СЕРВЕРЕ!!! Довольно мощном и доступ пользователей по РДП протоколу - и на кой хрен мне ваши УФ при таком режиме работы?
63. Михаил Кончаренко (Anchoret) 15 16.03.17 09:17 Сейчас в теме
(62)
Из популярного: попробуйте запустить обычные формы в браузере
64. Сергей Галюк (dj_serega) 236 16.03.17 09:48 Сейчас в теме
(62)
Я запускаю 1Сину НА СЕРВЕРЕ!!!

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

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

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

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

p.s.: предлагаю почитать эту статью. Очень хорошо описаны проблемы клиент-серверного взаимодействия. Да есть нюансы, но присмотревшись на картинки видно что в случае с обычными формами "библиотека" будет находится возле каждого клиента. А в случае с управляемыми формами "библиотека" одна и клиенты только запрашивают простые данные.
65. Вадим Тихонов (Farpost) 114 18.03.17 02:39 Сейчас в теме
(64)
И с чего это вы взяли что РДП жрет 500 мегабайт на сессию? Максимум 50 Мб... И уж если у меня будет 100 пользователей, то сервер у меня будет на порядок мощнее хотя бы для обеспечения работы СУБД... Вы сами себе противоречите - если надо экономить ресурсы сервера за счет терминальных подключений, то эта экономия сожрётся 1Синой на УФ...
В моём случае и я уверен у многих аналогичная ситуация, когда ресурсов сервера вполне хватает на все терминальные сеансы с запасом, а интернет весьма нестабильный у удаленных клиентов (раскиданы на площади примерно равной площади Франции) запускать УФ в любом виде, что в браузере, что в варианте тонкого клиента бредятина полная - 1Сина тупит на таких соединениях безбожно. А плюс РДП в том, что оборвался коннект - и ничего - восстановился и продолжаем работу в том же сеансе на том же месте...
Я уж не говорю про удобство доработки конф и отладки...
66. Вадим Тихонов (Farpost) 114 18.03.17 02:43 Сейчас в теме
(63) А зачем? Объясните мне смысл сего действия?
67. Сергей Галюк (dj_serega) 236 19.03.17 13:52 Сейчас в теме
(65) Каждый останется при своем мнении. Прям как вкус и цвет фломастеров :-))
68. Oleg Space (spacecraft) 19.03.17 14:06 Сейчас в теме
(65) и как поживают ККМ на РДП? А если это не локальная сеть по своему кабелю? Иногда нужно директору с планшета, находясь в Америке, посмотреть пару отчетов?
Задач много. Единого универсального решения нет. Если устраивает текущая система работы, то и работать дальше на ней. Но не стоит говорить, что это решение единственно правильное для всех.
69. Вадим Тихонов (Farpost) 114 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С мне лично очень не нравится...