Три кита работы с COM-объектами. Работать через COM-соединение проще, чем вы думаете.

29.01.13

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

Данная статья будет полезна как начинающим, так и продвинутым  программистам, которые по каким – либо причинам до сего времени не сталкивались с работой COM-соединением.
Дочитав эту статью до конца, уже через 15 минут, вы сможете напрямую  «вытягивать» данные из другой информационной базы.

ps: Хочу заранее оговориться, данная статья не претендует на звание полного и исчерпывающего мануала. Скорее всего - это просто указатель движения в правильном направлении, для быстрого освоения работы с Com-соединением.

Когда вам это пригодится.

 

Приведу всего два реальных примера из своей практики:

1.   При работе в типовой конфигурации «Бухгалтерия предприятия 2.0» необходимо получать данные первичных документов из сторонней самописной конфигурации. На основании полученных данных, автоматически создаются документы поступлений. При этом, пользователь работает исключительно в одной базе данных.

2.   Пользователь работает в переферийном узле распределенной ИБ. Необходимо, в режиме Он-Лайн, синхронизировать справочник контрагентов. На этом примере и разберем правила работы с Com – объектами.


Чем отличаются COM и OLE. Почему все же COM.

 

1.   При запуске приложения 1С:

-   OLE использует  модуль обычного приложения. Запуск занимает весьма продолжительно время.

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

    В результате, запуск Com в типовой «Бухгалтерии предприятия 2.0» занимает в 6 раз меньше времени.

2.   При запуске Com – соединения  не создается отдельного процесса 1cv8. По отзывам пользователей партнерского форума 1С, завершение работы Ole происходит не всегда корректно.   И в этом случае наблюдаются ощутимые проблемы с производительностью рабочей станции.

Не вдаваясь в дальнейшие сравнения, даже на основании двух вышеизложенных моментов, я однозначно выбираю COM.

 

Три кита и Кит первый.

 

Создаем соединение к другой базе

Сервер = "Kappa";
БазаДанных   = "Acc";
Пользователь = "Администратор";
Пароль = "123456";

V82 = Новый COMобъект("V82.ComConnector");

СтрокаПодключения "srvr='" + СокрЛП(Сервер)
+
"'; ref='" + СокрЛП(БазаДанных)
+
"'; usr='" + СокрЛП(Пользователь)
+
"'; pwd='" + СокрЛП(Пароль) + "';";

БазаИсточник = V82.Connect(СтрокаПодключения);

Подключение к базе, работающей в файловом режиме, приведено в комментариях к данной публикации.


Кит второй

 

Все объекты, которые вы получаете через Com (у нас это БазаИсточник) имеют тип Com-объект.

Поэтому, непосредственно, мы можем использовать только реквизиты примитивных типов:

- Булево

- Строка

- Число

- Дата

 

Остальные реквизиты мы можем идентифицировать в текущей базе, через поиск:

-  по коду

-  по наименованию

-  по ИНН

-  а для узлов РИБ, наиболее точно, по внутреннему идентификатору.

 

Все Com – объекты обладают полным набором свойств и характеристик языка программирования 1С.

Пример:

СсылкаНаКонтрагента = БазаИсточник.Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", ИНН);

Где, СсылкаНаКонтрагента – тип Com-объект.

КонтрагентГоловной = БазаИсточник.Справочники.Контрагенты.СоздатьЭлемент();

Исключение: в отладчике, у Com-объекта, предопределенные реквизиты имеют только англоязычную транскрипцию. Обычные реквизиты – русскую транскрипцию.

Пример:

КонтрагентСОМ = БазаИсточник.Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", ИНН);

Код = КонтрагентСОМ.Code;
Наименование = КонтрагентСОМ.Description;
НаименованиеПолное = КонтрагентСОМ.НаименованиеПолное;

Все предопределенные реквизиты вы сможете получить и в рускоязычном представлении. Но, в некоторых случаях может не корректно отработать метод:


БазаИсточник.ЗаполнитьЗначениеСвойств(ТекущийКонтрагент, КонтрагентCom);

где, ТекущийКонтрагент - имеет тип обычной переменной, а 

КонтрагентCom - Com-объект.


Кит третий

 

Все конструкторы в базе-источнике создаются через метод NewObject.

Пример 1:

КонтрагентГоловной = БазаИсточник.Справочники.Контрагенты.СоздатьЭлемент();
КонтрагентГоловной.УстановитьСсылкуНового(БазаИсточник.Справочники.Контрагенты.ПолучитьСсылку(БазаИсточник.NewObject("УникальныйИдентификатор", ТекущийUID)));

Пример 2: 

СтрокаUID = БазаИсточник.XMLСтрока(СсылкаНаКонтрагента);
Запрос = БазаИсточник.NewObject("Запрос");
Запрос.УстановитьПараметр("UID", БазаИсточник.NewObject("УникальныйИдентификатор", СтрокаUID));
Запрос.Текст = "........";

Все глобальные методы в базе-источнике вызываются через Сom – соединение

Пример: UID = БазаИсточник.XMLСтрока(СсылкаНаКонтрагента);

Пример 2:БазаИсточник.ЗначениеЗаполнено(Контрагент)

Пример 3: БазаИсточник.ЗаполнитьЗначениеСвойств(Приемник, Источник);

Пример 4 (получение имени значения перечисления Com-соединения): ИмяПеречисления = БазаИсточник.XMLСтрока(БазаИсточник.Перечисления.СтавкиНДС.НДС10);

 

Теперь, вы знаете три простых правила работы с 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    159688    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    134938    723    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    68418    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    46301    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    231408    124    327    

296

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

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

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

60000 руб.

05.10.2022    9208    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    20252    132    38    

90
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
95. man-sitec-it 01.05.13 10:06 Сейчас в теме
По делу добавлю - нельзя сравнивать два СОМ-объекта, даже если это ссылки на один и тот же объект в базе, они всегда будут неравны. Приходится сравнивать по коду, наименованию или идентификатору.
Nefilimus; Мах; mark_oilbass; KAPACEB.AA; +4 Ответить
96. director04 3657 01.05.13 14:30 Сейчас в теме
(95) sitec-it,
По делу добавлю - нельзя сравнивать два СОМ-объекта, даже если это ссылки на один и тот же объект в базе, они всегда будут неравны. Приходится сравнивать по коду, наименованию или идентификатору.


Это и логично: потому как для 1С это всегда два разных объекта. Аналогично тому, если вы будете сравнивать один и тот же справочник-объект одной базы данных. Они тоже все время не равны. Равны только его ссылки.
97. man-sitec-it 01.05.13 16:10 Сейчас в теме
И, к вопросу о выборе различных методов (OLE, COM, WEB, XML): все зависит от решаемой задачи. Когда необходимо в отчете вывести сравнение данных двух разных баз (после того же XML-обмена), без СОМ-соединения не обойтись.
98. awk 741 04.05.13 23:59 Сейчас в теме
(97) sitec-it, Ух, не поверите, но еще как обойтись... Статья для начинающих. Для не начинающих - только скука...


P.S.
(0) На АлексвО зря набросились. Он хоть и злой, но по делу говорит.
99. man-sitec-it 05.05.13 10:17 Сейчас в теме
Тогда просвятите и меня, как обойтись, поскольку я не знаю более быстрого с точки зрения разработки и удобного с точки зрения отладки механизма получения данных из другой базы в режиме он-лайн (абсолютно без всякого сарказма)
100. awk 741 05.05.13 17:23 Сейчас в теме
(99) sitec-it,
Вариант №1 Тривиальный. Выгружаем данные в MXL(csv) из обеих баз и сравниваем штатным средством сравнения файлов.
Вариант №2 Внешние источники данных. Подключаемся к базам (используем конфу "Фабрика отчетов", что бы карму баз не портить).
Ваприант №3 Извращенный. Web-service.
Вариант №4 Без единой строки кода. Открываем две базы (желательно два монитора) - смотрим, сверяем.

Ну это на вскидку.

Условия на применения COM(DCOM) - гомогенная лвс на базе вынь. Не то что бы вынь плох, но не всегда базы в такой среде находятся.
101. man-sitec-it 05.05.13 21:23 Сейчас в теме
Видимо, уважаемый, не довелось Вам работать с обменом между базами, где от 200 документов в час создается(одного типа) и обмен происходит каждые 30 секунд (причем не тупо распределенка). Ни один из перечисленных вариантов (кроме 2) не подойдет, поскольку сравнивать надо только синхронизированные данные (несинхронизированные данные можно получить из плана обмена). А, к тому же, если надо сравнивать документы, обработанные операторами в базе-приемнике, задача еще усложняется.

Ясен пень, что если оперативность не важна, то придумывай любой извращенный вариант, хоть собственный формат файла изобретай, хоть учи операторов склада выгружать в MXL и сравнивать типовыми средствами (что, с точки зрения затрат, гораздо выгоднее).

Опять же, внешний источник данных - тот же самый COMConnector, только Вы еще потратите время на изучение работы внешних источников. Поэтому я и говорю, что
не знаю более быстрого с точки зрения разработки и удобного с точки зрения отладки механизма получения данных из другой базы в режиме он-лайн
102. awk 741 06.05.13 10:44 Сейчас в теме
(101) sitec-it, Ты мне напоминаешь человека, который на вопрос: "Чем не подошла типовая конфигурация?" - ответил: "Она не позволяет выводить 28 знаков в цене у Торг 12". Для справки годовой бюджет США 18-19 знаков. каждые 30 секунд 200 документов/час - 1.6(6) документа в обмене. При сбое 30 мин. 100 документов уже напрягут так, что собьют обмен на сутки. Это при постоянных справочниках и ценах. Так что каждые 30 сек. обмен это из разряда фантастики, а не обмена через ПКО. Нормальный обмен Это 10-20 мин. Для остального требуется не распределенка.
106. man-sitec-it 06.05.13 13:32 Сейчас в теме
Вы уже начинаете придираться к словам. Ну что за тенденции на форумах?

речи не шло о 2 обменивающихся базах
Это относится к (101)

А (97) - просто как пример
103. man-sitec-it 06.05.13 11:15 Сейчас в теме
Хотел написать многа букав, но удалил.

Только 1 вопрос - видели когда-нибудь, как работают базы, обрабатывающие данные с датчиков, установленных на транспорте? По вашему суждению, диспетчеры должны следить за транспортом с задержкой в 20 минут. Это просто смешно. Не говоря уже о том, что речи не шло о 2 обменивающихся базах.
104. awk 741 06.05.13 13:02 Сейчас в теме
(103) sitec-it, Я правильно понял

Датчик - Д
Статистическая база - СБ
База 1С - ИБ
Оператор - О

И работает по схеме:

Д -> СБ -> ИБ -> О?
105. awk 741 06.05.13 13:08 Сейчас в теме
(103) sitec-it,

речи не шло о 2 обменивающихся базах

Когда необходимо в отчете вывести сравнение данных двух разных баз (после того же XML-обмена), без СОМ-соединения не обойтись.
109. man-sitec-it 06.05.13 14:47 Сейчас в теме
Да что же за человек-то ты такой? Занимаются тем, что "ловят кого-то на нечестной полемике" на других форумах.

Если не понятно, то поясню: В обмене участвует 1 центральная и 6 периферийных баз. И есть отчет, который показывает различия в синхронизированных документах между центральной и одной из периферийных баз (между двумя, ага!).

(103) - а это к тому, что
Нормальный обмен Это 10-20 мин
не всегда истинное утверждение.
111. awk 741 06.05.13 18:26 Сейчас в теме
(109) sitec-it, Ок. Теперь понятно. Тогда все четыре варианта волне работающие.

(103)
Нормальный обмен Это 10-20 мин

Когда оно не истинное?

P.S.

Неужели 1С выдерживает синхронизацию с датчиками установленными на транспорте (полагаю порядка 50-100 датчиков). В режиме два опроса каждого датчика в минуту. Это при стандартном-то таймауте на сом порт в 30 сек. Мне правда интересно, какое должно быть оборудование(сеть, сервера и т.д., что бы 1С переварила нормально), для подобной синхронизации.

Подозреваю, что работает все как GPS на Android. Пишем раз в n минут в таблицу и читаем таблицу раз в m минут. При этом 1С используем как морду (если операторы ее используют, а не что-то что к датчикам прилогалось).
107. man-sitec-it 06.05.13 13:36 Сейчас в теме
Не вижу больше причины продолжать полемику, поскольку нет конструктива.

Мое мнение не может быть правильным или неправильным, поскольку это только мое мнение
108. awk 741 06.05.13 14:26 Сейчас в теме
(107) sitec-it, Ты прав. В (101) (после уточнения в (103)) пример не связан (ну ни как) с (97). Ты ведешь нечестную полемику, на чем тебя и поймали в (102) и (105). После этого я не могу не согласится с наивернейшим выводом:

Не вижу больше причины продолжать полемику, поскольку нет конструктива.


Я не Платон и не Сократ, что бы выводить на чистую воду софистов.
110. man-sitec-it 06.05.13 14:56 Сейчас в теме
То есть обменивающиеся базы и сравниваемые в отчете базы - это как бы разные вещи.
112. man-sitec-it 06.05.13 20:20 Сейчас в теме
Это при стандартном-то таймауте на сом порт в 30 сек

Не совсем понял, о чем речь

Существует несколько баз разных транспортных предприятий одного холдинга. С датчиков (датчик расхода топлива, датчики GPS-навигации, датчики на разных механизмах) льются данные на специальные сервера сбора данных (стороннее приложение), откуда попадают, собственно, в базы предприятий. Ну, и существует единая диспетчерская служба, в которой должны мониторить состояние транспорта в режиме он-лайн. А теперь представьте, с какой задержкой происходит этот "он-лайн мониторинг" - задержка получения данных от транспорта - 1-3 минуты в зависимости от загруженности и состояния сети передачи данных(GPRS) 1 минута - попадание данных в периферийную базу из сервера сбора данных. А теперь прибавьте сюда еще 10 минут на обмен с центральной базой, какой же это тогда будет "он-лайн мониторинг"?

Специфика работы клиента такова, что нужно постоянное отслеживание состояния (работает/не работает, едет/не едет, расходует/не расходует) транспорта, это просто жизненно необходимо.

В 1 базу все соединить не получится, это базы разных предприятий.

COM - соединение не бездействует 30 секунд, обмен выполняется фоновыми заданиями в многопоточном режиме, то есть одновременно в один регистр записываются данные из нескольких периферийных баз, соединение живет ровно на время создания подключения (около 3 сек.,в зависимости от нагрузки на сервер) + выполнение запроса (около 6 сек.)

Конечно, когда Заказчик приходит с такими требованиями, тяжело объяснить, что без сбоев не обойтись, а еще тяжелее объяснить, для чего нужно суровое серверное оборудование и спутниковая антенна на крыше здания, но кровью и потом такое решение работает и устраивает заказчика.
113. awk 741 06.05.13 22:37 Сейчас в теме
(112) sitec-it, СОМ порт, в смысле интерфейс RS-232.

Наконец, очень умная мысль (я не прикалываюсь и не шучу, и тем более не хочу обидеть):

он-лайн


Тогда при чем тут офф-лайн обмен? А именно этот режим работы реализует объект 1С план обмена.

Он-лайн подразумевает, что действие в объекте А вызывает действие в объекте Б. И если связи между А и Б нет, то мы получаем форсмажор и нарушение трансакции.

Офф-лайн режим, подразумевает отправку данных из объекта А в объект Б, при этом если связи между А и Б нет, то данная ситуация не является форсмажором и данные могут быть переданы в дальнейшем.

То есть Если А есть атомарная(неделимая) операция и Б есть атомарная операция. То определение оперативного (или он-лайн) обмена будет А + Б = В, где В атомарная операция.

А определение не оперативного обмена (офф-лайн) А + Б = В, где В не атомарная операция.

Это голая математика, а

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

Но если по условию работа в режиме онлайн, а мы городим оффлайн - это ошибка архитектуры решения.
114. man-sitec-it 06.05.13 23:22 Сейчас в теме
- это правда жизни.

Именно поэтому я и пишу
"он-лайн мониторинг"

в кавычках, подразумевая максимально близкое к голой математике приближение, насколько оно возможно в реальных условиях работы с Заказчиком. К сожалению, в нашей работе слишком много условностей. Опять же,
Мое мнение не может быть правильным или неправильным, поскольку это только мое мнение
115. awk 741 06.05.13 23:33 Сейчас в теме
(114) sitec-it, Да. Главное, что бы бабло регулярно капало. А за бесконечно большое время и бабло, лично я могу решить любую задачу. :D Хотя я в последнее время понял, что я извращенец. Т.к. таких заказчиков посылаю в пешую прогулку с сексуальным уклоном. Зато правда карму себе не порчу.
116. man-sitec-it 06.05.13 23:43 Сейчас в теме
Вообще, когда меня просят сделать нечто такое, очень "грандиозное", то я вспоминаю слова Константина Рупасова о том, что, конечно, поставленную задачу автоматизации можно решить, но для этого придется
1) построить завод по выпуску процессоров
2) нанять кучу аналитиков, чтобы они придумали собственную архитектуру
3) выпустить с десяток процессоров для сервера
ну и так далее...

Слишком часто (15-20% я считаю слишком часто) заказчик даже не понимает сам, что ему надо, знает только, что он прав. В вышеописанной задаче с обменом документами вообще изначально предполагалось, что документ будет выгружаться сразу после проведения в другую базу, то есть действительно в он-лайн режиме в истинном смысле этого слова (через COMConnector). Но давайте посчитаем!

Проведение документа в базе-отправителе - 2 секунды.
Подключение через СОМ - 3 секунды
Проведение документа в базе-приемнике - 2 секунды.
Прибавим сюда возрастающую нагрузку на сервер, и получим 10-12 секунд проведение документа, а это уже блокировки на регистрах. В базе, где работает от 50 человек, я думаю, Вы знаете что это значит.

Заказчик даже слушать не хотел, что ему объясняли, подавай ему COMConnector, и все тут. Ну и сделали. Разумеется, работа встала. Прищлось делать по-человечески, когда уже люди поняли, что действительно были неправы.

Но все это уже лирика, в общем-то я хотел только сказать, что задачи в жизни бывают самые разнообразные, и надо для каждой конкретно искать оптимальное решение, поэтому нельзя сказать, что метод плох или хорош. Он есть, и помогает решать часть задач. А Дяде Валере привет!
117. noname1980 14.03.14 12:20 Сейчас в теме
возникла задача устанавливать COM-соединение через интернет, скорость канала 2 мбита.
COM коннектится к бухгалтерской типовой базе, в итоге соединение устанавливается ооооччень долго.

ответ нашёл как можно убыстрить:
http://www.develplatform.com/2012/12/com-2.html

но мож есть другое решение?

по тонкому клиенту работа с базой идёт куда быстрее, чем вопрос решается по COM-соединению
118. Dzenn 870 13.09.14 09:45 Сейчас в теме
Кит 4: заранее создайте в базе-источнике экспортные функции, возвращающие нужные данные, и процедуры, делающие нужные действия, и тогда вам не придётся выполнять и отлаживать запросы через COM
roofless; +1 Ответить
119. olbu 20.10.14 10:13 Сейчас в теме
Может, кто уже писал, но обратиться к строке Таблицы значений - у базы, подсоединенной по cоm вот так ТЗ[0] - не получится... приходится делать так: ТЗ.Получить(0)...
120. st4rk 10.06.15 10:41 Сейчас в теме
Спасибо, краткость сестра таланта.
Нашел две помарочки:
БазаИсточник.ЗаполнитьЗначенияСвойств(ТекущийКонтрагент, КонтрагентCom);
Пример 3: БазаИсточник.ЗаполнитьЗначенияСвойств(Приемник, Источник);
123. hawk 66 22.10.15 08:05 Сейчас в теме
Все четко, мне помогло, пожелание внесите в пост соединение с файловой базой коментов много, не очень удобно искать
125. zastep 29.08.17 20:13 Сейчас в теме
Отличная статья, и комментарии то же весьма полезные. :)
Как раз заморочился с COM соединением.
Очень помогло.
126. tireal 74 26.09.17 12:38 Сейчас в теме
Хотелось бы добавить пару не явных моментов, на мой взгляд. Если в функции необходимо указать системное перечисление то его тоже нужно добавлять через КОМ. Например
ТабличныйДокумент.Записать(ИмяФайла,ТипФайлаТабличногоДокумента.xls
работать будет но неправильно, нужно вот так
ТабличныйДокумент.Записать(ИмяФайла,СОМ.ТипФайлаТабличногоДокумента.xls
. Или например вам нужно передать вот такой параметр
Новый ПараметрКомпоновкиДанных("НачалоПериода")
это делается вот так
СОМ.NewObject("ПараметрКомпоновкиДанных", "НачалоПериода")
. Думаю кому то пригодится
128. lavrov.online 11.05.18 19:14 Сейчас в теме
Подскажите, пожалуйста что такое "V82.ComConnector"?
129. user705522_constantin_h 35 13.05.18 00:22 Сейчас в теме
131. Nefilimus 75 17.07.19 10:22 Сейчас в теме
Спасибо огромное за статью =) Было познавательно
Оставьте свое сообщение