Обмен через COM не создаёт элемент
Доброго времени суток.
Есть задача передавать договоры из УХ в ERP. Делаю COM соединение, код такой:
Соединение проходит, ошибок никаких нет. Код отрабатывает, но договор в базе не появляется. Смотрю отладчиком, Организация и Контрагент находятся, с этим проблем нет. Если этот же код (без COM-соединения, понятно) запускать напрямую в базе ERP, всё работает, договор создаётся, ошибок нет. Что за нафиг? Может сталкивался кто, где могут быть подводные кадры?
Есть задача передавать договоры из УХ в ERP. Делаю COM соединение, код такой:
V83COMConnector= Новый COMОбъект("V83.COMConnector");
Попытка
База83 = V83COMConnector.Connect("Srvr=***;Ref=ERP_***;Usr=**;Pwd=***");
Исключение
База83 = Неопределено;
ТекстОшибки = ОписаниеОшибки();
Сообщить(ТекстОшибки);
КонецПопытки;
Дог = База83.Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
Дог.Наименование = Ссыль.НаименованиеВерсии;
Дог.Номер = ссыль.Номер;
Дог.ТипДоговора = База83.Перечисления.ТипыДоговоров.СПоставщиком;
Дог.Организация = База83.Справочники.Организации.НайтиПоРеквизиту("ИНН", ссыль.Организация.ИНН);
Дог.Контрагент = База83.Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", ссыль.Контрагент.ИНН );
Дог.Обменданными.Загрузка = Истина;
дог.Записать();
База83 = Неопределено;
ПоказатьСоединение проходит, ошибок никаких нет. Код отрабатывает, но договор в базе не появляется. Смотрю отладчиком, Организация и Контрагент находятся, с этим проблем нет. Если этот же код (без COM-соединения, понятно) запускать напрямую в базе ERP, всё работает, договор создаётся, ошибок нет. Что за нафиг? Может сталкивался кто, где могут быть подводные кадры?
По теме из базы знаний
- Используем механизмы обмена данными БСП для произвольного обмена
- Регби. Управление по методике Agile:Scrum с элементами Канбан
- Одна ККТ для розничного магазина и Интернет-сайта
- SynchroWB — интеграция 1С и Wildberries: автоматизация заказов и остатков по API с УТ, КА, ERP, УНФ, Розница 3
- Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
В другой базе у вас НЕТ (НЕТ!) этого объекта (Поставщика, Договора, Контрагента, Номенклатуры, etc).
Вообще. Ни одного. Объекта. Соответствующего. Базе-источнику. НИ ОДНОГО.
Все объекты базы-приемника - "чужие" по отношению к объектам базы-приемника (и наоборот). И сопоставлены напрямую по COM быть не могут.
ТипДоговора "СПоставщиком" в одной базе - это совершенно другой "объект" ТипДоговора "СПоставщиком" в другой базе. Они не могут быть сопоставлены.
Да и не настоящие объекты они вовсе в 1С, по большому счету, отсюда и проблемы эти.
Они все - с другими ID, т.е. это совершенно разные "объекты".
По COM ВСЕГДА получаете ТОЛЬКО ПРИМИТИВНЫЕ ДАННЫЕ (строка, наименование, номер, число, ИНН, код, etc).
И уже в базе-приемнике ищете "объект" по этим данным. Не нашли - выкачиваете данные по нему (примитивные! т.е. весь объект целиком - должен быть в виде условной "строки" получен в базе-приемнике) , создаете, только после этого - пользуете для последующих обменов.
Дог.ТипДоговора = База83.Перечисления.ТипыДоговоров.СПоставщиком;
вот такие "обмены" - источник всех ошибок.
В другой базе у вас НЕТ (НЕТ!) этого объекта (Поставщика, Договора, Контрагента, Номенклатуры, etc).
Вообще. Ни одного. Объекта. Соответствующего. Базе-источнику. НИ ОДНОГО.
Все объекты базы-приемника - "чужие" по отношению к объектам базы-приемника (и наоборот). И сопоставлены напрямую по COM быть не могут.
ТипДоговора "СПоставщиком" в одной базе - это совершенно другой "объект" ТипДоговора "СПоставщиком" в другой базе. Они не могут быть сопоставлены.
Да и не настоящие объекты они вовсе в 1С, по большому счету, отсюда и проблемы эти.
Они все - с другими ID, т.е. это совершенно разные "объекты".
По COM ВСЕГДА получаете ТОЛЬКО ПРИМИТИВНЫЕ ДАННЫЕ (строка, наименование, номер, число, ИНН, код, etc).
И уже в базе-приемнике ищете "объект" по этим данным. Не нашли - выкачиваете данные по нему (примитивные! т.е. весь объект целиком - должен быть в виде условной "строки" получен в базе-приемнике) , создаете, только после этого - пользуете для последующих обменов.
Ну и самый убойный совет- не делают по человечески такие действия (создание объектов) по СОМ соединению...
Нужно все делать с точностью наоборот - то есть запускать обработку в ERP и высасывать информацию из УХ по СОМ , а создавать уже в текущей базе. Так по любому и проще и красивее и работать легче
Нужно все делать с точностью наоборот - то есть запускать обработку в ERP и высасывать информацию из УХ по СОМ , а создавать уже в текущей базе. Так по любому и проще и красивее и работать легче
(8) ну принципиально это не запрещено....
Так все же как ищете то свои договоры созданные этим кодом?
Раз записались без ошибок - значит - существуют где-то
И еще раз акцентирую - уберите
Суть этой команды - ничего не проверять и не выполнять функции при записи....
Возможно как раз из-за этого ошибки не выдает , а они есть
Так все же как ищете то свои договоры созданные этим кодом?
Раз записались без ошибок - значит - существуют где-то
И еще раз акцентирую - уберите
Дог.Обменданными.Загрузка = Истина;
Суть этой команды - ничего не проверять и не выполнять функции при записи....
Возможно как раз из-за этого ошибки не выдает , а они есть
(9) Я изначально без этой команды пробовал, то же самое. Я как раз подумал, что есть какие-то проверки в коде, которые не дают записать договор, поэтому вотнул.
Проверяю очень просто - ставлю фильтр по контрагенту, который указан в договоре. Фильтр показывает ровно ноль договоров в ERP.
Проверяю очень просто - ставлю фильтр по контрагенту, который указан в договоре. Фильтр показывает ровно ноль договоров в ERP.
(10) Получите после записи ссылку на записанный договор и попробуйте его найти в самой программе.
Кроме того этот поиск контролируйте в отладке - если ссылка будет - значит вы ищете не так вручную
В отладке попробуйте открыть эту ссылку после записи договора
Ищите по наименованию да номеру
Кроме того этот поиск контролируйте в отладке - если ссылка будет - значит вы ищете не так вручную
В отладке попробуйте открыть эту ссылку после записи договора
Ищите по наименованию да номеру
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот