AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen Alle Foren als gelesen markieren

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 02.08.2002, 13:15   #1  
Andrew Besedin ist offline
Andrew Besedin
Участник
 
121 / 15 (1) ++
Registriert seit: 25.01.2002
Перенос данных из Аксапты в 1С
Добрый день!
При работе с COM-компонентой 1С столкнулись с неожиданной проблемой. Следущий код не работает - почему, неясно.

COM InventLocations;
s = "СоздатьОбъект(\"Справочник.Склады\")";
InventLocations = v77.EvalExpr(s); //v77 - объект 1С
InventLocations.FindByCode("La-la-la");//Строка с ошибкой

Ошибка при выполнении "Один или несколько аргументов имеют неправильный тип"
однако, если искать в другом справочнике - например, Конрагенты, то все проходит ОК.
Эквивалентный код на VBA(Excel) работает ОК.
Пробовали использовать COMDispFunction - та же ошибка .
На машине стоит 1С в.77 релиз 18 ред.912.
Аксапта 25 СП3

В чем предположительно может быть проблема и как ее решать?
Спасибо,
Андрей Беседин
Alt 02.08.2002, 13:32   #2  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
В 1С код справочника "склады" числовой, а у контрагентов - текстовый.
Excel работает с Variant.
На худой конец, попробуй и в аксапте использовать variant (хотя это тяжелое и грубое решение). Наверное стоит разобраться с типами.

ЗЫ На самом деле все коды в 1С - текстовые. Но в зависимости от галочки 1С их по разному интерпретирует. Особенно через КОМ
Alt 05.08.2002, 06:48   #3  
Andrew Besedin ist offline
Andrew Besedin
Участник
 
121 / 15 (1) ++
Registriert seit: 25.01.2002
Пробовал ставить тип int, long, decimal - та же ошибка:
Функция 'FindByCode возвратила код ошибки 80070057 (0xE_INVALIDARG), что означает: Один или более аргументов не
верен.

Пробовал также искать по названию склада - FIndByDescr() - ошибка не пропадает.

Андрей Беседин
Alt 05.08.2002, 11:53   #4  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Хм... тогда не знаю.
(А тряпочкой протирал? А по заднему колесу попинал?)

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

В синтакс-помошнике 1С у метода НайтиПоКоду указаны два параметра.
Но в том же синтакс-помошнике сказано, что второй является необязательным.
Может быть они в оле-интерфейсе забыли описать, что он необязателен?
Попробуй указать явно.
Zitat:
НайтиПоКоду(<?>,);
Синтаксис:
НайтиПоКоду(<Код>,<ФлагПоиска>)
Назначение:
Найти элемент справочника по коду.
Возвращает: 1 - если действие выполнено;
0 - если действие не выполнено (элемент не найден).
Параметры:
<Код> - выражение со значением искомого кода,
<ФлагПоиска> - флаг поиска (необязателен):
0 - поиск во всем справочнике вне зависимости от родителя;
1 - поиск внутри установленного подчинения (родителя);
2 - поиск по полному коду через разделитель.
Значение по умолчанию:
0 - если код уникален во всем справочнике;
2 - если код уникален только в группе.
Замечание:
Метод можно использовать только для объектов, созданных функцией СоздатьОбъект.
Alt 05.08.2002, 16:26   #5  
mick_777 ist offline
mick_777
Участник
 
30 / 10 (1) +
Registriert seit: 05.06.2002
Ort: г. Киев, Украина
мне кажется что лучше таки перенос данных в 1С делать через ODBC
и быстрее будет и можно стандартными запросами все организовать
Alt 05.08.2002, 16:39   #6  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
2 mick_777:
можно поподробнее?
Alt 05.08.2002, 16:50   #7  
mick_777 ist offline
mick_777
Участник
 
30 / 10 (1) +
Registriert seit: 05.06.2002
Ort: г. Киев, Украина
подробнее про ODBC
захожу в винде в ODBC
создаю DSN, с драйвером Visual Foxpro
указываю каталог 1С (если dbf)
ну а если это MS база то тогда и драйвер MS

и с ЛЮБОГО места, в нашем случае Ахапта (я пользуюсь и в самой 1С - на саму себя)
подключаюсь через ODBCConnection
в качестве имени - то что указали
и вперед -
SELECT * from sc112 (вся информация о структуре в 1cv7.DD файле)
- я таким образом из 1с в Ахапту делал импорт

кстати, если мне надо такое в 1С сделать - то использую odbcsql.dll - тоже дает возможность работать с любой базой через ODBC, напр. импорт из Аксесса
Alt 05.08.2002, 16:59   #8  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Хм. Во-первых ты говоришь про чтение ИЗ 1С.
А здесь вопрос как писать В 1С.

В 1С тоже есть внутренние идентификаторы.
Там они гораздо забавнее, чем в Аксапте и гораздо сильнее взаимосвязаны. Разбираться с идентификаторами гораздо сложнее.

В 1С тоже не рекомендуется писать внешними средствами.
Поэтому не стоит.
Alt 06.08.2002, 18:29   #9  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Re: Перенос данных из Аксапты в 1С
Zitat:
Изначально опубликовано Andrew Besedin
Добрый день!
При работе с COM-компонентой 1С столкнулись с неожиданной проблемой. Следущий код не работает - почему, неясно.
Похоже, что между созданием переменной справочника и поиском надо вставить паузу.

Вот заведомо рабочий код
PHP-Code:
static void Job45(Args _args)
{
    
COM v77;
    
COM ref;
    
int res;

    
v77 = new COM("v77.Application");
    
res v77.initialize(v77.RMtrade(),"/dd:\\1cv77\\1sbdb /m","");
    if( !
res ) throw error("Ошибка открытия 1С");

    
ref v77.CreateObject("Справочник.МестаХранения");
    
pause;
    
res ref.FindByCode("00001",0);
    print 
strfmt('-%1-',ref.description());
    
pause;

величину паузы надо подбирать экспериментально
Alt 30.10.2002, 19:48   #10  
macklakov ist offline
macklakov
NavAx
Benutzerbild von macklakov
 
2.347 / 996 (38) +++++++
Registriert seit: 03.04.2002
Lightbulb
Господа, не кажется ли Вам странным, что каждому приходится самому писать сопряжение в 1С? Если у кого есть готовое решение, поделитесь или продайте, pls!
Alt 31.10.2002, 13:51   #11  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Не кажется. Это подход такой у 1С - проще написать частный код, чем универсальное решение. Проще ему следовать, чем бороться с ним.

Универсальное сопряжение получается уж слишком универсальным, поскольку в 1С часто пишут с нуля. А универсальные вещи тяжело администрируются. Проще подшаманить в коде сопрягалки, чем администрировать.

Кроме того, в 1С есть проблема с перечислениями через ОЛЕ. Я не знаю универсального способа работы с ее перечислениями. Проще создать подобные в Аксапте. Опять же, ввиду того, что на 1Се часто пишут с нуля, то общим является только перечисление Булево. Да и то не всегда.
Alt 19.03.2003, 18:11   #12  
tav ist offline
tav
Участник
 
49 / 10 (1) +
Registriert seit: 15.11.2002
Zitat:
Функция 'FindByCode возвратила код ошибки 80070057 (0xE_INVALIDARG), что означает: Один или более аргументов не
Прошу прощения, так в чем же ошибка?
__________________
yes
Alt 19.03.2003, 23:00   #13  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
"Так кто же убил Жульена Налестро?" (С) конец первой серии фильма "Ищите женщину"

1. Поскольку ошибка воспроизводсится из Word, Excel и даже при поиске данных по коду из другой 1С, считаю, что ошибка в 1С.
2. Считаю, что обсуждение 1С (в т.ч. поведения различных релизов) здесь является оффтопиком.
3. обратитесь к специализированным форумам с этим вопросом. Например "Территория 1С" http://www.kuban.ru/cgi-bin/forum/forum9.cgi, поищите и другие специализированные форумы.
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
работа 1С из Аксапты через COM _scorp_ DAX: Программирование 7 22.08.2008 15:45
оставить НУ в 1С, интеграция аксапты и 1С natterru DAX: Функционал 14 02.06.2008 13:45
Передача данных из 1С в Axapta 3.0 через COM Connector isbist DAX: Программирование 10 03.12.2004 10:58
Передача данных из 1С в Аксапту. Hidden DAX: Функционал 2 25.03.2004 14:32
Связь аксапты с 1С Prix DAX: Функционал 0 10.04.2003 13:25
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 18:53 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.