AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.09.2003, 10:39   #1  
МасЯня is offline
МасЯня
Участник
 
19 / 10 (1) +
Регистрация: 11.02.2003
Адрес: Сибирь
? Связь 1с + Аксапта.Начинающая
Есть задача: в Акаспте есть временная таблица. в которой хранятся данные , необходимо по кнопке занести их в справочник номенклатуры в 1с, через КОм. примерные действия понятны, хочется узнать побольше информации. может есть статьи ссылки, примеры, куски кода, Как можно добраться до значений реквизитов элемента в справочнике в 1с, как воспользоваться методами, пробую
static void Job3(Args _args)
{
COM v77;
COM ref,ref1;
int res,res1;
;
v77 = new COM("v77s.Application");
res = v77.initialize(v77.RMtrade(),"/D/\Cc\\Aks\ /m","");
If (res)
{
info("Соединился!");
}
ref = v77.CreateObject("Справочник.Номенклатура");
ref.New();
ref.SetAttrib("Description","аксапта");
ref.Write();
info("Выпорлнено");
}
Выдает ошибки, что неверно переданы параметры, это самый простой пример, не получается, жду совета, плиз
__________________
Бороться и искать, найти и не сдаваться!
Старый 09.09.2003, 13:31   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Код справочника не указан.
Старый 10.09.2003, 03:45   #3  
МасЯня is offline
МасЯня
Участник
 
19 / 10 (1) +
Регистрация: 11.02.2003
Адрес: Сибирь
в 1с по команде New автоматически присваивается новый код.
Вопрос в том, как присвоить нужные значения реквизитам справочника?
__________________
Бороться и искать, найти и не сдаваться!
Старый 10.09.2003, 04:07   #4  
МасЯня is offline
МасЯня
Участник
 
19 / 10 (1) +
Регистрация: 11.02.2003
Адрес: Сибирь
Как присвоить код новому элементу справочника и дать ему наименование?
__________________
Бороться и искать, найти и не сдаваться!
Старый 10.09.2003, 07:45   #5  
МасЯня is offline
МасЯня
Участник
 
19 / 10 (1) +
Регистрация: 11.02.2003
Адрес: Сибирь
to mazzy
какой код справочника? вот еще один примерчик, тоже выдает ошибку , что неправильно переданы параметры??
static void Job3(Args _args)
{

COM v77;
COM ref,ref1;
int res,res1;
str a;
v77 = new COM("v77s.Application");
res = v77.initialize(v77.RMtrade(),"/D/\Cc\\Aks\ /m /nАд ","");
a = "СоздатьОбъект(\"Справочник.ОбъектыСтроительства\")";
ref = v77.EvalExpr(a);
ref.selectitems();
while (ref.getitem()==1)
{ // code = ref.code();
a = ref.getattrib("code");
print(a);
pause;
}
}
в getattrib неправильно переданы параметры, в чем дело, в каком виде тогда их аксапта выдает..
__________________
Бороться и искать, найти и не сдаваться!
Старый 10.09.2003, 13:00   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Аксапта? А причем здесь Аксапта?
Это ж 1С работает.

Про код... Да, я уже забыл. Код 1С ставит сама...

И еще. Вы открываете Торговлю, а спрашиваете справочник "ОбъектыСтроительства". В торговле такой справочник разве есть?

МасЯня, постараюсь проверить вечером.
Однако ж, по-моему, вам лучше спросить на 1Совском форуме про работу через ОЛЕ.
Старый 11.09.2003, 04:46   #7  
МасЯня is offline
МасЯня
Участник
 
19 / 10 (1) +
Регистрация: 11.02.2003
Адрес: Сибирь
to Mazzy
во-первых, открывается не Торговля, а ПУБ, RMTrade - просто добавочное ключевое слово, 1с данный код отрабатывает на ура, здесь дело как раз в Аксапте, она передает параметры неверно, вопрос в том, как именно она их передает, пробовала уже и через ComDispfunction,COmVariant и т.п.
i = new COMDispFunction(ref,"usedate",COMDispContext::Method);
r.date(10\09\2003);
i.call(r);
здесь ругается на неизвестную ошибку,
__________________
Бороться и искать, найти и не сдаваться!
Старый 11.09.2003, 06:40   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано МасЯня
RMTrade - просто добавочное ключевое слово
Извините. Я начал забывать эту сказку.

Даже интересно стало.
Старый 11.09.2003, 07:19   #9  
МасЯня is offline
МасЯня
Участник
 
19 / 10 (1) +
Регистрация: 11.02.2003
Адрес: Сибирь
Просто получается какая-то странная ситуация, когда вызываешь метода 1с, которые не требуют параметров, то все нормально, как только передаешь в 1с параметры, тут же ошибка, тот же самый код на 1с отрабатывает чисто, думаю дело в том, что Аксапта каким-то образом параметры обрабатывает , и тут есть какая-то заковыка....
Есь ли пример запуска метода 1с с параметром?
__________________
Бороться и искать, найти и не сдаваться!
Старый 11.09.2003, 11:14   #10  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
ага. понятно.
Попробовал и вспомнил, что я уже на это напарывался.


Во-первых. Вы использовали ключик /m - это означает монопольный доступ. Отлично это помню, однако сначала накололся на том, что просто не было соединения из-за того, что 1Ска уже была открыта. (Кстати, забавное у вас имя пользователя )

Во-вторых. У COM объекта в Аксапте есть метод new. Он и вызывается вместо new справочника. Надо вызывать этот метод через COMDispFunction. В качестве проверки попробуйте не New, а NewGroup для справочника номенклатур.

Должно получиться следующее:
PHP код:
static void Job3(Args _args)
{
    
COM v77;
    
COM ref;
    
int res;
    
COMDispFunction methodNew;

    
v77 = new COM("v77s.Application");
    
res v77.initialize(v77.RMtrade(),"/dD:\\\\1Cv77\\\\1SBDemo\\\\","");
    if( !
res ) throw error("Не соединился!");

    
ref v77.CreateObject("Справочник.Номенклатура");
    if( 
ref == null ) throw error("Не создан объект Справочник.Номенклатура");

    
methodNew = new ComDispFunction(ref,"Новый"COMDispContext::Method);
    
methodNew.call();

//    ref.NewGroup(); // попробуйте вместо вызова methodNew
    
ref.SetAttrib("Description","аксапта 4");
    
ref.Write();

    
info("Выполнено");

Спасибо, что заставили вспомнить.
Ностальгия какая то просто... А уж постоянная перезагрузка 1с... это что-то...

Кстати, http://itland.ru/forum/index.php?showtopic=331


И еще важное добавление: в пути для Аксапты надо указывать двойные обратные слэши. Попробую вставить в форум.
За это сообщение автора поблагодарили: Corel (1).
Старый 11.09.2003, 12:06   #11  
МасЯня is offline
МасЯня
Участник
 
19 / 10 (1) +
Регистрация: 11.02.2003
Адрес: Сибирь
Так все работает, но пока не передаю параметры, не работает, если пытаешься установить по коду или использовать дату и т.п. например
v77 = new COM("v77s.Application");
res = v77.initialize(v77.RMtrade(),"/D/\Cc\\Aks\ /m /nАд ","");
a = "СоздатьОбъект(\"Справочник.ОбъектыСтроительства\")";
ref = v77.EvalExpr(a);
e = new COMDispFunction(ref,"selectitems",COMDispContext::Method);
e.call();
i = new COMDispFunction(ref,"usedate",COMDispContext::Method);
r.date(11\09\2003);
i.call(r);
на usedate выдает ошибку, что метод вернул ошибку неизвестность. а selectitems, прокатывает -нормально, так как без параметров, кстати setattrib из джоба тоже не работает, говорит неправильно переданы параметры? Попробуй найти по коду что-нибудь у себя
__________________
Бороться и искать, найти и не сдаваться!
Старый 11.09.2003, 12:11   #12  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Дык, аргументы надо передавать в ComVariant.
Старый 11.09.2003, 12:23   #13  
МасЯня is offline
МасЯня
Участник
 
19 / 10 (1) +
Регистрация: 11.02.2003
Адрес: Сибирь
ComVariant r = new COMVariant(COMVariantInOut::In,COMVariantType::VT_DATE);,
так r и есть ком вариант, это строчка в джобе вверху,
при чем смотришь отладчик в Аксапте R = "11.09.2003 14:05 VT_Date", этот текст прогоняешь через обработку в 1с - все работает, а когда передается из Аксапты - ошибка?
__________________
Бороться и искать, найти и не сдаваться!
Старый 11.09.2003, 12:30   #14  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
виноват. щас попробую.
Старый 11.09.2003, 12:37   #15  
МасЯня is offline
МасЯня
Участник
 
19 / 10 (1) +
Регистрация: 11.02.2003
Адрес: Сибирь
Дело в том, что еще и setattrib в джобе тоже возвращает ошибку, но насчет неправильных параметров
__________________
Бороться и искать, найти и не сдаваться!
Старый 11.09.2003, 13:09   #16  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
да, действительно забавно.
Не помню такой ошибки.

Проблема не в том, что Аксапта. Проблема в том, что для Аксапты Variant не является родным несущим типом. 1С все что можно преобразует в него. Причем делает это неявно.

У меня вполне работает следующий код
PHP код:
static void Job3(Args _args)
{
    
COM v77;
    
COM ref;
    
int res;
    
str a;
    
COMDispFunction method;

    
v77 = new COM("v77s.Application");
    
res v77.initialize(v77.RMtrade(),"/dD:\\1Cv77\\1SBDemo\\","");
    if( !
res ) throw error("Не соединился!");

    
ref v77.CreateObject("Справочник.Номенклатура");
    if( 
ref == null ) throw error("Не создан объект Справочник.Номенклатура");

    
ref.usedate(11\\09\\2003,1);
    
ref.selectitems();
    while (
ref.getitem()==1)
    { 
        
inforef.fullcode() );
    }
    
info("Выполнено");

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

Попробую поразбираться вечером, когда время останется.

Кстати, для того, чтобы в форум вставить код, при создании сообщения можно нажать на кнопочку "X++ code". будут созданы теги. Код надо поместить между ними.
Старый 11.09.2003, 13:12   #17  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано МасЯня
Дело в том, что еще и setattrib в джобе тоже возвращает ошибку, но насчет неправильных параметров
Странно. У меня мой код работал.
Старый 11.09.2003, 13:15   #18  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Кстати. Кто-то когда то жаловался, что параметры английских методов не совпадают с параметрами русских методов.

Стоит попробовать через COMDispFunction, но вызывать методы с русским названием. Но это уже вечером.
Старый 11.09.2003, 13:19   #19  
МасЯня is offline
МасЯня
Участник
 
19 / 10 (1) +
Регистрация: 11.02.2003
Адрес: Сибирь
Самое интересное, что у меня твой Джоб не работает!!! Ругается, говорит, что usedate неверны параметры, у тебя что за релиз 1с и конфигурация, СКЛ?
__________________
Бороться и искать, найти и не сдаваться!
Старый 11.09.2003, 13:21   #20  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
релиз 20. версия для SQL. база DBF.
SQL 2000 SP3.
Теги
интеграция, 1c

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
работа 1С из Аксапты через COM _scorp_ DAX: Программирование 7 22.08.2008 15:45
связь с 1С через COM rinugun DAX: Программирование 9 03.12.2004 11:28
Перенос остатков из 1С в Аксапта. NJD DAX: Функционал 1 30.03.2004 14:15
Связь аксапты с 1С Prix DAX: Функционал 0 10.04.2003 13:25
еще раз про lookup mick_777 DAX: Программирование 11 06.08.2002 12:31

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:46.