Три кита работы с 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    159681    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    134934    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    46292    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    231405    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    20247    132    38    

90
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. KapasMordorov 428 24.01.13 11:54 Сейчас в теме
Исключение: у Com-объекта, предопределенные реквизиты имеют только англоязычную транскрипцию. Обычные реквизиты – русскую транскрипцию.

Пример:

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

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

Неужели?
Код = КонтрагентСОМ.Код;
Наименование = КонтрагентСОМ.Наименование;

прекрасно работает.

А каков замах:
статья будет полезна как начинающим, так и продвинутым программистам
.
kaaasteeen; user1128542; Vellosity; valika; Gray-SV-02; AlexO; CaSH_2004; +7 2 Ответить
2. director04 3657 24.01.13 12:07 Сейчас в теме
(1) KapasMordorov, добрый день.

А каков замах:


Не знаю, как к вам обратиться по имени ))))
Поясню "таков замах": дело в том, что многие, даже и сильно продвинутые кодеры, могут многие годы прекрасно обходиться без механизмов Com-соединений (ну просто не было нужды). Пример - я.

Это не значит, что данные прогеры, ни на что остальное не годны. Просто - не было случая.
А вот случай настал, и надо с чего то начать.
В этом случае не плохо прочитать чей-то опыт. Что бы не изобретать велосипед.

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

Спасибо за понимание.
kaaasteeen; obmailok; Leon29; dbachinsky; Nikitos_NSK; rubik-onnline; Yasasha; ivan_luzinov; Bayker; PSKMOL; Rustavelli; Мах; Award; VooDOOPRo; jif; frkbvfnjh; Zhilyakovdr; droplet; dmitryi83; Itkonstantine; +20 Ответить
33. Abadonna 3958 28.01.13 09:46 Сейчас в теме
(1), (7) Мужики, ну при чем тут автор? Меня больше удивляет (беспокоит) количество плюсов.
Странно, что никто еще не написал расхожую фразу "Оказывается, всё гениальное - просто".
Yashazz; AlexO; +2 Ответить
38. AlexO 135 28.01.13 09:56 Сейчас в теме
(33) Abadonna,
Странно, что никто еще не написал расхожую фразу "Оказывается, всё гениальное - просто".

да пусть студенты америки открывают...
хоть так самолюбие потешат :))
127. Matrix1C 22.11.17 21:16 Сейчас в теме
(1) Давно это было... но всё же, конкретно в прошлом году не мог получить от базы реквизит Наименование, а Description работало.

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

Так что Автору спасибо, простая понятная статья.
kaaasteeen; user1839716; alexvbard; Мах; strange2007; frkbvfnjh; +6 Ответить
130. strange2007 144 27.06.18 05:12 Сейчас в теме
(1) На первых платформах 8.2 русские аналоги англонаименований периодически приводили к краху обмена данными. И это было на столько хаотично, что отловить баги не могли долго. Так что когда наберётесь опыта, не будете так смело критиковать))))))
И да, помните - "дурак учится только на своих ошибках" (с).
user1839716; +1 Ответить
3. hohmankia 24.01.13 12:20 Сейчас в теме
Полностью согласен с автором статьи, т.к. сам такой же: 5 работаю с 1С и только совсем недавно столкнулся с необходимостью com-соединения и сходу не знал куда смотреть и как делать.
Автору спасибо!
kaaasteeen; Мах; frkbvfnjh; kentavr27; lemilk; Niberu; director04; +7 Ответить
23. AlexO 135 25.01.13 17:48 Сейчас в теме
(3) hohmankia,
тоже только ПФ лепили? :)
32. hohmankia 27.01.13 13:41 Сейчас в теме
(23) AlexO, очень смешно)) Петросян прям отдыхает... Поддержу автора: "От ваших постов так веет безысходностью и неудачей ))))) Дерзайте, и все получится!"
alexvbard; SanchoD; Nefilimus; Мах; +4 Ответить
36. AlexO 135 28.01.13 09:53 Сейчас в теме
(32) hohmankia,
сочинить свое не хватает? :)
48. hohmankia 28.01.13 11:54 Сейчас в теме
(36) AlexO, я ж говорю Петросян! )) Расслабься! Тебе поговорить не с кем что-ли?! Ну так в другом месте ищи свободные уши.
tomvlad; director04; +2 Ответить
55. Abadonna 3958 28.01.13 12:32 Сейчас в теме
56. AlexO 135 28.01.13 12:35 Сейчас в теме
(55) Abadonna,
ну у многих амнезия... мельчают, стареют...
только ветераны не сдаются и пытаются учить молодежь ))
57. tomvlad 3860 28.01.13 12:37 Сейчас в теме
(56) AlexO, охотно верю, что Вы знаете предмет гораздо лучше чем сам Сергей Нуралиев.

Но...

Что мы знаем про вас. Никаких серъезных разработок за душой не числится. Рейтинг LIFE в 3.43 раза (!!!! болтун?) превышает рейтинг за публикации. Никакой дополнительной информации в профиле нет.

Только брызги слюны и вопли обиженного.

Конечно, я могу ошибаться. Ну так поправьте. Напишите хоть что-нибудь кроме невоздержанных комментариев.
oplachko; Razlagutt; ixijixi; director04; +4 1 Ответить
59. AlexO 135 28.01.13 12:41 Сейчас в теме
(57) tomvlad,
лучше чем сам Сергей Нуралиев.

спасибо, посмеялся.
Это тот, который после 3х лет "типа коммерческой" эксплутации 8.2 писал, что перевод "средней <типовой> конфы" на УФ - неделя за глаза?
Не говоря уж о том, что он, вот как вы - у своих разработок, "стоял у истоков создания УФ"...
60. AlexO 135 28.01.13 12:42 Сейчас в теме
(57) tomvlad,
Только брызги слюны и вопли обиженного.

как низко мы пали... а ведь был такой подающий надежды молодой человек...
Напишите хоть что-нибудь кроме невоздержанных комментариев.

это ко мне разве?
А у вас вообще ваши публикации, или нет? А то что-то сомнения появились - ну не мог человек так быстро... съехать вниз...
4. jamirza 24.01.13 12:52 Сейчас в теме
А мне понравилось - всё чётко и по делу.
Nefilimus; Мах; Zhilyakovdr; lemilk; Onemany; director04; +6 Ответить
5. Angeros 24.01.13 13:10 Сейчас в теме
по-моему комы прошлый век - медленно, топорно. web рулит!!!
Nefilimus; kms2014; +2 Ответить
14. yuraos 991 24.01.13 18:59 Сейчас в теме
(5)(6) Angeros,
а управляемое приложение, как не откроею - все тупит и тормозит.

Там даже редактор управляемых форм и тот тормозной! :)
16. Angeros 25.01.13 04:21 Сейчас в теме
(14) yuraos, Я не понимаю причем тут управляемые формы? я имею введу веб сервис. Установить апатч дело 2ух минут настроек он не требует. главное чтобы в сети был виден всем участникам обмена.
Nefilimus; +1 Ответить
6. director04 3657 24.01.13 13:45 Сейчас в теме
по-моему комы прошлый век - медленно, топорно. web рулит!!!


Все новые типовые решения от 1С (на управляемых формах) для интеграции используют Com-соединения.
Да и веб-серверы подняты далеко не у всех.
Nefilimus; LavinVladik; yuraos; +3 Ответить
43. AlexO 135 28.01.13 10:06 Сейчас в теме
(6)
Все новые типовые решения от 1С (на управляемых формах) для интеграции используют Com-соединения.

для какой такой интеграции, и что за типовые от 1С в данном конкретном случае?
7. CaSH_2004 372 24.01.13 14:16 Сейчас в теме
(0) Странная статья, мало того что (1) прав, так еще и "поиск по ИНН" - это что за такой типовой реквизит?
Есть ПоискПоКоду(), ПоискПоНаименованию(), и ПоискПоРеквизиту() - никаких поисков по ИНН не существует, что вы и сами показываете в примере
После комментария (0) могли бы и поправить статью.
Вообще те истины которые тут изложены не тянут на публикацию, таких публикации можно клепать каждые пол года т.к. люди то новые появляются, а искать в интернете не умеют. Для людей которые "не в курсе" как работать с ОЛЕ - скачайте книжки "1С Предприятие системное программирование (Михайлов)", "ЕСИС 8.0", и был еще толмут по моему Радченко размером с энцеклопедию:) ее даже читать можно только в электронном т.к. сложно листать. Там расписано все что что нужно.
А то странные программисты появляются - даже документацию скачать и прочитать не хотят, что же там можно в 1С делать 5 лет и не сталкиваться с ОЛЕ? Я как то видел разработку на 7-ке где разработчики ничего не знали про такой объект как "Документ" и задачи по товаро-движению реализованы через объект "Справочник"! Это просто надо видеть!

PS: Если уж говорить про "поделитесь опытом" то вот вам интересный момент который я нигде не видел что бы был освещен, а стоило бы: по ОЛЕ не всегда корректно можно получить дробные числа. Иногда вместо 2.24 можно спокойно получить 2.23999999999999, поэтому правильно получать тип реквизита откуда береться число, его точность и округлять до дробного числа, иначе можете потерять копейку.
Nefilimus; mentozavr; Andreyyy; AlexO; Yakud3a; sanches; +6 Ответить
9. Slon1c 24.01.13 14:36 Сейчас в теме
(7)Да тип нужно получать через метаданные ...
10. sanches 256 24.01.13 17:38 Сейчас в теме
(7) Да, сам недавно ломал голову почему так происходит.
Причем, если получать данные запросом, то от такой проблемы не спасает даже использование функции
ВЫРАЗИТЬ (Сумма КАК ЧИСЛО(15,2))
(0)
КонтрагентГоловной = БазаИсточник.Справочники.Контрагенты.СоздатьЭлемент();
КонтрагентГоловной.УстановитьСсылкуНового(БазаИсточник.Справочники.Контрагенты.ПолучитьСсылку(БазаИсточник.NewObject("УникальныйИдентификатор", ТекущийUID)));

У вас не хватает определения переменной ТекущийUID
39. AlexO 135 28.01.13 09:58 Сейчас в теме
(7) CaSH_2004,
и был еще толмут по моему Радченко размером с энцеклопедию:)

"толмут" не Радченко, а группы авторов, среди которых Радченко разве что вступления к главам писал :)
40. AlexO 135 28.01.13 09:59 Сейчас в теме
(7) CaSH_2004,
что же там можно в 1С делать 5 лет и не сталкиваться с ОЛЕ?

что-что - печатные формы и постоянно тусоваться среди студентов со своими "достижениями".
Так и 10 лет ни с чем не столкнутся... :)
8. Slon1c 24.01.13 14:35 Сейчас в теме
А еще есть внешние источники данных ... использую COM и OLE. Если нужно просто прочитать то COM, для интерактивной работы OLE ...
11. Danil.Potapov 514 24.01.13 17:47 Сейчас в теме
статья про COM на картинке OLE
42. AlexO 135 28.01.13 10:04 Сейчас в теме
(11) naus,
да ладно, тут народ вообще разницы не понимает - COM, OLE, ADO..
буковки какие-то...
50. tomvlad 3860 28.01.13 12:13 Сейчас в теме
(42) AlexO, судя по вашим словам Вы знаете все на свете гораздо лучше остальных.

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

Иначе начинает складываться впечатление о студенте, страдающем комплексом неполноценности (уж извините, но в профиле никакой информации о Вас я не вижу, да и список публикаций не впечатляет).
Nefilimus; director04; +2 1 Ответить
51. AlexO 135 28.01.13 12:20 Сейчас в теме
(50) tomvlad,
мелчают 1сники, мельчают.. а как звездили вначале..
Предлагаю Вам описать предмет

предмет чего?
взялся писать статью - пиши статью. А не впечатления о кино по афише: "оказывается, как просто там все!".
52. AlexO 135 28.01.13 12:22 Сейчас в теме
(50) tomvlad,
судя по вашим словам Вы знаете все на свете гораздо лучше остальных.

т.е. вы уже не знаете многого?!
судя по вашим словам.
53. tomvlad 3860 28.01.13 12:25 Сейчас в теме
(52) AlexO, ОК, то есть Вы не в состоянии написать статью, описывающую методику работы с COM?
54. AlexO 135 28.01.13 12:27 Сейчас в теме
(53) tomvlad,
пусть я статью "не в состоянии".
А вы - даже оценить не в состоянии. ОК?
12. yuraos 991 24.01.13 18:26 Сейчас в теме
Плюс автору за простоту и ясность мысли,
которой так не хватает в 1С-ных мануалов!
Как раз то, что нужно для новичков!!!

Более продвинутым советую пройтись по этой ссылке.
:)
13. yuraos 991 24.01.13 18:53 Сейчас в теме
(12)
впрочем и для новичков будет полезно, поскольку
технология COM далеко не исчерпывается
COM-подключениями к 1C или EXCEL.
15. ZERO_ 63 24.01.13 22:54 Сейчас в теме
(0)
Не вдаваясь в дальнейшие сравнения, даже на основании двух вышеизложенных моментов, я однозначно выбираю COM.

Ну, я бы не был столь категоричен... Com имеет свои преимущества и свои недостатки (как и Ole)...
Все зависит от конкретной задачи (хотя из моей личной практики Com применял в десяток раз чаще, чем Ole).
Еще забыли про важное отличие в виде доступа к интерфейсным возможностям 1СПредприятие...
Также неплохо было бы акцентировать внимание на передачу параметров (например в виде параметра запроса), что ссылки на объекты текущей базы передавать нельзя! :-) А ссылки, полученые из базы-источника, - можно...
Также, если статья для новичков,(которые не хотят лазить по Нетам) можно было бы дополнить строкой (или даже написать функцию, возвращающую "БазаИсточник") для обоих вариантов (Файл-серверного и клиент-серверного).
А так, - понравилась структуризация материала... :-)
director04; +1 Ответить
41. AlexO 135 28.01.13 10:03 Сейчас в теме
(15) ZERO_,
А так, - понравилась структуризация материала...

кино дрянь, но спецэффекты красивые..
user1128542; +1 Ответить
17. Zero_nv 128 25.01.13 06:52 Сейчас в теме
Эх... эту бы статью да на пару дней пораньше. Массу времени съэкономил бы. Понадобилось перенести доки через com, пришлось в инете по крупицам собирать
18. director04 3657 25.01.13 09:27 Сейчас в теме
Также неплохо было бы акцентировать внимание на передачу параметров (например в виде параметра запроса), что ссылки на объекты текущей базы передавать нельзя! :-) А ссылки, полученые из базы-источника, - можно...
Также, если статья для новичков,(которые не хотят лазить по Нетам) можно было бы дополнить строкой (или даже написать функцию, возвращающую "БазаИсточник") для обоих вариантов (Файл-серверного и клиент-серверного).
А так, - понравилась структуризация материала... :-)


Спасибо, очень ценное замечание. Да, действительно упустил это из вида.
Спешу исправить. Пример универсальной процедуры ниже.

Функция ВыполнитьПодключение(Файловый)

    Отказ = Ложь;

    Если НЕ ЗначениеЗаполнено(Пользователь) ИЛИ НЕ ЗначениеЗаполнено(Пароль) Тогда
        Отказ = Истина;
    ИначеЕсли Файловый И НЕ ЗначениеЗаполнено(КаталогИБ) Тогда
        Отказ = Истина;
    ИначеЕсли НЕ ЗначениеЗаполнено(ИмяКластера) ИЛИ НЕ ЗначениеЗаполнено(ИмяБазы) Тогда
        Отказ = Истина;
    КонецЕсли;

    Если Отказ Тогда
        Предупреждение("Настройте параметры соединения.", 10, "Соединение невозможно.");
        Возврат Отказ;
    КонецЕсли;

    СтрокаСоединения = "";

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

    Если Файловый Тогда
        СтрокаСоединения = "File=""" + СокрЛП(КаталогИБ) + """";
    Иначе
        СтрокаСоединения = "Srvr=" + СокрЛП(ИмяКластера) + ";Ref=" + СокрЛП(ИмяБазы);
    КонецЕсли;

    Если НЕ ПустаяСтрока(Пользователь) Тогда
        СтрокаСоединения = СтрокаСоединения + ";Usr=" + СокрЛП(Пользователь);
    КонецЕсли;

    Если НЕ ПустаяСтрока(Пароль) Тогда
        СтрокаСоединения = СтрокаСоединения + ";Pwd=" + СокрЛП(Пароль);
    КонецЕсли;

    Попытка
        БазаИсточник = V81.Connect(СтрокаСоединения);
    Исключение
        Сообщить("Не удалось подключиться с заданными настройками!" + ОписаниеОшибки(), СтатусСообщения.Важное);
        Отказ = Истина;
    КонецПопытки;

    Возврат Отказ;

КонецФункции

Показать


Пояснение БазаИсточник - переменная модуля, или переменная обработки, доступная из всех процедур и функций.
25. AlexO 135 25.01.13 17:53 Сейчас в теме
(18)
Да, действительно упустил это из вида.

да вы и так многое упустили из вида, и вместо этого написали "работать через COM проще".
И проще, и сложнее, но прежде чем писать подобное - разузнали бы проблемы.
Если сами только столкнулись ("могут многие годы прекрасно обходиться без механизмов Com-соединений").
Хотя бы, сколько нужно всего учесть, чтобы загрузить "обычное" ТЗ из другой базы.
31. yuraos 991 26.01.13 17:11 Сейчас в теме
(18)(30)
... Пример универсальной процедуры ниже.

PS:
Если использовать план обмена "Обмен данными COM"
то код для создания соединения можно несколько упростить,
поскольку все необходимые параметры и алгоритм подключения
хранятся в узле плана обмена:
КоннекторCOM = Неопределено;
ОбъектCOM = Неопределено;
ЕррорИнфор = "";
НужныйУзел = ПланыОбмена.ОбменДаннымиCOM.НайтиПоКоду("КодНужногоУзла");
НужныйУзел.СоздатьОбъект().Connect(КоннекторCOM,ОбъектCOM,,ЕррорИнфор);
Если ЗначениеЗаполнено(ЕррорИнфор) Тогда
   ВызватьИсключение(ЕррорИнфор);
КонецЕсли;
// далее используем полученное COM-соединение через переменную ОбъектCOM
Показать
Мах; director04; +2 Ответить
37. AlexO 135 28.01.13 09:54 Сейчас в теме
(31) yuraos,
а можно вообще все в одну строку и максимум вложенностей в параметрах команд...
1С - она именно для такого раздолбайства и создана ;)
79. yuraos 991 29.01.13 16:02 Сейчас в теме
(37) AlexO,
а у вас увожаемый смотру всего одна статейка и
рейтинг за трёп превышает реальный рейтинг в 4 раза

и это не смотря на то , что многие ваши комментарии "минусят" на этой ветке.

Значить - еще больше народу ставить вам "минусы" просто лень
или у них нет времени врубаться что к чему.
;)
SmArtist; tomvlad; +2 1 Ответить
19. DoctorRoza 25.01.13 12:22 Сейчас в теме
Норм статья .. может пригодиться!
20. пользователь 25.01.13 15:46
Сообщение было скрыто модератором.
...
21. Sasha255n 25.01.13 15:46 Сейчас в теме
Все прекрасно работает спасибо остался очень доволен.
director04; +1 Ответить
22. VasiL0587 51 25.01.13 17:46 Сейчас в теме
Отличная статья, коротко и по делу. Автору респект!
26. AlexO 135 25.01.13 17:55 Сейчас в теме
(22) VasiL`,
да?
ну попробуйте на реальном деле что-то сделать.
24. AlexO 135 25.01.13 17:50 Сейчас в теме
(0)
2. При запуске Com – соединения не создается отдельного процесса 1cv8.

а что, по-вашему, в таком случае создается? Облако тегов?
30. yuraos 991 26.01.13 08:27 Сейчас в теме
(24)
а что, по-вашему, в таком случае создается? Облако тегов?

AlexO,
что создается, это конечно вопрос интересный и архиважный с познавательной точки зрения.
Но это, как говаривали вожди-классики, есть суровая объективная реальность.,
"данная нам в ощущениях, копируемая и фотографируемая" (смотри ниже):

При COM-соединении просесс 1cv8 остается один, но при этом сжирает больше памяти мегабайт на 25.
При OLE-соединении появляется еще один процесс 1cv8, который к стати отжирает чуть меньше - 22 мегабайта.

При желании любой это может проверить.
Нужный план обмена можно взять здесь.
Прикрепленные файлы:
35. AlexO 135 28.01.13 09:51 Сейчас в теме
(30) yuraos,
При COM-соединении просесс 1cv8 остается один

да неужели?
и какой такой процесс "остается", когда организуешь соединение по COM к базе?
Разобрались бы сначала с автором, что и когда подключается.
И когда наиболее оптимально производить подключение к другой базе.
PS. если только и умеете "включать в другую базу" пользователя во время работы - то ужас-ужас вам и вашим пользователям.
27. director04 3657 25.01.13 19:29 Сейчас в теме
да?
ну попробуйте на реальном деле что-то сделать.


Алекс, от ваших постов так веет безысходностью и неудачей ))))) Дерзайте, и все получится!
Еще раз - удачи. :)
28. TMV 14 25.01.13 21:55 Сейчас в теме
(27)
Алекс, от ваших постов так веет безысходностью и неудачей ))))) Дерзайте, и все получится!
Еще раз - удачи. :)

Не слишком ли бодрое пожелание для "продвинутого прогера"?)
29. yuraos 991 26.01.13 07:52 Сейчас в теме
Не слишком ли бодрое пожелание для "продвинутого прогера"?)

(28) TMV,
продвинутость достигается через преодаление гем-мороев платформы...

великая продвинутость обрачена великой печалью
:)
34. AlexO 135 28.01.13 09:48 Сейчас в теме
(27)
я по COM перекрестные синхронизации делаю, а вы мне про "дерзайте"! :)
посмеялся.
44. karakozov 28.01.13 10:19 Сейчас в теме
Полезная статья, хоть и вызвала столько дополнений и даже критики. К сожалению все время сталкиваешься с проблемами при создании чего нить через COM соединение.Причем все сложности обычно это само COM соединение.Данный обзор обновляет уже имеющуюся информацию, а самое интересное что до каких то вещей пришлось додуматься самому, и теперь было интересно почитать об этом в данной статье. Плюс автору.
director04; +1 Ответить
46. director04 3657 28.01.13 10:25 Сейчас в теме
(44) karakozov,
Полезная статья, хоть и вызвала столько дополнений и даже критики. К сожалению все время сталкиваешься с проблемами при создании чего нить через COM соединение.Причем все сложности обычно это само COM соединение.Данный обзор обновляет уже имеющуюся информацию, а самое интересное что до каких то вещей пришлось додуматься самому, и теперь было интересно почитать об этом в данной статье. Плюс автору.


Я рад, что данная публикация очень многим понравилось и показалась востребованной.
Именно на эту аудиторию и на эту реакцию я и рассчитывал.

Что касается критиков....
Их я всегда делю на:
  • Конструктивных. Эти люди обсуждают тему, изучают, дают ценные советы и предлагают решения.
  • Болтунов. Эти просто ктитикуют не предлагая ничего. Им и предложить скорее всего нечего. Наверное это просто люди с заниженной самооценкой. Пользы от них - ноль.


Лично мне гораздо интереснее и полезней показалось обсуждение yuraos (30). Спасибо ему, что не пожалел времени на тестирование. Позитив налицо. А AlexO, простите - простая балаболка. :)
Мах; tomvlad; +2 1 Ответить
49. AlexO 135 28.01.13 12:09 Сейчас в теме
(46)
балаболка и неуч - это вы.
Ваш уровень - кружок студентов возглавить.
45. director04 3657 28.01.13 10:20 Сейчас в теме
AlexO, да угомонись ты, блин со своим словесным поносом.... Слушать уже надоело. Судя по такой богатой коллекции твоих публикаций , так ты вообще ничего путного за жизнь не написал
Если интереса нет - иди мимо....

Люди на ИС голосуют кто плюсом, кто рублем. Но не словесным поносом ведь....
Иди мимо родненький.... иди уже..... :)
Мах; mmzavod; NFEZDURE; orfos; olbu; Дмитрий74Чел; RuslanKhanow; NittenRenegade; sanches; tomvlad; +10 Ответить
47. director04 3657 28.01.13 11:02 Сейчас в теме
AlexO, иди мальчик.... Не мешай, родной, взрослым дядям серьезные вещи обсуждать... :)
Прикрепленные файлы:
58. AlexO 135 28.01.13 12:39 Сейчас в теме
При запуске Com – соединения не создается отдельного процесса 1cv8. В результате, происходит ощутимая экономия ресурса рабочей станции.

автор даже не в курсе, как работает COM, и что такое "OLE Automation". И откуда экономия в одном случае, и больше возможностей - в другом.
Видимо, tomvlad тоже не в курсе, раз так рьяно поддерживает такой уровень понимания.
61. tomvlad 3860 28.01.13 12:47 Сейчас в теме
(58) AlexO, вот честно говоря меня в настоящий момент совсем не интересует COM, т.к. много другой работы.

Но автора я знаю, и знаю, насколько это уважаемый человек. А вот о вас кроме болтовни на форуме мы не знаем ничего.

Судя по всему, у Вас масса свободного времени.

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

Результат - общая польза, вместо взаимных оскорблений.
62. Yashazz 4709 28.01.13 13:00 Сейчас в теме
Может, я чего-то глобально не понимаю, но такое количество плюсов за обрывки цитат из штатной документации и общедоступных учебников - это не вполне нормально. Это вообще не статья. Заметки на полях от силы.
Жаль я в своё время отказался баянить, глядишь, кой-что новое людЯм открыл бы...

Автор, а расскажешь о том, как через com определить тип значения переменной, или получить объект типа "Тип"? Или как произвольный код выполнить? Или про тонкую настройку com+, и чем оно от dcom отличается, или как мирить разные минорные релизы?
64. Slon1c 28.01.13 13:07 Сейчас в теме
(62)да здесь же на инфостарте ответы и лежат :)
63. Slon1c 28.01.13 13:03 Сейчас в теме
Вопрос к автору : Как вы синхронизировали перечисления ?
66. director04 3657 28.01.13 13:17 Сейчас в теме
(63) Slon1c,
Вопрос к автору : Как вы синхронизировали перечисления ?


Перечисления - та же суть, что и строки. Определите имя перечисления, и по его значению, выберите необходимое перечисление в текущей БД.
67. Slon1c 28.01.13 13:34 Сейчас в теме
(66)Вопрос как раз в определении имени ... Просто мне пришлось перебором его получать, есть ли более короткий способ ? Вот фрагмент кода :
Для каждого лкстрока из Свойства.ПорядокВключенияСтоимостиВСоставРасходовНУ.Metadata().EnumValues Цикл
Если лкстрока.Synonym = соединение.string(Свойства.ПорядокВключенияСтоимостиВСоставРасходовНУ) Тогда
НоваяСтрока.ПорядокВключенияСтоимостиВСоставРасходовНУ =
Перечисления.ПорядокВключенияСтоимостиОСВСоставРасходовНУ[лкстрока.Name];
КонецЕсли;
КонецЦикла;
69. director04 3657 28.01.13 14:24 Сейчас в теме
(67) Slon1c, да, там есть один секрет. :)

ИмяПеречисления = БазаИсточник.XMLСтрока(БазаИсточник.Перечисления.СтавкиНДС.НДС10)

PS: Имя перечисления вернет например "НДС 10"
73. Slon1c 28.01.13 15:42 Сейчас в теме
(69)о, xml "рулит", еще сюда сериализацию и схемы добавить и все ок :)
65. sanches 256 28.01.13 13:12 Сейчас в теме
68. Perfekt 28.01.13 13:48 Сейчас в теме
а можно поподробнее про com-соединение
70. director04 3657 28.01.13 14:26 Сейчас в теме
(68) Вячеслав_163, а что конкретно вас интересует?
71. CaSH_2004 372 28.01.13 14:36 Сейчас в теме
В принципе данную статью можно считать за тест на знание (и умение их искать) местной аудитории.
Жаль что администрация не ввела более расширенный способ голосования за статью. Думаю для профессионального сайта уже стоило-бы ввести несколько рейтингов по публикациям что-то типа:
- оценка за оформление от -5 до +5
- оценка за новизну от -5 до +5
- оценка за содержание (полезность/актуальность) от -5 до +5
В общем цель чтобы публикация оценивалась по разным критериям и показывала полезность, а то иногда просто удивляет что все меряется количеством плюсов. Это как-то однобоко. Ведь как получается: прочитало 100 человек, из них 40 плюсануло, т.к. тема новая для них, а остальные 60 не стали минусовать, т.к. вроде автор хороший человек, а минус ассоциируется с отрицательным отношением к статье в целом (и переносится не осознано на автора) и соответственно неприятно ставить его. В итоге статья вроде как по рейтингу отличная, а толку для меня никакого.
(0) Вот скажи автор тебя бы обидело если бы я поставил "минус"? А если бы без объяснения? А если поставят его 60 из 100 людей без объяснения причин? Ведь реально для людей кто занимается 1С профессионально тут прописные истины которые иногда в день по несколько штук приходится решать. Но для начинающих может это действительно откровение.
К сожалению рейтинг составляют разные люди. Было бы удобно видеть какое-то различие (не читая имен) проголосовали разработчики, или просто товарищи которые скачивают. Статус то пользователям тут никак не меняют, на других ресурсах прямо под ником пишут статус/рейтинг, и понятно кто есть кто, а так приходится лазить в профиль пользователя.
Наверно где то такое обсуждалось уже с администрацией сайта, киньте ссылку если кто знает - буду благодарен.
JohnConnor; juricher; OerlandHue; +3 Ответить
72. director04 3657 28.01.13 15:03 Сейчас в теме
(71) CaSH_2004, ответить. Правда несколько повторюсь.

На данном ресурсе я видел много публикаций, которые меня явно восхитили.
Глядя на одни, я говорил "как жалко, что пока я так не могу".
Глядя на другие я думал, "а ведь решение лежало на виду,а я его не увидел".

Но, далеко не все из таких публикаций были оценены должным образом.
Разве от этого они потеряли свою привлекательность? - НЕТ!
Просто аудитория, к тому времени оказалась неготовой к данной теме.

Оказаться в нужный момент и в нужном месте - это не главное в продвижении чего-либо?

Одновременно, я видел не раз, когда просто "взлетали" публикации которые, по моему мнению, не тянули даже на 10 баллов.
Почему так происходило? Видимо потому, что кому то они явно пришлись по душе.
И я считал себя не вправе поливать автора и его идею грязью.
Я просто переходил к иной публикации (а одновременно делал для себя выводы).

Для чего появилась данная публикация. И для кого она здесь?

Повторюсь еще раз.
Во-первых. Уже несколько лет приходится заниматься Сom-соединениями.
Иногда некоторые моменты меня ставили в тупик. Приходилось перерыть масссу интернет-ресурсов, что бы докопаться до истины.
Со временем появилось желание поделиться своим видением данной проблемы.

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

Эта статья обращена именно к первым и вторым. Я рад, что помог им в чем то.

Вот и все.... А плюсы и минусы... - это всего лишь некое "спасибо" за потраченное время и труд..... Вот и все....
Не надо эти плюсы воспринимать как нечно иное.
alexvbard; Rioka; +2 1 Ответить
74. CaSH_2004 372 28.01.13 15:54 Сейчас в теме
(72)Все верно
Одновременно, я видел не раз, когда просто "взлетали" публикации которые не тянули даже на 10 баллов.
Почему так происходило? Видимо потому, что кому то они явно пришлись по душе.

Я про это и говорю, что было бы неплохо не читая статью по рейтингу понять насколько она тебе нужна, или оценить ее не так примитивно +/-. Насчет пришлась по душе я бы скорректировал так: она так много набрала из-за того что так звезды сложились и на сайте собралось много народу и многим понравилось, сами понимаете это дело случая т.к. как только статья уходит с главной страницы то ее уже можно найти только по запросу, а так голосуют все мимо проходящие. И поддерживать на главной, насколько я понимаю, позволяют как раз постоянные комментарии = раскрутка статьи.
Именно для этого и ставят магазины на проходных улицах - ведь часто важно не качество и актуальность товара, а проходимость места, люди гуляя часто покупают то что выкинут на следующий день, просто ради процесса. Это давно всем известная болезнь - шопомания. Или просто увеличения потока увеличивает вероятность нужного покупателя.
А плюсы и минусы... - это всего лишь некое "спасибо" за потраченное время и труд

Т.е. минус тоже считается за "спасибо"? Я вот и хотел узнать ваше отношение к тому нужно ли ставить в таких случаях его, и как интересно считают другие? Ставить ли его когда статья вредная/плохая или когда она тебе просто бесполезная/пустая.
На мой взгляд статья смахивает на просто повышение рейтинга, т.к.:
1. Приведенные мной проблема с типами вообще проигнорирована автором, хотя он не поленился написать кучу комментов.
2. В статье явная неточность: сказано что можно только так
V82 = Новый COMобъект("V82.ComConnector");
Код = КонтрагентСОМ.Code;

а вот я спокойно делаю при помощи обработки http://infostart.ru/public/93097/ вот так:
Сообщить(База.Справочники.Контрагенты.НайтиПоНаименованию("ООО").Код);

и все нормально! А подключение выбираю V82.ComConnector
Странно как-то что автору совершенно плевать на то что его статья содержит такие проблемы на которые указали, а он не реагирует никак.
3. А ведь есть еще проблема когда выскакивает ошибка "Класс не существует"
4. А есть проблема когда установлена 8.2, а потом установлена 8.1 - попробуйте-ка обменяться по ОЛЕ/COM типовым обменом УТ-БП!
5. Могли бы указать основные обработки на сайте которые позволяют универсально подключаться по ОЛЕ/COM чтобы новички не тратили времени, вы же для них пишите! Та же http://infostart.ru/public/93097/ кстати ее картинка почему то у вас красуется, с чего бы?. А в результате 2 слова по существу, и еще 6 за кадром.

В общем, я не поливаю грязью, а указываю на конкретные пробелы, но реакции ноль. Если это тот опыт которым вы делитесь то он какой-то ошибочный и неполный.
Я к тому что если бы у автора было бы желание собрать все глюки то он бы мог хотя бы прислушаться к чужому опыту, а не огрызаться на комменты. Тут же складывается ситуация когда тот кто прочел ее знают больше чем автор, говорят ему (иногда и некорректно), а он еще и отбивается. В итоге вся информация не в статье, а в коментах! Забавно! Так часто бывает, но не нужно при этом упирать на то что хотели как лучше - я же показываю как лучше, и другие показывают! Включите это в статью и она будет стоящая, не всем же интересно читать эту перепалку.
Rioka; AlexO; Skimen; +3 Ответить
75. director04 3657 28.01.13 16:50 Сейчас в теме
(74) CaSH_2004, уважаемый.
Если бы я ставил свою статью в ранг совершенного и законченного проекта (ну типа как продукты Apple), я бы просто отключил возможность комментариев.

Считаете возможным дополнить сведения - дополните. Я буду вам признателен.
Считаете это не нужным вам - не дополняйте. Пройдите мимо.

Еще раз говорю: есть люди, которые почерпнули для себя что-то важное.
Есть люди, которые узнали из вашего предыдущего поста, что -то дополнительно для себя.

Если бы не было этой статьи, то не было бы и вашего поста.
Кто-то шел бы до своих открытий чуточку дольше.
Не заморачивайтесь лишнего. Те кто придет после вас - найдет и у вас кучу недочетов и недостатков.

Если руководствоваться вашими постулатами, то наверное человечество не написало бы ни одной книги.
Вы согласны?

Разговор далее, по этому поводу, считаю неконструктивным.
Лучше потрачу время на помощь тем, кто этого желает. Допустим 67 и 68.

Вы не против?
76. CaSH_2004 372 28.01.13 23:55 Сейчас в теме
(75)Да пожалуйста, однако странное игнорирование вопросов и собственных ошибок. Я собственно выразил свое мнение и если вы считаете что писать то чего нет - нормально, а то что есть не стоит, то значит такая публикация заслуживает минус. Жаль что вместо желания изменить статью вы предпочитаете общение в комментариях, а по существу ничего не меняете: вроде и против ничего не имеете, но и менять не хотите.
78. director04 3657 29.01.13 07:55 Сейчас в теме
(76) CaSH_2004,
Да пожалуйста, однако странное игнорирование вопросов и собственных ошибок.


Ни кто их и не игнорирует. Ваши посты - это очень удачное дополнение в поиск истины. Если они конструктивны (а ваши посты именно конструктивны), то читатель от этого только выигрывает.

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

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


я искренне рад вашему минусу. Поясню:
  • После того как вы поставили эту точку в ваших претензиях, надеюсь, что остальные ваши посты будут только по существу вопроса
  • Так как вы поставили оценку, значит вы не остались равнодушны к данной публикации. А для меня это уже есть весьма высокая оценка. Еще раз - Спасибо.
84. CaSH_2004 372 01.02.13 12:09 Сейчас в теме
(78)Вот буквально на днях тоже встал вопрос как вытянуть запросом в 8-ку из 7-ки данные по регистрам с указанием даты.
Помучался сам часок, для интереса чтобы проверить угадаю ли как это сделать, но понял что не выходит и решил обратится к интернету, запросил Яндекс: "1С как сделать запрос через ОЛЕ", в 4-й строке получил нужный ответ. На поиск и прочтение потратил 2 минуты.
Вот делюсь ссылками:
Взаимодействие через OLE ч.1
Взаимодействие через OLE ч.2
Это я к вашему:
Иногда некоторые моменты меня ставили в тупик. Приходилось перерыть масссу интернет-ресурсов, что бы докопаться до истины.

Странно, но если есть решение то я его всегда нахожу в интернете и достаточно быстро, чего и всем советую, а заодно показываю КАК ЭТО ДЕЛАТЬ. Это пример статей за каторые я бы даже приплатил бы автору (если бы не пришлось на это тратить пол дня на его поиск и способ перевода). Т.е. статья имеет кучу информации полезной, в вашей же статье самое ценное - комментарии. Потому что описывать 3 приема, из которых 1-е - как подключиться, а 2-е вообще частично неверное, и вам еще в лом его исправить:
Изменять публикацию каждые пять минут - дело очень не продуктивное, так как бесплатные публикации подлежат обязательной модерации.

это очень плохой пример который вы показываете другим. Странно но только на Инфстарте народ пишет по несколько строчек в качестве статьи. И чем дальше тем короче становяться статьи. Стараниями таких авторов-минималистов скоро статьи будут выглядеть например так:
Проблема такая-то, решение я нашел в книге такой-то или на сайте таком то

Естественно при таких статьях приходится перерыть их кучу чтобы собрать что-то внятное. Вы сами это испытали на себе (с ваших же слов) и сами же создали такую же пустую публикацию.

Как я уже говорил, если вам влом опичывать все подробно, понадергали бы ссылок из разных мест, выложили бы их, и вывели бы из них свои 3 ВЕЛИКИХ КИТА. И думаю придирок было бы минимум.
85. director04 3657 01.02.13 12:19 Сейчас в теме
(84),

Вот делюсь ссылками:
Взаимодействие через OLE ч.1
Взаимодействие через OLE ч.2


Если я правильно понял, при быстром просмотре, то в этих статьях речь идет исключительно про OLE.
На данном форуме, мы рассматриваем исключительно Com.
Если я сделал не верный вывод - поправьте меня, и прямо здесь выложите код, отвечающий на мой (и ваш) вопрос.

По поводу качества статьи, извините уважаемый, уже достали.
Лично одно ваше мнение, для массы пользователей - не авторитет.
Хотите убедиться - посмотрите на оценку статьи (на сегодня 78 баллов).
Вполне возможно, что вы будете способны написать свой шедевр, и набрать баллов 700.
Желаю удачи. А лазить здесь, и вместо конструктива плеваться и поносить, вам это надо?

Есть желание исправить ситуацию - хватит брызгать слюной. Просто добавьте информации в комментариях и изложите ваше видение вопроса.
86. CaSH_2004 372 01.02.13 12:40 Сейчас в теме
(85)
идет исключительно про OLE

конечно, это как пример, причем для 7-ки а не 8-ки, и что тут такого? Статья от этого не хуже. Пользы на порядка 3 больше чем от этой статьи. Если люди плючуют за вас, пусть почитают побольше чем просто про 3-х ПОКАЛЕЧЕННЫХ КИТОВ :)
Есть желание исправить ситуацию - хватит брызгать слюной. Просто добавьте информации в комментариях и изложите ваше видение вопроса.

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

Да вроде как не один если есть глаза и мозг, просто мне одному больше нужно наверно :)
Кстати Галилео Гагилей насколько помниться тоже почти в одиночку утверждал что Земля крутиться, а все вокруг решили что он ненормальный. Это сравнение к тому что если баранов много то это значит что они априоре умнее пастуха! Никого не хочу обидеть, но ссылаться на количество плюсов - глупое утверждение. Плюсуют те для кого информация новая, остальные идут мимо, и таких на 2 порядка больше, если вы умеете думать то гяньте: просмотров 1745, а плюсов 80! Конечно там идет накрутка на каждое обновление страницы, но суть вы должны уловить. Просматривают те кто пишет комменты, а их еденицы, а не сотни, так что вывод что остальные также считают публикацию не стоящей внимание и плюса, просто не считают нужным минусовать, а почему я уже ранее писал.
87. director04 3657 01.02.13 12:52 Сейчас в теме
(86) CaSH_2004,
если вы умеете думать то гяньте: просмотров 1751, а плюсов 80!


А разве это слабый процент? ))) Считайте КПД = 1745/80 = 21.8875 (кол. просмотров к количеству кликов)

Посмотрите на свою топовую публикацию : http://infostart.ru/public/86911/

КПД = 1847/113 = 16,345

а в этой и того хуже : http://infostart.ru/public/137694/ Всего 28,57

Ну и что, намного лучше? )))))

Кстати Галилео Гагилей насколько помниться тоже почти в одиночку утверждал что Земля крутиться


Желаю удачи Галилео.... Только чаще в свой глаз заглядывайте. Вдруг там бревно, а вы соломинки в чужих глазах рассматриваете )))

Может хватит пиписьками меряться?
88. CaSH_2004 372 01.02.13 13:20 Сейчас в теме
(87)Да никто не меряется, я просто высказываю мнение, и полагаю что корректно. Имею право. Найдите у меня в публикациях недостатки, изложите как я внятно свои пожелания, я проанализирую и либо исправлю их либо обоснованно отвечу.
http://infostart.ru/public/137694/ - это кстати экспромт, я так в комментах и сказал, что это по сути черновой вариант т.к. время не было. Так же как наверно и у вас. Согласен что других легче критиковать, но критика полезна, так что я вам помагаю, не обижусь на вашу помощь.
Возможно после такой статьи как ваша и сам свою допилю - т.к. мне она тоже не нравиться.
Кстати откуда такая интересная формула успеха 1745/80? А где переменная кол-во комментариев? Вроде как они вияют на просмотры.
И мои публикации не планировались на плюсы, а на решение конкретной проблемы, я ее решил - нареканий нет, какие были все доработал. И если начинаете делить (да не делимы будете) то сначала замерьте время. Есть понятие как актуальный материал и как устаревший. Мой все уже скачали и поплюсовали кому нужно, смотрят наверно за обновлениями. Ваш пока на стадии актуальности. Когда все поплюсуют (месяца через 2-3) увидите как быстро ваш коэффициент пойдет вниз. Я даже не преполагаю что закончаться неграмотные кто станет плюсовать, у меня пока иногда плюсуют за ГОСиД.
89. director04 3657 01.02.13 13:42 Сейчас в теме
(88) CaSH_2004, я вас понял. Предлагаю уже замять эти тему и работать дальше. Дела насущные есть у нас у всех.
Ок?

ps: Время рассудит все статьи этого форума.
77. Abadonna 3958 29.01.13 06:36 Сейчас в теме
(0)
Исключение: у Com-объекта, предопределенные реквизиты имеют только англоязычную транскрипцию. Обычные реквизиты – русскую транскрипцию.
Пример:
КонтрагентСОМ = БазаИсточник.Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", ИНН);
Код = КонтрагентСОМ.Code;
Наименование = КонтрагентСОМ.Description;
НаименованиеПолное = КонтрагентСОМ.НаименованиеПолное;

Не вводи в заблуждение неокрепшие умы.
Соединение=ОбщСМ.ComConnect(КаталогИБ,Имя,Пароль); 
Спр=Соединение.Справочники.ДолжностиОрганизаций.СоздатьЭлемент();
Спр.Наименование="Тест";
Спр.Записать();

Работает, только шуба заворачивается
Равно как и
Выборка=Соединение.Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
   Сообщить(Выборка.Наименование);
КонецЦикла;
80. Raminus 29.01.13 16:10 Сейчас в теме
нормальная статейка, полезно.
director04; +1 Ответить
81. director04 3657 29.01.13 18:16 Сейчас в теме
(80) Raminus, Спасибо всем, кто оценил.

Редкая публикация обходится одними благодарностями. Я к этому уже привык. :)

Пишите, делитесь опытом. Реальная польза будет всем
82. Yashazz 4709 29.01.13 22:27 Сейчас в теме
Да, и ещё: упомяните хотя б, что с файловыми базами тоже так работать можно, а то у вас лишь клиент-серверное подключение описано.
83. director04 3657 30.01.13 08:43 Сейчас в теме
(82) Yashazz,
Да, и ещё: упомяните хотя б, что с файловыми базами тоже так работать можно, а то у вас лишь клиент-серверное подключение описано.


Спасибо, уже учел. В примере подключения к БД указал, что пример подключения к файловой БД приводится в комментариях (см. несколько выше).

Хотел задать встречный вопрос: ранее вы спрашивали"
Автор, а расскажешь о том, как через com определить тип значения переменной, или получить объект типа "Тип"? Или как произвольный код выполнить? Или про тонкую настройку com+, и чем оно от dcom отличается, или как мирить разные минорные релизы?


Вопрос: удалось ли вам решить проблему определения типа значения переменной?
Лично мне приходит на ум только лишь обращение к метаданным объекта, а через них определения типа.
Может быть есть более изящное решение?
90. Yuriko 18.02.13 18:45 Сейчас в теме
Извините, может я - не в тему ?
Я не буду высказывать своё мнение.
И не буду никого ругать или хвалить.
Я хочу привести (работающий) код синхронизации Контрагентов из УТ-11 в УТ-10 и БП 1.6
Возможно, кто-то найдёт его полезным.
Я в своё время изрядно намучался - всё было внове :)

&НаСервере
Перем ИмяСервера Экспорт;
Перем ИмяБазы Экспорт;
Перем Пользователь Экспорт;
Перем Пароль Экспорт;
Перем СтрокаСоединения Экспорт;

////////////////////////////////////////////////////////////­////////////////////
// ПРОЦЕДУРЫ СИНХРОНИЗАЦИИ КОНТРАГЕНТОВ

&НаСервере
Функция ПравоСинхронизацииКонтрагентов()
    //+++ YuriKo bgn [2012.12.06] начало 27
	Если РольДоступна(Метаданные.Роли.ПравоВводаИнформацииПоПартнеруБезКонтроля) Тогда
		Возврат Истина;
    Иначе    
		Возврат Ложь;
    КонецЕсли;	
    //--- YuriKo end [2012.12.06] конец  27
КонецФункции   // ПравоСинхронизацииКонтрагентов()

&НаКлиенте
Процедура Синхронизировать(Команда)
	//+++ YuriKo bgn [2012.05.05] начало 2
    Ответ = Вопрос("Копировать текущего Контрагента в УТ-10 ?", РежимДиалогаВопрос.ДаНет);
    Если Ответ = КодВозвратаДиалога.Да Тогда
        ИмяСервера = УТ10_ПолучитьИмяСервера();
        ИмяБазы = УТ10_ПолучитьИмяБазы();
        Пользователь = УТ10_ПолучитьПользователя();
        Пароль = УТ10_ПолучитьПароль();
        Если НЕ ЗначениеЗаполнено(ИмяСервера) ИЛИ НЕ ЗначениеЗаполнено(ИмяБазы) ИЛИ НЕ ЗначениеЗаполнено(Пользователь) ИЛИ НЕ ЗначениеЗаполнено(Пароль) Тогда
            Предупреждение("Не заполнены параметры обмена с УТ-10. Откройте форму Констант и введите недостающие...");
            Возврат;
        Иначе    
            //СтрокаСоединения = "File=""c:\1c\ak@ut""; Usr =""Админ"";";
            СтрокаСоединения = "Srvr=""" + ИмяСервера + """;Ref=""" + ИмяБазы + """;Usr=""" + Пользователь + """;Pwd=""" + Пароль + """";
        КонецЕсли;
    	УТ10_Выгрузить(СтрокаСоединения);
    КонецЕсли;
    
    Ответ = Вопрос("Копировать текущего Контрагента в БП ?", РежимДиалогаВопрос.ДаНет);
    Если Ответ = КодВозвратаДиалога.Да Тогда
        ИмяСервера = БП16_ПолучитьИмяСервера();
        ИмяБазы = БП16_ПолучитьИмяБазы();
        Пользователь = БП16_ПолучитьПользователя();
        Пароль = БП16_ПолучитьПароль();
        Если НЕ ЗначениеЗаполнено(ИмяСервера) ИЛИ НЕ ЗначениеЗаполнено(ИмяБазы) ИЛИ НЕ ЗначениеЗаполнено(Пользователь) ИЛИ НЕ ЗначениеЗаполнено(Пароль) Тогда
            Предупреждение("Не заполнены параметры обмена с БП. Откройте форму Констант и введите недостающие...");
            Возврат;
        Иначе    
            //СтрокаСоединения = "File=""c:\1c\ak@ut""; Usr =""Админ"";";
            СтрокаСоединения = "Srvr=""" + ИмяСервера + """;Ref=""" + ИмяБазы + """;Usr=""" + Пользователь + """;Pwd=""" + Пароль + """";
        КонецЕсли;
    	БП16_Выгрузить(СтрокаСоединения);
    КонецЕсли;
	//--- YuriKo end [2012.05.05] конец  2
КонецПроцедуры   // Синхронизировать()

&НаСервере
Процедура ПолучитьФормуСинхро()
    //+++ YuriKo bgn [2012.12.04] начало 18
    ПолучитьОбщуюФорму("НО_ПараметрыСинхронизации").ОткрытьМодально();
    //--- YuriKo end [2012.12.04] конец  18
КонецПроцедуры   // ПолучитьОбщФорму()

&НаСервере
Функция ПолучитьСправочникОбъектПоСсылке(Объект_Ссылка)
    //+++ YuriKo bgn [2012.12.04] начало 9
    Спр = Объект_Ссылка.ПолучитьОбъект();
    Возврат Спр;
    //--- YuriKo end [2012.12.04] конец  9
КонецФункции   // ПолучитьСправочникОбъектПоСсылке()

/////////////////////////////// Бухгалтерия

&НаСервере
Функция БП16_ПолучитьИмяСервера()
    //+++ YuriKo bgn [2012.12.05] начало 22
    ИмяСервера = Константы.НО_БП16_ИмяСервера.Получить();
    Возврат ИмяСервера;
    //--- YuriKo end [2012.12.05] конец  22
КонецФункции   // ПолучитьИмяСервера()
 
&НаСервере
Функция БП16_ПолучитьИмяБазы()
    //+++ YuriKo bgn [2012.12.05] начало 23
    ИмяБазы = Константы.НО_БП16_ИмяБазы.Получить();
    Возврат ИмяБазы;
    //--- YuriKo end [2012.12.05] конец  23
КонецФункции   // ПолучитьИмяБазы()

&НаСервере
Функция БП16_ПолучитьПользователя()
    //+++ YuriKo bgn [2012.12.05] начало 24
    Пользователь = Константы.НО_БП16_Пользователь.Получить();
    Возврат Пользователь;
    //--- YuriKo end [2012.12.05] конец  24
КонецФункции   // ПолучитьПользователя()

&НаСервере
Функция БП16_ПолучитьПароль()
    //+++ YuriKo bgn [2012.12.05] начало 25
    Пароль = Константы.НО_БП16_Пароль.Получить();
    Возврат Пароль;
    //--- YuriKo end [2012.12.05] конец  25
КонецФункции   // ПолучитьПароль()

&НаСервере
Функция БП16_СоздатьНовогоКонтрагента(мКод, СтрокаСоединения)
	V8 = Новый COMОбъект("V82.ComConnector");
	Попытка 
		СОМсоединение = V8.Connect(СтрокаСоединения);
	Исключение
		Сообщить("База данных БП не открыта!!!  Невозможно передать Контрагента из УТ 11 - Функция БП16_СоздатьНовогоКонтрагента() - вызывайте программиста ...");
		Выполнено = Ложь;
		Возврат "";
	КонецПопытки;
	Контрагент = Объект;
    
    Попытка
		ноКонтр = СОМсоединение.Справочники.Контрагенты.СоздатьЭлемент();
        Если ЗначениеЗаполнено(мКод) Тогда
            ноКонтр.Код = мКод;
        КонецЕсли;
		ноКонтр.Наименование = Контрагент.Наименование;
		ноКонтр.НаименованиеПолное = Контрагент.НаименованиеПолное;
		ноКонтр.ИНН = Контрагент.ИНН;
		ноКонтр.КПП = Контрагент.КПП;
		ноКонтр.КодПоОКПО = Контрагент.КодПоОКПО;
        ноКонтр.Комментарий = ?(ПустаяСтрока(Контрагент.ДополнительнаяИнформация), "передан из УТ-11   [" + ТекущаяДата() + "]",
                              Контрагент.ДополнительнаяИнформация + "     передан из УТ-11   [" + ТекущаяДата() + "]");
		Если Контрагент.ЮрФизЛицо = ПредопределенноеЗначение("Перечисление.ЮрФизЛицо.ЮрЛицо") Тогда
			ноКонтр.ЮрФизЛицо = СОМсоединение.Перечисления.ЮрФизЛицо.ЮрЛицо;
		Иначе
			ноКонтр.ЮрФизЛицо = СОМсоединение.Перечисления.ЮрФизЛицо.ФизЛицо;
        КонецЕсли;
		ноКонтр.Записать();
        ноКонтр.ГоловнойКонтрагент = ноКонтр.Ссылка;
		ноКонтр.Записать();
        
        КонтраКом = ноКонтр.Ссылка;
		GUID_БП16 = КонтраКом.УникальныйИдентификатор();
		ГУИД = СОМсоединение.String(КонтраКом.УникальныйИдентификатор());
		GUID = Строка(ГУИД);
    	Попытка 
        	КонтраКом = СОМсоединение.Справочники.Контрагенты.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",GUID));
    	Исключение
    		Сообщить("Не могу найти Контрагента в БП по ГУИД = <" + GUID + "> - Функция БП16_СоздатьНовогоКонтрагента() - вызывайте программиста ...");
    		Выполнено = Ложь;
    		Возврат Ложь;
    	КонецПопытки;
		мКод = Строка(КонтраКом.Код);
        КонтраОбъект = Контрагент.Ссылка.ПолучитьОбъект();
        КонтраОбъект.НО_GUID_БП16 = GUID;
        КонтраОбъект.НО_Код_БП16 = мКод;
        КонтраОбъект.Записать();
		V8 = 0;   СОМсоединение = 0;
		Возврат GUID;
	Исключение
		Сообщить("Не удалось записать в БП контрагента " + Контрагент.НаименованиеПолное + Символы.ПС + ОписаниеОшибки());
		КонтраКом = Неопределено;
		V8 = 0;   СОМсоединение = 0;
		Возврат "";
	КонецПопытки;
КонецФункции   // БП16_СоздатьНовогоКонтрагента()

&НаСервере
Функция БП16_НайтиКонтрагентаПоГУИД(GUID_БП16, мКод, СтрокаСоединения)
    мКод = "";
	V8 = Новый COMОбъект("V82.ComConnector");
	Попытка 
		СОМсоединение = V8.Connect(СтрокаСоединения);
	Исключение
		Сообщить("База данных БП не открыта!!!  Невозможно передать Контрагента из УТ 11 - Функция БП16_НайтиКонтрагентаПоГУИД() - вызывайте программиста ...");
        мКод = "База данных не открыта";
		Возврат "";
	КонецПопытки;
	Попытка 
    	КонтраКом = СОМсоединение.Справочники.Контрагенты.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",GUID_БП16));
	Исключение
		Сообщить("Не могу найти Контрагента в БП по ГУИД = <" + GUID_БП16 + "> - Функция БП16_НайтиКонтрагентаПоГУИД() - вызывайте программиста ...");
		Выполнено = Ложь;
   		Возврат Ложь;
	КонецПопытки;
	мКод = Строка(КонтраКом.Код);
	V8 = 0;   СОМсоединение = 0;
	Если ЗначениеЗаполнено(мКод) Тогда Возврат Истина Иначе Возврат Ложь КонецЕсли;
КонецФункции   // БП16_НайтиКонтрагентаПоГУИД(Цель)

&НаСервере
Функция БП16_НайтиКонтрагентаПоИНН(Контрагент, мКод, мГУИД, СтрокаСоединения)
	V8 = Новый COMОбъект("V82.ComConnector");
	Попытка 
		СОМсоединение = V8.Connect(СтрокаСоединения);
	Исключение
		Сообщить("База данных БП не открыта!!!  Невозможно передать Контрагента из УТ 11 - Функция БП16_НайтиКонтрагентаПоИНН() - вызывайте программиста ...");
		Выполнено = Ложь;
		Возврат "";
	КонецПопытки;
	Попытка 
    	КонтраКом = СОМсоединение.Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", Контрагент.ИНН);
	Исключение
		Сообщить("Не могу найти Контрагента в БП по ИНН = <" + Контрагент.ИНН + "> - Функция БП16_НайтиКонтрагентаПоГУИД() - вызывайте программиста ...");
		Выполнено = Ложь;
   		Возврат Ложь;
	КонецПопытки;
	GUID_БП16 = КонтраКом.УникальныйИдентификатор();
	ГУИД = СОМсоединение.String(КонтраКом.УникальныйИдентификатор());
    мГУИД = Строка(ГУИД);
	мКод = Строка(КонтраКом.Код);
	V8 = 0;   СОМсоединение = 0;
	Если ЗначениеЗаполнено(мКод) Тогда Возврат Истина Иначе Возврат Ложь КонецЕсли;
КонецФункции   // БП16_НайтиКонтрагентаПоИНН(Цель)

&НаСервере
Функция БП16_НайтиКонтрагентаПоНаименованию(Контрагент, мКод, мГУИД, СтрокаСоединения)
	V8 = Новый COMОбъект("V82.ComConnector");
	Попытка 
		СОМсоединение = V8.Connect(СтрокаСоединения);
	Исключение
		Сообщить("База данных БП не открыта!!!  Невозможно передать Контрагента из УТ 11 - Функция БП16_НайтиКонтрагентаПоНаименованию() - вызывайте программиста ...");
		Выполнено = Ложь;
		Возврат "";
	КонецПопытки;
	Попытка 
    	КонтраКом = СОМсоединение.Справочники.Контрагенты.НайтиПоНаименованию(Контрагент.Наименование);
	Исключение
		Сообщить("Не могу найти Контрагента в БП по Наименованию = <" + Контрагент.Наименование + "> - Функция БП16_НайтиКонтрагентаПоНаименованию() - вызывайте программиста ...");
		Выполнено = Ложь;
   		Возврат Ложь;
	КонецПопытки;
	GUID_БП16 = КонтраКом.УникальныйИдентификатор();
	ГУИД = СОМсоединение.String(КонтраКом.УникальныйИдентификатор());
    мГУИД = Строка(ГУИД);
	мКод = Строка(КонтраКом.Код);
	V8 = 0;   СОМсоединение = 0;
	Если ЗначениеЗаполнено(мКод) Тогда Возврат Истина Иначе Возврат Ложь КонецЕсли;
КонецФункции   // БП16_НайтиКонтрагентаПоНаименованию()

&НаСервере
Процедура БП16_ЗаписатьКонтактыКонтрагента(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения)
	Выполнено = Истина;   // заготовка
КонецПроцедуры   // БП16_ЗаписатьКонтактыКонтрагента()

&НаСервере
Процедура БП16_ПолучитьБанкСчетаКонтрагента(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения)
    Выполнено = Ложь;
	V8 = Новый COMОбъект("V82.ComConnector");
	Попытка 
		СОМсоединение = V8.Connect(СтрокаСоединения);
	Исключение
		Сообщить("База данных БП не открыта!!!  Невозможно передать Контрагента из УТ 11 - Процедура БП16_ПолучитьБанкСчетаКонтрагента()- вызывайте программиста ...");
		Возврат;
	КонецПопытки;
    Попытка 
    	КонтрНовый = СОМсоединение.Справочники.Контрагенты.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",НовыйКонтрагентГУИД));
    Исключение
        Сообщить("Не могу найти Контрагента в БП по ГУИД = <" + НовыйКонтрагентГУИД + "> - Процедура БП16_ПолучитьБанкСчетаКонтрагента() - вызывайте программиста ...");
        Выполнено = Ложь;
        Возврат;
    КонецПопытки;
	Контрагент = Объект;
    
    ВыборкаБухСчётовКонтры = Справочники.БанковскиеСчетаКонтрагентов.Выбрать( , Контрагент.Ссылка, , );
    Пока ВыборкаБухСчётовКонтры.Следующий() Цикл
        Если ВыборкаБухСчётовКонтры.ЭтоГруппа ИЛИ ВыборкаБухСчётовКонтры.ПометкаУдаления Тогда
            Продолжить;
        КонецЕсли;
        Счёт = ВыборкаБухСчётовКонтры;
        Счёт_Наимен = ВыборкаБухСчётовКонтры.Наименование;
        Счёт_Номер  = ВыборкаБухСчётовКонтры.НомерСчета;
        Счёт_Банк   = ВыборкаБухСчётовКонтры.Банк;
        Счёт_РсБанк = ВыборкаБухСчётовКонтры.БанкДляРасчетов;
        Счёт_Валюта = ВыборкаБухСчётовКонтры.ВалютаДенежныхСредств;
        Счёт_Контра = ВыборкаБухСчётовКонтры.Владелец;
        Счёт_ТеКорр = ВыборкаБухСчётовКонтры.ТекстКорреспондента;
        Счёт_ТеНазн = ВыборкаБухСчётовКонтры.ТекстНазначения;
        Счёт_изБП16 = СОМсоединение.Справочники.БанковскиеСчета.НайтиПоНаименованию(Счёт_Наимен, , , КонтрНовый);
        мСчёт       = Строка(Счёт_изБП16.НомерСчета);
        Если Счёт_Номер = мСчёт Тогда
        	Выполнено = Истина;
            Продолжить;
        Иначе
            НовыйСчёт = СОМсоединение.Справочники.БанковскиеСчета.СоздатьЭлемент();
            НовыйСчёт.Владелец = КонтрНовый;
            НовыйСчёт.НомерСчета = Счёт_Номер;
            НовыйСчёт.Наименование = Счёт_Наимен;
            НовыйСчёт.ВидСчета = "Расчетный";
            Если Счёт_Валюта.Код = "643" Тогда        // Российский рубль
    			НовыйСчёт.ВалютаДенежныхСредств = СОМсоединение.Справочники.Валюты.НайтиПоКоду("810");
    		ИначеЕсли Счёт_Валюта.Код = "978" Тогда   // Евро
    			НовыйСчёт.ВалютаДенежныхСредств = СОМсоединение.Справочники.Валюты.НайтиПоКоду("978");
    		ИначеЕсли Счёт_Валюта.Код = "840" Тогда   // Доллар США
    			НовыйСчёт.ВалютаДенежныхСредств = СОМсоединение.Справочники.Валюты.НайтиПоКоду("840");
    		Иначе
    			НовыйСчёт.ВалютаДенежныхСредств = СОМсоединение.Справочники.Валюты.НайтиПоКоду("810");
    		КонецЕсли;
            мБанк = СОМсоединение.Справочники.Банки.НайтиПоКоду(Счёт_Банк.Код);
            Если ЗначениеЗаполнено(мБанк.Code) Тогда
                НовыйСчёт.Банк = мБанк;
            Иначе
                Сообщить("В БП отсутствует банк [" + Счёт_Банк.Наименование + "] с кодом <" + Счёт_Банк.Код + ">, счёт [" +
                          Счёт.Наименование + "] записан не будет");
                Продолжить;
            КонецЕсли; 
            Попытка
                НовыйСчёт.Записать();
            	Выполнено = Истина;
            Исключение
            	Сообщить("В БП не удалось записать банковский счёт <" + Счёт_Номер + ">");
            	Выполнено = Ложь;
            КонецПопытки;
        КонецЕсли;
    КонецЦикла;
	V8 = 0;   СОМсоединение = 0;
КонецПроцедуры   // БП16_ПолучитьБанкСчетаКонтрагента()

&НаСервере
Процедура БП16_ЗаписатьДоговорыКонтрагента(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения)
	V8 = Новый COMОбъект("V82.ComConnector");
	Попытка 
		СОМсоединение = V8.Connect(СтрокаСоединения);
	Исключение
		Сообщить("База данных БП не открыта!!!  Невозможно передать Контрагента из УТ 11 - Процедура БП16_ЗаписатьДоговорыКонтрагента() - вызывайте программиста ...");
		Выполнено = Ложь;
		Возврат;
	КонецПопытки;
    Попытка 
    	КонтрНовый = СОМсоединение.Справочники.Контрагенты.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",НовыйКонтрагентГУИД));
    Исключение
        Сообщить("Не могу найти Контрагента в БП по ГУИД = <" + НовыйКонтрагентГУИД + "> - Процедура БП16_ЗаписатьДоговорыКонтрагента() - вызывайте программиста ...");
        Выполнено = Ложь;
        Возврат;
    КонецПопытки;
	Контрагент = Объект;
	
	Отбор = Новый Структура("Контрагент");
	Контр = Контрагент.Ссылка;
	Отбор.Контрагент = Контр;
	Выборка = Справочники.ДоговорыКонтрагентов.Выбрать( , , Отбор, );
	Пока Выборка.Следующий() Цикл
		Если (НЕ Выборка.Статус = Перечисления.СтатусыДоговоровКонтрагентов.Действует) ИЛИ (Выборка.ПометкаУдаления = Истина) ИЛИ Выборка.Ссылка.ЭтоГруппа Тогда
			Продолжить;
		КонецЕсли;
        
        // искать договор по ГУИД
        GUID = Выборка.НО_GUID_БП16;
        Если ЗначениеЗаполнено(GUID) Тогда
            ДогКом = СОМсоединение.Справочники.ДоговорыКонтрагентов.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",GUID));
    		мКод = Строка(ДогКом.Код);
        Иначе    
    		мКод = "";
        КонецЕсли;
        Если ЗначениеЗаполнено(мКод) Тогда
            ДоговорОбъект = ПолучитьСправочникОбъектПоСсылке(Выборка.Ссылка);
            ДоговорОбъект.НО_Код_БП16 = мКод;
            ДоговорОбъект.Записать();
            Продолжить;
        КонецЕсли;
        
        Если ЗначениеЗаполнено(Выборка.НО_Код_БП16) Тогда
            мКод = Выборка.НО_Код_БП16;
        Иначе
            Если ЗначениеЗаполнено(Выборка.НО_Код_УТ10) Тогда
                мКод = Выборка.НО_Код_УТ10;
            КонецЕсли;
        КонецЕсли;
        Дог = СОМсоединение.Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
        Если ЗначениеЗаполнено(мКод) Тогда
            Дог.Код = мКод;
        КонецЕсли;
		Дог.Наименование = Выборка.Наименование;
		Дог.Комментарий = Выборка.Комментарий;
        
        // в БП с одним ИНН введено много организаций М и Р (для отчётности), поэтому ищем организацию по коду
        Если Выборка.Организация.ИНН = "7722706542" Тогда
    		Дог.Организация = СОМсоединение.Справочники.Организации.НайтиПоКоду("OFB000001");   // ООО "Новый "Детский мир" (новый)
        ИначеЕсли Выборка.Организация.ИНН = "7722706609" Тогда
    		Дог.Организация = СОМсоединение.Справочники.Организации.НайтиПоКоду("OFB000003");   // ООО «Новый «Детский мир М»
        ИначеЕсли Выборка.Организация.ИНН = "7722706581" Тогда
    		Дог.Организация = СОМсоединение.Справочники.Организации.НайтиПоКоду("OFB000002");   // ООО «Новый «Детский мир Р1»
        Иначе
    		Дог.Организация = СОМсоединение.Справочники.Организации.НайтиПоКоду("OFB000001");   // ООО "Новый "Детский мир" (новый)
        КонецЕсли; 

        Если Выборка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиенту Тогда
    		Дог.ВидДоговора = СОМсоединение.Перечисления.ВидыДоговоровКонтрагентов.СПокупателем;
        ИначеЕсли Выборка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию Тогда
    		Дог.ВидДоговора = СОМсоединение.Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером;
        ИначеЕсли Выборка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика Тогда
    		Дог.ВидДоговора = СОМсоединение.Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком;
        ИначеЕсли Выборка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаКомиссию Тогда
    		Дог.ВидДоговора = СОМсоединение.Перечисления.ВидыДоговоровКонтрагентов.СКомитентом;
        Иначе
    		Дог.ВидДоговора = СОМсоединение.Перечисления.ВидыДоговоровКонтрагентов.Прочее;
        КонецЕсли; 
        
        Если Выборка.ВалютаВзаиморасчетов.Код = "643" Тогда        // Российский рубль
			Дог.ВалютаВзаиморасчетов = СОМсоединение.Справочники.Валюты.НайтиПоКоду("810");
		ИначеЕсли Выборка.ВалютаВзаиморасчетов.Код = "978" Тогда   // Евро
			Дог.ВалютаВзаиморасчетов = СОМсоединение.Справочники.Валюты.НайтиПоКоду("978");
		ИначеЕсли Выборка.ВалютаВзаиморасчетов.Код = "840" Тогда   // Доллар США
			Дог.ВалютаВзаиморасчетов = СОМсоединение.Справочники.Валюты.НайтиПоКоду("840");
		Иначе
			Дог.ВалютаВзаиморасчетов = СОМсоединение.Справочники.Валюты.НайтиПоКоду("810");
		КонецЕсли;
        
		Дог.Владелец = КонтрНовый;
		Дог.ВедениеВзаиморасчетов = СОМсоединение.Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоДоговоруВЦелом;
        Попытка
            Дог.Записать();
        Исключение
            // Возможно, такой код элемента ужЕ существует
            Попытка
                Дог.Код = "";
                Дог.Записать();
            Исключение
        		Сообщить("Не удалось записать договор контрагента " + Дог + Символы.ПС + ОписаниеОшибки());
            КонецПопытки;
        КонецПопытки;
        
        ДогКом = Дог.Ссылка;
		GUID_БП16 = ДогКом.УникальныйИдентификатор();
		ГУИД = СОМсоединение.String(ДогКом.УникальныйИдентификатор());
		GUID = Строка(ГУИД);
		ДогКом = СОМсоединение.Справочники.ДоговорыКонтрагентов.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",GUID));
		мКод = Строка(ДогКом.Код);
        
        Если ЗначениеЗаполнено(мКод) Тогда
            ДоговорОбъект = ПолучитьСправочникОбъектПоСсылке(Выборка.Ссылка);
            ДоговорОбъект.НО_GUID_БП16 = GUID;
            ДоговорОбъект.НО_Код_БП16 = мКод;
            ДоговорОбъект.Записать();
            Продолжить;
        КонецЕсли;
	КонецЦикла;
	Выполнено = Истина;
	V8 = 0;   СОМсоединение = 0;
КонецПроцедуры   // БП16_ЗаписатьДоговорыКонтрагента()

&НаСервере
Процедура БП16_ЗаполнитьКонтактнуюИнформацию(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения)
	V8 = Новый COMОбъект("V82.ComConnector");
	Попытка 
		СОМсоединение = V8.Connect(СтрокаСоединения);
	Исключение
		Сообщить("База данных БП не открыта!!!  Невозможно передать Контрагента из УТ 11 - Процедура БП16_ЗаполнитьКонтактнуюИнформацию() - вызывайте программиста ...");
		Выполнено = Ложь;
		Возврат;
	КонецПопытки;
	Контрагент = Объект;
	Попытка 
    	КонтраКом = СОМсоединение.Справочники.Контрагенты.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",НовыйКонтрагентГУИД));
	Исключение
		Сообщить("Не могу найти Контрагента в БП по ГУИД = <" + НовыйКонтрагентГУИД + "> - Процедура БП16_ЗаполнитьКонтактнуюИнформацию() - вызывайте программиста ...");
		Выполнено = Ложь;
		Возврат;
	КонецПопытки;
	
	Для ы = 0 По Контрагент.КонтактнаяИнформация.Количество()-1 Цикл
		Если Строка(Контрагент.КонтактнаяИнформация[ы].Вид) = "Юридический адрес" Тогда
			ЮрАдр = Контрагент.КонтактнаяИнформация[ы].Представление;
		ИначеЕсли Строка(Контрагент.КонтактнаяИнформация[ы].Вид) = "Фактический адрес" Тогда
			ФкАдр = Контрагент.КонтактнаяИнформация[ы].Представление;
		ИначеЕсли Строка(Контрагент.КонтактнаяИнформация[ы].Вид) = "Телефон" Тогда
			Телфн = Контрагент.КонтактнаяИнформация[ы].Представление;
		ИначеЕсли Строка(Контрагент.КонтактнаяИнформация[ы].Вид) = "Email" Тогда
			Email = Контрагент.КонтактнаяИнформация[ы].Представление;
		КонецЕсли; 
	КонецЦикла; 
	
	АдрИнф = СОМсоединение.РегистрыСведений.КонтактнаяИнформация;
	НаборАдр = АдрИнф.СоздатьНаборЗаписей();
	
	НаборАдр.Отбор.Объект.Установить(КонтраКом);
	НаборАдр.Отбор.Вид.Установить(СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00010"));   //НайтиПоНаименованию("Юридический адрес"));
	НаборАдр.Отбор.Тип.Установить(СОМсоединение.Перечисления.ТипыКонтактнойИнформации.Адрес);
	НаборАдр.Прочитать();
	Если НаборАдр.Количество() = 0 Тогда
		Адр = НаборАдр.Добавить();
		Адр.Объект = КонтраКом;
		Адр.Тип = СОМсоединение.Перечисления.ТипыКонтактнойИнформации.Адрес;
		Адр.Вид = СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00010");
		Адр.Представление = ЮрАдр;
		НаборАдр.Записать();
	КонецЕсли;
		
	НаборАдр.Отбор.Объект.Установить(КонтраКом);
	НаборАдр.Отбор.Тип.Установить(СОМсоединение.Перечисления.ТипыКонтактнойИнформации.Адрес);
	НаборАдр.Отбор.Вид.Установить(СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00008"));   //НайтиПоНаименованию("Фактический адрес"));
	НаборАдр.Прочитать();
	Если НаборАдр.Количество() = 0 Тогда
		Адр = НаборАдр.Добавить();
		Адр.Объект = КонтраКом;
		Адр.Тип = СОМсоединение.Перечисления.ТипыКонтактнойИнформации.Адрес;
		Адр.Вид = СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00008");
		Адр.Представление = ФкАдр;
		НаборАдр.Записать();
	КонецЕсли;
		
	НаборАдр.Отбор.Объект.Установить(КонтраКом);
	НаборАдр.Отбор.Тип.Установить(СОМсоединение.Перечисления.ТипыКонтактнойИнформации.Телефон);
	НаборАдр.Отбор.Вид.Установить(СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00005"));   //НайтиПоНаименованию("Телефон"));
	НаборАдр.Прочитать();
	Если НаборАдр.Количество() = 0 Тогда
		Адр = НаборАдр.Добавить();
		Адр.Объект = КонтраКом;
		Адр.Тип = СОМсоединение.Перечисления.ТипыКонтактнойИнформации.Телефон;
		Адр.Вид = СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00005");
		Адр.Представление = Телфн;
		НаборАдр.Записать();
	КонецЕсли;
		
	НаборАдр.Отбор.Объект.Установить(КонтраКом);
	НаборАдр.Отбор.Тип.Установить(СОМсоединение.Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
	НаборАдр.Отбор.Вид.Установить(СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Адрес электронной почты контрагента для обмена электронными документами"));
	НаборАдр.Прочитать();
	Если НаборАдр.Количество() = 0 Тогда
		Адр = НаборАдр.Добавить();
		Адр.Объект = КонтраКом;
		Адр.Тип = СОМсоединение.Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты;
		Адр.Вид = СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Адрес электронной почты контрагента для обмена электронными документами");
		Адр.Представление = Email;
		НаборАдр.Записать();
	КонецЕсли;
	Выполнено = Истина;
	V8 = 0; СОМсоединение = 0;
КонецПроцедуры   // БП16_ЗаполнитьКонтактнуюИнформацию()

&НаСервере
Процедура БП16_ЗаписатьРеквизитыКонтрагента(ОСсылка, GUID_БП16, Код_БП16)
    КонтраОбъект = Объект.Ссылка.ПолучитьОбъект();
    КонтраОбъект.НО_GUID_УТ16 = GUID_БП16;
    КонтраОбъект.НО_Код_УТ16  = Код_БП16;
    КонтраОбъект.Записать();
КонецПроцедуры   // БП16_ЗаписатьРеквизитыКонтрагента()

&НаСервере
Процедура БП16_ПерезаполнитьОсновныеРеквизитыКонтрагента(НовыйКонтрагентГУИД, СтрокаСоединения)
    мКод = "";
	V8 = Новый COMОбъект("V82.ComConnector");
	Попытка 
		СОМсоединение = V8.Connect(СтрокаСоединения);
	Исключение
		Сообщить("База данных БП не открыта!!!  Невозможно перезаполнить реквизиты Контрагента - Процедура БП16_ПерезаполнитьОсновныеРеквизитыКонтрагента() - вызывайте программиста ...");
		Возврат;
    КонецПопытки;
    Контрагент = Объект;
    
    Попытка 
        КонтраКом = СОМсоединение.Справочники.Контрагенты.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",НовыйКонтрагентГУИД));
    Исключение
        Сообщить("Не могу найти Контрагента в БП по ГУИД = <" + НовыйКонтрагентГУИД + "> - Процедура БП16_ПерезаполнитьОсновныеРеквизитыКонтрагента() - вызывайте программиста ...");
        Выполнено = Ложь;
        Возврат;
    КонецПопытки;
	мКод = Строка(КонтраКом.Код);
    
    ноКонтр = КонтраКом.ПолучитьОбъект();
    Если ЗначениеЗаполнено(Объект.НО_Код_БП16) Тогда
        ноКонтр.Код = Объект.НО_Код_БП16;
    КонецЕсли;
    ноКонтр.Наименование = Контрагент.Наименование;
    ноКонтр.НаименованиеПолное = Контрагент.НаименованиеПолное;
    ноКонтр.ИНН = Контрагент.ИНН;
    ноКонтр.КПП = Контрагент.КПП;
    ноКонтр.КодПоОКПО = Контрагент.КодПоОКПО;
    ноКонтр.Комментарий = ?(НЕ ЗначениеЗаполнено(ноКонтр.Комментарий), "передан из БП   [" + ТекущаяДата() + "]", ноКонтр.Комментарий);
    Если Контрагент.ЮрФизЛицо = ПредопределенноеЗначение("Перечисление.ЮрФизЛицо.ЮрЛицо") Тогда
        ноКонтр.ЮрФизЛицо = СОМсоединение.Перечисления.ЮрФизЛицо.ЮрЛицо;
    Иначе
        ноКонтр.ЮрФизЛицо = СОМсоединение.Перечисления.ЮрФизЛицо.ФизЛицо;
    КонецЕсли;
    ноКонтр.ГоловнойКонтрагент = ноКонтр.Ссылка;
    ноКонтр.Записать();
    
    КонтраКом = ноКонтр.Ссылка;
    GUID_БП16 = КонтраКом.УникальныйИдентификатор();
    ГУИД = СОМсоединение.String(КонтраКом.УникальныйИдентификатор());
    GUID = Строка(ГУИД);
    Попытка 
        КонтраКом = СОМсоединение.Справочники.Контрагенты.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",GUID));
    Исключение
        Сообщить("Не могу найти Контрагента в БП по ГУИД = <" + GUID + "> - Процедура БП16_ПерезаполнитьОсновныеРеквизитыКонтрагента() - вызывайте программиста ...");
        Выполнено = Ложь;
        Возврат;
    КонецПопытки;
    мКод = Строка(КонтраКом.Код);
    КонтраОбъект = Контрагент.Ссылка.ПолучитьОбъект();
    КонтраОбъект.НО_GUID_БП16 = GUID;
    КонтраОбъект.НО_Код_БП16  = мКод;
    КонтраОбъект.Записать();
    V8 = 0;   СОМсоединение = 0;
КонецПроцедуры   // БП16_ПерезаполнитьОсновныеРеквизитыКонтрагента()

&НаКлиенте
Процедура БП16_Выгрузить(СтрокаСоединения)
	//+++ YuriKo bgn [2012.05.05] начало 4
	// процедура ищет Контрагента в БП по ГУИД, или ИНН, или Наименованию
	// - если не нашла - создаёт ноаого, со всеми реквизитами и сопутствующими (контакты, договоры, счета ... )
	НовыйКонтрагентГУИД = "";
	Контрагент = Объект;
	КонтрагентНайден = Ложь;
	мКод = "";
	
	GUID_БП16 = Объект.НО_GUID_БП16;
    Если НЕ ПустаяСтрока(GUID_БП16) Тогда
    	КонтрагентНайден = БП16_НайтиКонтрагентаПоГУИД(GUID_БП16, мКод, СтрокаСоединения);
        Если мКод = "База данных не открыта" Тогда
            // неправильные данные для соединения, или проблемы с открытием базы
            Возврат;
        КонецЕсли;
        Если ЗначениеЗаполнено(GUID_БП16) И НЕ КонтрагентНайден Тогда
            БП16_ЗаписатьРеквизитыКонтрагента(Объект.Ссылка, "", "");
        	GUID_БП16 = "";
        КонецЕсли;
    	Если КонтрагентНайден Тогда
            БП16_ЗаписатьРеквизитыКонтрагента(Объект.Ссылка, GUID_БП16, мКод);
            Ответ = Вопрос("Контрагент с таким ГУИД,  и с Кодом = <" + мКод + ">  -  найден в БП:" + Символы.ПС +
                           "перезаписать  <<Да>>  или ничего не делать  <<Нет>> ?", РежимДиалогаВопрос.ДаНет);
			Если Ответ = КодВозвратаДиалога.Да Тогда
                // перезаписать существующего
                НовыйКонтрагентГУИД = GUID_БП16;
            Иначе
				Возврат;
			КонецЕсли;
    	КонецЕсли;
    КонецЕсли;
	
	// поиск по ИНН
    Если НЕ ЗначениеЗаполнено(НовыйКонтрагентГУИД) И ЗначениеЗаполнено(Контрагент.ИНН) Тогда
        мГУИД = "";
		КонтрагентНайден = БП16_НайтиКонтрагентаПоИНН(Контрагент, мКод, мГУИД, СтрокаСоединения);
        Если КонтрагентНайден Тогда
            Ответ = Вопрос("Контрагент с таким ИНН,  и с Кодом = <" + мКод + ">  -  найден в БП:" + Символы.ПС +
                           "Создать нового (да), перезаписать (нет) или ничего не делать (отмена) ?", РежимДиалогаВопрос.ДаНетОтмена);
			Если Ответ = КодВозвратаДиалога.Отмена Тогда
                // ничего не делать
				Возврат;
			ИначеЕсли Ответ = КодВозвратаДиалога.Да Тогда
                // создать нового
                НовыйКонтрагентГУИД = БП16_СоздатьНовогоКонтрагента(мКод, СтрокаСоединения);
				Если ПустаяСтрока(НовыйКонтрагентГУИД) Тогда
					Предупреждение("Контрагент в БП не создан  :(");
				КонецЕсли; 
            ИначеЕсли Ответ = КодВозвратаДиалога.Нет Тогда
                // перезаписать существующего
                НовыйКонтрагентГУИД = мГУИД;
			Иначе
			КонецЕсли;
		Иначе	
		КонецЕсли;
	КонецЕсли;
	
	// поиск по Наименованию
	Если НЕ ЗначениеЗаполнено(НовыйКонтрагентГУИД) Тогда
        Если НЕ (мКод = "База данных не открыта" ИЛИ мКод = "         ") Тогда
    		КонтрагентНайден = БП16_НайтиКонтрагентаПоНаименованию(Контрагент, мКод, мГУИД, СтрокаСоединения);
            Если КонтрагентНайден Тогда
                Ответ = Вопрос("Контрагент с таким Наименованием,  и с Кодом = <" + мКод + ">  -  найден в БП:" + Символы.ПС +
                        "Создать нового <<Да>>, перезаписать существующего <<Нет>>, или ничего не делать <<Отмена>> ?",
        			    РежимДиалогаВопрос.ДаНетОтмена);
                Если Ответ = КодВозвратаДиалога.Да Тогда
                    // создать нового
        			НовыйКонтрагентГУИД = БП16_СоздатьНовогоКонтрагента(мКод, СтрокаСоединения);
        			Если ПустаяСтрока(НовыйКонтрагентГУИД) Тогда
        				Предупреждение("Контрагент в БП не создан  :(");
        			КонецЕсли; 
                ИначеЕсли Ответ = КодВозвратаДиалога.Нет Тогда
                    // перезаписать существующего
                    НовыйКонтрагентГУИД = мГУИД;
                Иначе
                    // ничего не делать
                    Возврат;
                КонецЕсли;
            КонецЕсли; 
        КонецЕсли;
	КонецЕсли;
	
	// если не найден по ГУИД или ИНН или Наименованию - создаём нового
    Если НЕ ЗначениеЗаполнено(НовыйКонтрагентГУИД) Тогда
        Если НЕ ЗначениеЗаполнено(мКод) Тогда
            Если ЗначениеЗаполнено(Объект.НО_Код_УТ10) Тогда
                мКод = Объект.НО_Код_УТ10;
            КонецЕсли;
        КонецЕсли;
		НовыйКонтрагентГУИД = БП16_СоздатьНовогоКонтрагента(мКод, СтрокаСоединения);
		Если ПустаяСтрока(НовыйКонтрагентГУИД) Тогда
			Предупреждение("Контрагент в БП не создан  :(");
			Возврат;
		Иначе
			Сообщить("Создан контрагент в БП с кодом <" + мКод + "> и ГУИД = <" + НовыйКонтрагентГУИД + ">");
		КонецЕсли;
    Иначе
    	// Контрагент найден в УТ-10, перезаполним основные рекквизиты
        БП16_ПерезаполнитьОсновныеРеквизитыКонтрагента(НовыйКонтрагентГУИД, СтрокаСоединения);
    КонецЕсли;
	
	
	// адреса и телефоны Контрагента
	Выполнено = Ложь;
	БП16_ЗаполнитьКонтактнуюИнформацию(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения);
    Если НЕ Выполнено Тогда
        Сообщить("Не удалось записать адреса и телефоны Контрагента в БП... ");
	КонецЕсли;
	
	// контактные лица Контрагента
	Выполнено = Ложь;
	БП16_ЗаписатьКонтактыКонтрагента(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения);
	Если НЕ Выполнено Тогда
        Сообщить("Не удалось записать контактные лица Контрагента в БП... ");
	КонецЕсли;
	
	// договоры Контрагента
	Выполнено = Ложь;
	БП16_ЗаписатьДоговорыКонтрагента(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения);
	Если НЕ Выполнено Тогда
        Сообщить("Не удалось записать договоры Контрагента в БП... ");
	КонецЕсли;

	// Банковские счета Контрагента
	Выполнено = Ложь;
    БП16_ПолучитьБанкСчетаКонтрагента(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения);
	Если НЕ Выполнено Тогда
        Сообщить("Не удалось записать Банковские счета Контрагента в БП... ");
	КонецЕсли;
	//--- YuriKo end [2012.05.05] конец  4
КонецПроцедуры   // БП16_Выгрузить()

/////////////////////////////// Торговля

&НаСервере
Функция УТ10_ПолучитьИмяСервера()
    //+++ YuriKo bgn [2012.12.04] начало 14
    ИмяСервера = Константы.НО_УТ10_ИмяСервера.Получить();
    Возврат ИмяСервера;
    //--- YuriKo end [2012.12.04] конец  14
КонецФункции   // ПолучитьИмяСервера()
 
&НаСервере
Функция УТ10_ПолучитьИмяБазы()
    //+++ YuriKo bgn [2012.12.04] начало 15
    ИмяБазы = Константы.НО_УТ10_ИмяБазы.Получить();
    Возврат ИмяБазы;
    //--- YuriKo end [2012.12.04] конец  15
КонецФункции   // ПолучитьИмяБазы()

&НаСервере
Функция УТ10_ПолучитьПользователя()
    //+++ YuriKo bgn [2012.12.04] начало 16
    Пользователь = Константы.НО_УТ10_Пользователь.Получить();
    Возврат Пользователь;
    //--- YuriKo end [2012.12.04] конец  16
КонецФункции   // ПолучитьПользователя()

&НаСервере
Функция УТ10_ПолучитьПароль()
    //+++ YuriKo bgn [2012.12.04] начало 17
    Пароль = Константы.НО_УТ10_Пароль.Получить();
    Возврат Пароль;
    //--- YuriKo end [2012.12.04] конец  17
КонецФункции   // ПолучитьПароль()

&НаСервере
Функция УТ10_СоздатьНовогоКонтрагента(мКод, СтрокаСоединения)
	V8 = Новый COMОбъект("V82.ComConnector");
	Попытка 
		СОМсоединение = V8.Connect(СтрокаСоединения);
	Исключение
		Сообщить("База данных УТ-10 не открыта!!!  Невозможно передать Контрагента из УТ 11 - Функция УТ10_СоздатьНовогоКонтрагента() - вызывайте программиста ...");
		Выполнено = Ложь;
		Возврат "";
	КонецПопытки;
	Контрагент = Объект;
    
    Попытка
		ноКонтр = СОМсоединение.Справочники.Контрагенты.СоздатьЭлемент();
        Если ЗначениеЗаполнено(мКод) Тогда
            ноКонтр.Код = Объект.НО_Код_УТ10;
        КонецЕсли;
		ноКонтр.Наименование = Контрагент.Наименование;
		ноКонтр.НаименованиеПолное = Контрагент.НаименованиеПолное;
		ноКонтр.ИНН = Контрагент.ИНН;
		ноКонтр.КПП = Контрагент.КПП;
		ноКонтр.КодПоОКПО = Контрагент.КодПоОКПО;
        Если Контрагент.Партнер.Поставщик Тогда
		    ноКонтр.Поставщик = Истина;
        КонецЕсли; 
        Если Контрагент.Партнер.Клиент Тогда
		    ноКонтр.Покупатель = Истина;
        КонецЕсли; 
        ноКонтр.Комментарий = ?(ПустаяСтрока(Контрагент.ДополнительнаяИнформация), "передан из УТ-11   [" + ТекущаяДата() + "]",
                              Контрагент.ДополнительнаяИнформация + "     передан из УТ-11   [" + ТекущаяДата() + "]");
		Если Контрагент.ЮрФизЛицо = ПредопределенноеЗначение("Перечисление.ЮрФизЛицо.ЮрЛицо") Тогда
			ноКонтр.ЮрФизЛицо = СОМсоединение.Перечисления.ЮрФизЛицо.ЮрЛицо;
		Иначе
			ноКонтр.ЮрФизЛицо = СОМсоединение.Перечисления.ЮрФизЛицо.ФизЛицо;
		КонецЕсли;
		ноКонтр.Записать();
        
        КонтраКом = ноКонтр.Ссылка;
		GUID_УТ10 = КонтраКом.УникальныйИдентификатор();
		ГУИД = СОМсоединение.String(КонтраКом.УникальныйИдентификатор());
		GUID = Строка(ГУИД);
    	Попытка 
        	КонтраКом = СОМсоединение.Справочники.Контрагенты.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",GUID));
    	Исключение
    		Сообщить("Не могу найти Контрагента в УТ 10 по ГУИД = <" + GUID + "> - Функция УТ10_СоздатьНовогоКонтрагента() - вызывайте программиста ...");
    		Выполнено = Ложь;
    		Возврат Ложь;
    	КонецПопытки;
		мКод = Строка(КонтраКом.Код);
        КонтраОбъект = Контрагент.Ссылка.ПолучитьОбъект();
        КонтраОбъект.НО_GUID_УТ10 = GUID;   // полученный GUID как строку сохраняем в УТ-11
        КонтраОбъект.НО_Код_УТ10 = мКод;    // полученный из УТ-10 код сохраняем в УТ-11
        КонтраОбъект.Записать();
		V8 = 0;   СОМсоединение = 0;
		Возврат GUID;
	Исключение
		Сообщить("Не удалось записать контрагента " + Контрагент.НаименованиеПолное + Символы.ПС + ОписаниеОшибки());
		Сообщить("Контрагент не был скопирован. Обратитесь к программисту...");
		КонтраКом = Неопределено;
		V8 = 0;   СОМсоединение = 0;
		Возврат "";
	КонецПопытки;
КонецФункции   // УТ10_СоздатьНовогоКонтрагента()

&НаСервере
Функция УТ10_НайтиКонтрагентаПоГУИД(GUID_УТ10, мКод, СтрокаСоединения)
    //+++ YuriKo bgn [2012.12.04] начало 13
    мКод = "";
	V8 = Новый COMОбъект("V82.ComConnector");
	Попытка 
		СОМсоединение = V8.Connect(СтрокаСоединения);
	Исключение
		Сообщить("База данных УТ-10 не открыта!!!  Невозможно передать Контрагента из УТ 11 - Функция УТ10_НайтиКонтрагентаПоГУИД() - вызывайте программиста ...");
        мКод = "База данных не открыта";
		Возврат "";
	КонецПопытки;
	Попытка 
    	КонтраКом = СОМсоединение.Справочники.Контрагенты.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",GUID_УТ10));
	Исключение
		Сообщить("Не могу найти Контрагента в УТ 10 по ГУИД = <" + GUID_УТ10 + "> - Функция УТ10_НайтиКонтрагентаПоГУИД() - вызывайте программиста ...");
		Выполнено = Ложь;
   		Возврат Ложь;
	КонецПопытки;
	мКод = Строка(КонтраКом.Код);
	V8 = 0;   СОМсоединение = 0;
	Если ЗначениеЗаполнено(мКод) Тогда Возврат Истина Иначе Возврат Ложь КонецЕсли;
    //--- YuriKo end [2012.12.04] конец  13
КонецФункции   // УТ10_НайтиКонтрагентаПоГУИД(Цель)

&НаСервере
Функция УТ10_НайтиКонтрагентаПоИНН(Контрагент, мКод, мГУИД, СтрокаСоединения)
    //+++ YuriKo bgn [2012.12.04] начало 19
	V8 = Новый COMОбъект("V82.ComConnector");
	Попытка 
		СОМсоединение = V8.Connect(СтрокаСоединения);
	Исключение
		Сообщить("База данных УТ-10 не открыта!!!  Невозможно передать Контрагента из УТ 11 - Функция УТ10_НайтиКонтрагентаПоИНН() - вызывайте программиста ...");
		Выполнено = Ложь;
		Возврат "";
	КонецПопытки;
	Попытка 
    	КонтраКом = СОМсоединение.Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", Контрагент.ИНН);
	Исключение
		Сообщить("Не могу найти Контрагента в УТ 10 по ИНН = <" + Контрагент.ИНН + "> - Функция УТ10_НайтиКонтрагентаПоГУИД() - вызывайте программиста ...");
		Выполнено = Ложь;
   		Возврат Ложь;
	КонецПопытки;
	GUID_УТ10 = КонтраКом.УникальныйИдентификатор();
	ГУИД = СОМсоединение.String(КонтраКом.УникальныйИдентификатор());
    мГУИД = Строка(ГУИД);
	мКод = Строка(КонтраКом.Код);
	V8 = 0;   СОМсоединение = 0;
	Если ЗначениеЗаполнено(мКод) Тогда Возврат Истина Иначе Возврат Ложь КонецЕсли;
    //--- YuriKo end [2012.12.04] конец  19
КонецФункции   // УТ10_НайтиКонтрагентаПоИНН(Цель)

&НаСервере
Функция УТ10_НайтиКонтрагентаПоНаименованию(Контрагент, мКод, мГУИД, СтрокаСоединения)
    //+++ YuriKo bgn [2012.12.04] начало 12
	V8 = Новый COMОбъект("V82.ComConnector");
	Попытка 
		СОМсоединение = V8.Connect(СтрокаСоединения);
	Исключение
		Сообщить("База данных УТ-10 не открыта!!!  Невозможно передать Контрагента из УТ 11 - Функция УТ10_НайтиКонтрагентаПоНаименованию() - вызывайте программиста ...");
		Выполнено = Ложь;
		Возврат "";
	КонецПопытки;
	Попытка 
    	КонтраКом = СОМсоединение.Справочники.Контрагенты.НайтиПоНаименованию(Контрагент.Наименование);
	Исключение
		Сообщить("Не могу найти Контрагента в УТ 10 по Наименованию = <" + Контрагент.Наименование + "> - Функция УТ10_НайтиКонтрагентаПоНаименованию() - вызывайте программиста ...");
		Выполнено = Ложь;
   		Возврат Ложь;
	КонецПопытки;
	GUID_УТ10 = КонтраКом.УникальныйИдентификатор();
	ГУИД = СОМсоединение.String(КонтраКом.УникальныйИдентификатор());
    мГУИД = Строка(ГУИД);
	мКод = Строка(КонтраКом.Код);
    
	V8 = 0;   СОМсоединение = 0;
	Если ЗначениеЗаполнено(мКод) Тогда Возврат Истина Иначе Возврат Ложь КонецЕсли;
    //--- YuriKo end [2012.12.04] конец  12
КонецФункции   // УТ10_НайтиКонтрагентаПоНаименованию()

&НаСервере
Процедура УТ10_ЗаписатьКонтактыКонтрагента(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения)
	Выполнено = Истина;   // заготовка
КонецПроцедуры   // УТ10_ЗаписатьКонтактыКонтрагента()

&НаСервере
Процедура УТ10_ПолучитьБанкСчетаКонтрагента(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения)
	//+++ YuriKo bgn [2012.12.04] начало 6
    Выполнено = Ложь;
	V8 = Новый COMОбъект("V82.ComConnector");
	Попытка 
		СОМсоединение = V8.Connect(СтрокаСоединения);
	Исключение
		Сообщить("База данных УТ-10 не открыта!!!  Невозможно передать Контрагента из УТ 11 - Процедура УТ10_ПолучитьБанкСчетаКонтрагента()- вызывайте программиста ...");
		Возврат;
	КонецПопытки;
    Попытка 
    	КонтрНовый = СОМсоединение.Справочники.Контрагенты.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",НовыйКонтрагентГУИД));
    Исключение
        Сообщить("Не могу найти Контрагента в УТ 10 по ГУИД = <" + НовыйКонтрагентГУИД + "> - Процедура УТ10_ПолучитьБанкСчетаКонтрагента() - вызывайте программиста ...");
        Выполнено = Ложь;
        Возврат;
    КонецПопытки;
	Контрагент = Объект;
    
    ВыборкаБухСчётовКонтры = Справочники.БанковскиеСчетаКонтрагентов.Выбрать( , Контрагент.Ссылка, , );
    Пока ВыборкаБухСчётовКонтры.Следующий() Цикл
        Если ВыборкаБухСчётовКонтры.ЭтоГруппа ИЛИ ВыборкаБухСчётовКонтры.ПометкаУдаления Тогда
            Продолжить;
        КонецЕсли;
        Счёт = ВыборкаБухСчётовКонтры;
        Счёт_Наимен = ВыборкаБухСчётовКонтры.Наименование;
        Счёт_Номер  = ВыборкаБухСчётовКонтры.НомерСчета;
        Счёт_Банк   = ВыборкаБухСчётовКонтры.Банк;
        Счёт_РсБанк = ВыборкаБухСчётовКонтры.БанкДляРасчетов;
        Счёт_Валюта = ВыборкаБухСчётовКонтры.ВалютаДенежныхСредств;
        Счёт_Контра = ВыборкаБухСчётовКонтры.Владелец;
        Счёт_ТеКорр = ВыборкаБухСчётовКонтры.ТекстКорреспондента;
        Счёт_ТеНазн = ВыборкаБухСчётовКонтры.ТекстНазначения;
        Счёт_изУт10 = СОМсоединение.Справочники.БанковскиеСчета.НайтиПоНаименованию(Счёт_Наимен, , , КонтрНовый);
        мСчёт       = Строка(Счёт_изУт10.НомерСчета);
        Если Счёт_Номер = мСчёт Тогда
        	Выполнено = Истина;
            Продолжить;
        Иначе
            НовыйСчёт = СОМсоединение.Справочники.БанковскиеСчета.СоздатьЭлемент();
            НовыйСчёт.Владелец = КонтрНовый;
            НовыйСчёт.НомерСчета = Счёт_Номер;
            НовыйСчёт.Наименование = Счёт_Наимен;
            НовыйСчёт.ВидСчета = "Расчетный";
            Если Счёт_Валюта.Код = "643" Тогда        // Российский рубль
    			НовыйСчёт.ВалютаДенежныхСредств = СОМсоединение.Справочники.Валюты.НайтиПоКоду("810");
    		ИначеЕсли Счёт_Валюта.Код = "978" Тогда   // Евро
    			НовыйСчёт.ВалютаДенежныхСредств = СОМсоединение.Справочники.Валюты.НайтиПоКоду("978");
    		ИначеЕсли Счёт_Валюта.Код = "840" Тогда   // Доллар США
    			НовыйСчёт.ВалютаДенежныхСредств = СОМсоединение.Справочники.Валюты.НайтиПоКоду("840");
    		Иначе
    			НовыйСчёт.ВалютаДенежныхСредств = СОМсоединение.Справочники.Валюты.НайтиПоКоду("810");
    		КонецЕсли;
            мБанк = СОМсоединение.Справочники.Банки.НайтиПоКоду(Счёт_Банк.Код);
            Если ЗначениеЗаполнено(мБанк.Code) Тогда
                НовыйСчёт.Банк = мБанк;
            Иначе
                Сообщить("В УТ-10 отсутствует банк [" + Счёт_Банк.Наименование + "] с кодом <" + Счёт_Банк.Код + ">, счёт [" +
                          Счёт.Наименование + "] записан не будет");
                Продолжить;
            КонецЕсли; 
            Попытка
                НовыйСчёт.Записать();
            	Выполнено = Истина;
            Исключение
            	Сообщить("В УТ-10 не удалось записать банковский счёт <" + Счёт_Номер + ">");
            	Выполнено = Ложь;
            КонецПопытки;
        КонецЕсли;
    КонецЦикла;
	V8 = 0;   СОМсоединение = 0;
	//--- YuriKo end [2012.12.04] конец  6
КонецПроцедуры   // УТ10_ПолучитьБанкСчетаКонтрагента()

&НаСервере
Процедура УТ10_ЗаписатьДоговорыКонтрагента(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения)
	//+++ YuriKo bgn [2012.06.25] начало 7
	V8 = Новый COMОбъект("V82.ComConnector");
	Попытка 
		СОМсоединение = V8.Connect(СтрокаСоединения);
	Исключение
		Сообщить("База данных УТ-10 не открыта!!!  Невозможно передать Контрагента из УТ 11 - Процедура УТ10_ЗаписатьДоговорыКонтрагента() - вызывайте программиста ...");
		Выполнено = Ложь;
		Возврат;
	КонецПопытки;
    Попытка 
    	КонтрНовый = СОМсоединение.Справочники.Контрагенты.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",НовыйКонтрагентГУИД));
    Исключение
        Сообщить("Не могу найти Контрагента в УТ 10 по ГУИД = <" + НовыйКонтрагентГУИД + "> - Процедура УТ10_ЗаписатьДоговорыКонтрагента() - вызывайте программиста ...");
        Выполнено = Ложь;
        Возврат;
    КонецПопытки;
	Контрагент = Объект;
	
	Отбор = Новый Структура("Контрагент");
	Контр = Контрагент.Ссылка;
	Отбор.Контрагент = Контр;
	Выборка = Справочники.ДоговорыКонтрагентов.Выбрать( , , Отбор, );
	Пока Выборка.Следующий() Цикл
		Если (НЕ Выборка.Статус = Перечисления.СтатусыДоговоровКонтрагентов.Действует) ИЛИ (Выборка.ПометкаУдаления = Истина) ИЛИ Выборка.Ссылка.ЭтоГруппа Тогда
			Продолжить;
		КонецЕсли;
        
        // искать договор по ГУИД
        GUID = Выборка.НО_GUID_УТ10;
        Если ЗначениеЗаполнено(GUID) Тогда
            ДогКом = СОМсоединение.Справочники.ДоговорыКонтрагентов.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",GUID));
    		мКод = Строка(ДогКом.Код);
        Иначе    
    		мКод = "";
        КонецЕсли;
        Если ЗначениеЗаполнено(мКод) Тогда
            ДоговорОбъект = ПолучитьСправочникОбъектПоСсылке(Выборка.Ссылка);
            ДоговорОбъект.НО_Код_УТ10 = мКод;
            ДоговорОбъект.Записать();
            Продолжить;
        КонецЕсли;
        
        Если ЗначениеЗаполнено(Выборка.НО_Код_УТ10) Тогда
            мКод = Выборка.НО_Код_УТ10;
        Иначе
            Если ЗначениеЗаполнено(Выборка.НО_Код_БП16) Тогда
                мКод = Выборка.НО_Код_БП16;
            КонецЕсли;
        КонецЕсли;
        Дог = СОМсоединение.Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
        Если ЗначениеЗаполнено(мКод) Тогда
            Дог.Код = мКод;
        КонецЕсли;
		Дог.Наименование = Выборка.Наименование;
		Дог.Комментарий = Выборка.Комментарий;
		Дог.Организация = СОМсоединение.Справочники.Организации.НайтиПоРеквизиту("ИНН", Выборка.Организация.ИНН);
		Дог.Номер = Выборка.Номер;
		Дог.Дата = Выборка.Дата;
        
        //+++ YuriKo bgn [2012.12.04] начало 11
        Если Выборка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиенту Тогда
    		Дог.ВидДоговора = СОМсоединение.Перечисления.ВидыДоговоровКонтрагентов.СПокупателем;
        ИначеЕсли Выборка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию Тогда
    		Дог.ВидДоговора = СОМсоединение.Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером;
        ИначеЕсли Выборка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика Тогда
    		Дог.ВидДоговора = СОМсоединение.Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком;
        ИначеЕсли Выборка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаКомиссию Тогда
    		Дог.ВидДоговора = СОМсоединение.Перечисления.ВидыДоговоровКонтрагентов.СКомитентом;
        Иначе
    		Дог.ВидДоговора = СОМсоединение.Перечисления.ВидыДоговоровКонтрагентов.Прочее;
        КонецЕсли; 
        //--- YuriKo end [2012.12.04] конец  11
        
        Если Выборка.ВалютаВзаиморасчетов.Код = "643" Тогда        // Российский рубль
			Дог.ВалютаВзаиморасчетов = СОМсоединение.Справочники.Валюты.НайтиПоКоду("810");
		ИначеЕсли Выборка.ВалютаВзаиморасчетов.Код = "978" Тогда   // Евро
			Дог.ВалютаВзаиморасчетов = СОМсоединение.Справочники.Валюты.НайтиПоКоду("978");
		ИначеЕсли Выборка.ВалютаВзаиморасчетов.Код = "840" Тогда   // Доллар США
			Дог.ВалютаВзаиморасчетов = СОМсоединение.Справочники.Валюты.НайтиПоКоду("840");
		Иначе
			Дог.ВалютаВзаиморасчетов = СОМсоединение.Справочники.Валюты.НайтиПоКоду("810");
		КонецЕсли;
        
		Дог.СрокДействия = Выборка.ДатаОкончанияДействия;
		Дог.Владелец = КонтрНовый;
		Дог.ДопустимоеЧислоДнейЗадолженности = Выборка.НО_КоличествоДнейОтсрочкиПлатежа;
		Дог.ВедениеВзаиморасчетов = СОМсоединение.Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоДоговоруВЦелом;
		Дог.Записать();
        
        ДогКом = Дог.Ссылка;
		GUID_УТ10 = ДогКом.УникальныйИдентификатор();
		ГУИД = СОМсоединение.String(ДогКом.УникальныйИдентификатор());
		GUID = Строка(ГУИД);
		ДогКом = СОМсоединение.Справочники.ДоговорыКонтрагентов.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",GUID));
		мКод = Строка(ДогКом.Код);
        
        Если ЗначениеЗаполнено(мКод) Тогда     // в БП найден ново-созданный Договор по ГУИД
            ДоговорОбъект = ПолучитьСправочникОбъектПоСсылке(Выборка.Ссылка);
            ДоговорОбъект.НО_GUID_УТ10 = GUID;
            ДоговорОбъект.НО_Код_УТ10 = мКод;
            ДоговорОбъект.Записать();
            Продолжить;
        КонецЕсли;
	КонецЦикла;
	Выполнено = Истина;
	V8 = 0;   СОМсоединение = 0;
	//--- YuriKo end [2012.06.25] конец  7
КонецПроцедуры   // УТ10_ЗаписатьДоговорыКонтрагента()

&НаСервере
Процедура УТ10_ЗаполнитьКонтактнуюИнформацию(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения)
    //+++ YuriKo bgn [2012.12.01] начало 20
	V8 = Новый COMОбъект("V82.ComConnector");
	Попытка 
		СОМсоединение = V8.Connect(СтрокаСоединения);
	Исключение
		Сообщить("База данных УТ-10 не открыта!!!  Невозможно передать Контрагента из УТ 11 - Процедура УТ10_ЗаполнитьКонтактнуюИнформацию() - вызывайте программиста ...");
		Выполнено = Ложь;
		Возврат;
	КонецПопытки;
	Контрагент = Объект;
	Попытка 
    	КонтраКом = СОМсоединение.Справочники.Контрагенты.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",НовыйКонтрагентГУИД));
	Исключение
		Сообщить("Не могу найти Контрагента в УТ 10 по ГУИД = <" + НовыйКонтрагентГУИД + "> - Процедура УТ10_ЗаполнитьКонтактнуюИнформацию() - вызывайте программиста ...");
		Выполнено = Ложь;
		Возврат;
	КонецПопытки;
	
	Для ы = 0 По Контрагент.КонтактнаяИнформация.Количество()-1 Цикл
		Если Строка(Контрагент.КонтактнаяИнформация[ы].Вид) = "Юридический адрес" Тогда
			ЮрАдр = Контрагент.КонтактнаяИнформация[ы].Представление;
		ИначеЕсли Строка(Контрагент.КонтактнаяИнформация[ы].Вид) = "Фактический адрес" Тогда
			ФкАдр = Контрагент.КонтактнаяИнформация[ы].Представление;
		ИначеЕсли Строка(Контрагент.КонтактнаяИнформация[ы].Вид) = "Телефон" Тогда
			Телфн = Контрагент.КонтактнаяИнформация[ы].Представление;
		ИначеЕсли Строка(Контрагент.КонтактнаяИнформация[ы].Вид) = "Email" Тогда
			Email = Контрагент.КонтактнаяИнформация[ы].Представление;
		КонецЕсли; 
	КонецЦикла; 
	
	АдрИнф = СОМсоединение.РегистрыСведений.КонтактнаяИнформация;
	НаборАдр = АдрИнф.СоздатьНаборЗаписей();
	
	НаборАдр.Отбор.Объект.Установить(КонтраКом);
	НаборАдр.Отбор.Вид.Установить(СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Юридический адрес организации"));
	НаборАдр.Отбор.Тип.Установить(СОМсоединение.Перечисления.ТипыКонтактнойИнформации.Адрес);
	НаборАдр.Прочитать();
	Если НаборАдр.Количество() = 0 Тогда
		Адр = НаборАдр.Добавить();
		Адр.Объект = КонтраКом;
		Адр.Тип = СОМсоединение.Перечисления.ТипыКонтактнойИнформации.Адрес;
		Адр.Вид = СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Юридический адрес организации");
		Адр.Представление = ЮрАдр;
		НаборАдр.Записать();
	КонецЕсли;
		
	НаборАдр.Отбор.Объект.Установить(КонтраКом);
	НаборАдр.Отбор.Тип.Установить(СОМсоединение.Перечисления.ТипыКонтактнойИнформации.Адрес);
	НаборАдр.Отбор.Вид.Установить(СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Фактический адрес организации"));
	НаборАдр.Прочитать();
	Если НаборАдр.Количество() = 0 Тогда
		Адр = НаборАдр.Добавить();
		Адр.Объект = КонтраКом;
		Адр.Тип = СОМсоединение.Перечисления.ТипыКонтактнойИнформации.Адрес;
		Адр.Вид = СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Фактический адрес организации");
		Адр.Представление = ФкАдр;
		НаборАдр.Записать();
	КонецЕсли;
		
	НаборАдр.Отбор.Объект.Установить(КонтраКом);
	НаборАдр.Отбор.Тип.Установить(СОМсоединение.Перечисления.ТипыКонтактнойИнформации.Телефон);
	НаборАдр.Отбор.Вид.Установить(СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Телефон контрагента"));
	НаборАдр.Прочитать();
	Если НаборАдр.Количество() = 0 Тогда
		Адр = НаборАдр.Добавить();
		Адр.Объект = КонтраКом;
		Адр.Тип = СОМсоединение.Перечисления.ТипыКонтактнойИнформации.Телефон;
		Адр.Вид = СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Телефон контрагента");
		Адр.Представление = Телфн;
		НаборАдр.Записать();
	КонецЕсли;
		
	НаборАдр.Отбор.Объект.Установить(КонтраКом);
	НаборАдр.Отбор.Тип.Установить(СОМсоединение.Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
	НаборАдр.Отбор.Вид.Установить(СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Адрес электронной почты контрагента для обмена электронными документами"));
	НаборАдр.Прочитать();
	Если НаборАдр.Количество() = 0 Тогда
		Адр = НаборАдр.Добавить();
		Адр.Объект = КонтраКом;
		Адр.Тип = СОМсоединение.Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты;
		Адр.Вид = СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Адрес электронной почты контрагента для обмена электронными документами");
		Адр.Представление = Email;
		НаборАдр.Записать();
	КонецЕсли;
	Выполнено = Истина;
	V8 = 0; СОМсоединение = 0;
    //--- YuriKo end [2012.12.01] конец  20
КонецПроцедуры   // УТ10_ЗаполнитьКонтактнуюИнформацию()

&НаСервере
Процедура УТ10_ЗаписатьРеквизитыКонтрагента(ОСсылка, GUID_УТ10, Код_УТ10)
    КонтраОбъект = Объект.Ссылка.ПолучитьОбъект();
    КонтраОбъект.НО_GUID_УТ10 = GUID_УТ10;
    КонтраОбъект.НО_Код_УТ10  = Код_УТ10;
    КонтраОбъект.Записать();
КонецПроцедуры   // УТ10_ЗаписатьРеквизитыКонтрагента()

&НаСервере
Процедура УТ10_ПерезаполнитьОсновныеРеквизитыКонтрагента(НовыйКонтрагентГУИД, СтрокаСоединения)
    //+++ YuriKo bgn [2012.12.05] начало 10
    мКод = "";
	V8 = Новый COMОбъект("V82.ComConnector");
	Попытка 
		СОМсоединение = V8.Connect(СтрокаСоединения);
	Исключение
		Сообщить("База данных УТ-10 не открыта!!!  Невозможно перезаполнить реквизиты Контрагента - Процедура УТ10_ПерезаполнитьОсновныеРеквизитыКонтрагента() - вызывайте программиста ...");
		Возврат;
    КонецПопытки;
    Контрагент = Объект;
    
    Попытка 
        КонтраКом = СОМсоединение.Справочники.Контрагенты.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",НовыйКонтрагентГУИД));
    Исключение
        Сообщить("Не могу найти Контрагента в УТ 10 по ГУИД = <" + НовыйКонтрагентГУИД + "> - Процедура УТ10_ПерезаполнитьОсновныеРеквизитыКонтрагента() - вызывайте программиста ...");
        Выполнено = Ложь;
        Возврат;
    КонецПопытки;
	мКод = Строка(КонтраКом.Код);
    
    ноКонтр = КонтраКом.ПолучитьОбъект();
    Если ЗначениеЗаполнено(Объект.НО_Код_УТ10) Тогда
        ноКонтр.Код = Объект.НО_Код_УТ10;
    КонецЕсли;
    ноКонтр.Наименование = Контрагент.Наименование;
    ноКонтр.НаименованиеПолное = Контрагент.НаименованиеПолное;
    ноКонтр.ИНН = Контрагент.ИНН;
    ноКонтр.КПП = Контрагент.КПП;
    ноКонтр.КодПоОКПО = Контрагент.КодПоОКПО;
    Если Контрагент.Партнер.Поставщик Тогда
        ноКонтр.Поставщик = Истина;
    КонецЕсли; 
    Если Контрагент.Партнер.Клиент Тогда
        ноКонтр.Покупатель = Истина;
    КонецЕсли; 
    ноКонтр.Комментарий = ?(НЕ ЗначениеЗаполнено(ноКонтр.Комментарий), "передан из УТ-11   [" + ТекущаяДата() + "]", ноКонтр.Комментарий);
    Если Контрагент.ЮрФизЛицо = ПредопределенноеЗначение("Перечисление.ЮрФизЛицо.ЮрЛицо") Тогда
        ноКонтр.ЮрФизЛицо = СОМсоединение.Перечисления.ЮрФизЛицо.ЮрЛицо;
    Иначе
        ноКонтр.ЮрФизЛицо = СОМсоединение.Перечисления.ЮрФизЛицо.ФизЛицо;
    КонецЕсли;
    ноКонтр.Записать();
    
    КонтраКом = ноКонтр.Ссылка;
    GUID_УТ10 = КонтраКом.УникальныйИдентификатор();
    ГУИД = СОМсоединение.String(КонтраКом.УникальныйИдентификатор());
    GUID = Строка(ГУИД);
    Попытка 
        КонтраКом = СОМсоединение.Справочники.Контрагенты.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",GUID));
    Исключение
        Сообщить("Не могу найти Контрагента в УТ 10 по ГУИД = <" + GUID + "> - Процедура УТ10_ПерезаполнитьОсновныеРеквизитыКонтрагента() - вызывайте программиста ...");
        Выполнено = Ложь;
        Возврат;
    КонецПопытки;
    мКод = Строка(КонтраКом.Код);
    КонтраОбъект = Контрагент.Ссылка.ПолучитьОбъект();
    КонтраОбъект.НО_GUID_УТ10 = GUID;   // полученный GUID как строку сохраняем в УТ-11
    КонтраОбъект.НО_Код_УТ10 = мКод;    // полученный из УТ-10 код сохраняем в УТ-11
    КонтраОбъект.Записать();
    
    V8 = 0;   СОМсоединение = 0;
    //--- YuriKo end [2012.12.05] конец  10
КонецПроцедуры   // УТ10_ПерезаполнитьОсновныеРеквизитыКонтрагента()

&НаКлиенте
Процедура УТ10_Выгрузить(СтрокаСоединения)
    
    //+++ YuriKo bgn [2012.06.20] начало 1
	// процедура ищет Контрагента в УТ-10 по ГУИД, или ИНН, или Наименованию
	// - если не нашла - создаёт ноаого, со всеми реквизитами и сопутствующими (контакты, договоры, счета ... )
	НовыйКонтрагентГУИД = "";
	Контрагент = Объект;
	КонтрагентНайден = Ложь;
	мКод = "";
	
	GUID_УТ10 = Объект.НО_GUID_УТ10;
    Если НЕ ПустаяСтрока(GUID_УТ10) Тогда
    	КонтрагентНайден = УТ10_НайтиКонтрагентаПоГУИД(GUID_УТ10, мКод, СтрокаСоединения);
        Если мКод = "База данных не открыта" Тогда
            // неправильные данные для соединения, или проблемы с открытием базы
            Возврат;
        КонецЕсли;
        Если ЗначениеЗаполнено(GUID_УТ10) И НЕ КонтрагентНайден Тогда
            УТ10_ЗаписатьРеквизитыКонтрагента(Объект.Ссылка, "", "");
        	GUID_УТ10 = "";
        КонецЕсли;
    	Если КонтрагентНайден Тогда
            УТ10_ЗаписатьРеквизитыКонтрагента(Объект.Ссылка, GUID_УТ10, мКод);
            Ответ = Вопрос("Контрагент с таким ГУИД,  и с Кодом = <" + мКод + ">  -  найден в УТ-10:" + Символы.ПС +
                           "перезаписать  <<Да>>  или ничего не делать  <<Нет>> ?", РежимДиалогаВопрос.ДаНет);
			Если Ответ = КодВозвратаДиалога.Да Тогда
                // перезаписать существующего
                НовыйКонтрагентГУИД = GUID_УТ10;
            Иначе
				Возврат;
			КонецЕсли;
    	КонецЕсли;
    КонецЕсли;
	
	// поиск по ИНН
    Если НЕ ЗначениеЗаполнено(НовыйКонтрагентГУИД) И ЗначениеЗаполнено(Контрагент.ИНН) Тогда
        мГУИД = "";
		КонтрагентНайден = УТ10_НайтиКонтрагентаПоИНН(Контрагент, мКод, мГУИД, СтрокаСоединения);
        Если КонтрагентНайден Тогда
            Ответ = Вопрос("Контрагент с таким ИНН,  и с Кодом = <" + мКод + ">  -  найден в УТ-10:" + Символы.ПС +
                           "Создать нового (да), перезаписать (нет) или ничего не делать (отмена) ?", РежимДиалогаВопрос.ДаНетОтмена);
			Если Ответ = КодВозвратаДиалога.Отмена Тогда
                // ничего не делать
				Возврат;
			ИначеЕсли Ответ = КодВозвратаДиалога.Да Тогда
                // создать нового
                НовыйКонтрагентГУИД = УТ10_СоздатьНовогоКонтрагента(мКод, СтрокаСоединения);
				Если ПустаяСтрока(НовыйКонтрагентГУИД) Тогда
					Предупреждение("Контрагент в УТ-10 не создан  :(");
				КонецЕсли; 
            ИначеЕсли Ответ = КодВозвратаДиалога.Нет Тогда
                // перезаписать существующего
                НовыйКонтрагентГУИД = мГУИД;
			Иначе
			КонецЕсли;
		Иначе	
		КонецЕсли;
	КонецЕсли;
	
	// поиск по Наименованию
	Если НЕ ЗначениеЗаполнено(НовыйКонтрагентГУИД) Тогда
        Если НЕ (мКод = "База данных не открыта" ИЛИ мКод = "         ") Тогда
    		КонтрагентНайден = УТ10_НайтиКонтрагентаПоНаименованию(Контрагент, мКод, мГУИД, СтрокаСоединения);
            Если КонтрагентНайден Тогда
                Ответ = Вопрос("Контрагент с таким Наименованием,  и с Кодом = <" + мКод + ">  -  найден в УТ-10:" + Символы.ПС +
                        "Создать нового <<Да>>, перезаписать существующего <<Нет>>, или ничего не делать <<Отмена>> ?",
        			    РежимДиалогаВопрос.ДаНетОтмена);
                Если Ответ = КодВозвратаДиалога.Да Тогда
                    // создать нового
        			НовыйКонтрагентГУИД = УТ10_СоздатьНовогоКонтрагента(мКод, СтрокаСоединения);
        			Если ПустаяСтрока(НовыйКонтрагентГУИД) Тогда
        				Предупреждение("Контрагент в УТ-10 не создан  :(");
        			КонецЕсли; 
                ИначеЕсли Ответ = КодВозвратаДиалога.Нет Тогда
                    // перезаписать существующего
                    НовыйКонтрагентГУИД = мГУИД;
                Иначе
                    // ничего не делать
                    Возврат;
                КонецЕсли;
            КонецЕсли; 
        КонецЕсли;
	КонецЕсли;
	
	// если не найден по ГУИД или ИНН или Наименованию - создаём нового
	Если НЕ ЗначениеЗаполнено(НовыйКонтрагентГУИД) Тогда
		НовыйКонтрагентГУИД = УТ10_СоздатьНовогоКонтрагента(мКод, СтрокаСоединения);
		Если ПустаяСтрока(НовыйКонтрагентГУИД) Тогда
			Предупреждение("Контрагент в УТ-10 не создан  :(");
			Возврат;
		Иначе
			Сообщить("Создан контрагент в УТ-10 с кодом <" + мКод + "> и ГУИД = <" + НовыйКонтрагентГУИД + ">");
		КонецЕсли;
    Иначе
    	// Контрагент найден в УТ-10, перезаполним основные рекквизиты
        УТ10_ПерезаполнитьОсновныеРеквизитыКонтрагента(НовыйКонтрагентГУИД, СтрокаСоединения);
    КонецЕсли;
	
	
	// адреса и телефоны Контрагента
	Выполнено = Ложь;
	УТ10_ЗаполнитьКонтактнуюИнформацию(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения);
    Если НЕ Выполнено Тогда
        Сообщить("Не удалось записать адреса и телефоны Контрагента в УТ-10... ");
	КонецЕсли;
	
	// контактные лица Контрагента
	Выполнено = Ложь;
	УТ10_ЗаписатьКонтактыКонтрагента(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения);
	Если НЕ Выполнено Тогда
        Сообщить("Не удалось записать контактные лица Контрагента в УТ-10... ");
	КонецЕсли;
	
	// договоры Контрагента
	Выполнено = Ложь;
	УТ10_ЗаписатьДоговорыКонтрагента(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения);
	Если НЕ Выполнено Тогда
        Сообщить("Не удалось записать договоры Контрагента в УТ-10... ");
	КонецЕсли;

	//+++ YuriKo bgn [2012.12.04] начало 8
	// Банковские счета Контрагента
	Выполнено = Ложь;
    УТ10_ПолучитьБанкСчетаКонтрагента(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения);
	Если НЕ Выполнено Тогда
        Сообщить("Не удалось записать Банковские счета Контрагента в УТ-10... ");
	КонецЕсли;
	//--- YuriKo end [2012.12.04] конец  8
    
	//--- YuriKo end [2012.06.20] конец  1
КонецПроцедуры   // УТ10_Выгрузить()
Показать
eeeio; VooDOOPRo; mpak77; kevlanik; asdfr16; DAnry; jaroslav.h; Rokky78; vasiliy_b; Ktyfa; binex; Snezha; DiegoLidabo; Dvornik; Gonja; pizhenkov; +16 Ответить
91. director04 3657 18.02.13 21:27 Сейчас в теме
Спасибо, именно такого конструктива и жду... )))))
Лучше один конструктивный отзыв, чем сто никчемных комментария. Спасибо ....
92. Жолтокнижниг 258 21.02.13 23:45 Сейчас в теме
Есть предложение к автору, если он не хочет думать и сам выдавать конструктив, можно перепостить интересные моменты из ЖК, новичкам это понравиться, да и бывалым прогерам тоже, не все же читают книжки и умеют искать в интернетах. И будет радость, и куча плюсов.
93. Bukaska 140 22.02.13 00:08 Сейчас в теме
2. При запуске Com – соединения не создается отдельного процесса 1cv8. По отзывам пользователей партнерского форума 1С, завершение работы Ole происходит не всегда корректно. И в этом случае наблюдаются ощутимые проблемы с производительностью рабочей станции.


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

Вот если бы здесь не ComConnector, а ComApplication - то второй процесс бы был, во всяком случае мне говорил один из франей, что должен быть второй процесс, но если использовать именно ComConnector, то второго процесса не будет.
Хотя опять же напрашивается вопрос, а когда каким из COM-соединений лучше пользоваться?
121. AlexO 135 10.06.15 11:54 Сейчас в теме
(93) Bukaska,
Вот если бы здесь не ComConnector, а ComApplication - то второй процесс бы был
Товарищ - автор статьи, - вообще не понимает, где COM, а что такое - OLE. Но усиленно огрызается в комментариях. Видимо, считает, что это уравновешивает его незнание.
122. st4rk 12.06.15 12:52 Сейчас в теме
(121) AlexO,
Проще назвать вещи своими именами.
Механизм OLE он же Automation сервер:
V82 = Новый COMObject("V82c.Application");
в тонком клиенте,
V82 = Новый COMОбъект("V82.Application");
в толстом клиенте.
Механизм внешнего соединения:
V8 = Новый COMОбъект("V82.COMConnector");
.
(с) Радченко ТалмудПоПлатформе.Т2 ).
Отличия в функциональности там же понятно расписаны.
124. AlexO 135 22.10.15 14:44 Сейчас в теме
(122) st4rk,
Механизм OLE он же Automation сервер:

Механизм внешнего соединения:
А что, OLE - оно не внешнее подключение? Внутреннее? Радченко, может, и знает разницу между OLE и COM, но не говорит. А вы, соответственно, не знаете, и в книжках Радченко про это не прочитаете.
И талмуд - Радченко далеко не главный автор. Это если про талмуд, а не про 8.2-брошюры.
94. director04 3657 22.02.13 00:09 Сейчас в теме
Есть предложение к автору, если он не хочет думать и сам выдавать конструктив, можно перепостить интересные моменты из ЖК, новичкам это понравиться, да и бывалым прогерам тоже, не все же читают книжки и умеют искать в интернетах. И будет радость, и куча плюсов.


Спасибо за пожелание. ))) В принципе, благодарностей и так хватает (посмотрите на количество плюсов). А зануд и критиканов всегда было достаточно. Посвистели и сдулись.... Теперь читают только те, кому нужна суть, а не языком потрясти.... )))

За предложение все одно - спасибо!
Nefilimus; +1 Ответить
Оставьте свое сообщение