Здравствуйте,
столкнулся с задачей выгрузки данных из 1С в SAP.
С SAP \ R3 вообще никакогда не работал, просто нашел примеры в инте, попробовал решить свою здачу на их основе.
Вот по порядку, то что я делаю:
Code:
// получаю COM объект
Перем conn;
SAP_R3 = Новый COMОбъект("SAP.Functions");
// настраиваю параметры соедения:
conn = SAP_R3.Connection;
conn.ApplicationServer = ...
conn.User = ...
conn.password = ...
conn.Client = ....
conn.SystemNumber = ...
// ... и т.д.
// соединяюсь:
Если Не conn.logon(0, False) Тогда
// ...
Иначе
// ...
КонецЕсли;
Соединение устаналиванется всегда без проблем.
далее:
получаю функции для выгрузки:
Code:
ИмяТаблицыЗаголовок = "it_ZTZ0009";
ИмяТаблицыПозиции = "it_ZTZ0010";
ИмяТаблицыОшибок = "it_MSGS";
//получение функции для выгрузки заявок
theFunc = SAP_R3.Add("Z_1C_EXPORT");
//Инициализация передаваемых параметров
Заголовок = theFunc.Tables(СокрЛП(ИмяТаблицыЗаголовок));
Позиции = theFunc.Tables(СокрЛП(ИмяТаблицыПозиции));
ТаблицаОшибок = theFunc.Tables(СокрЛП(ИмяТаблицыОшибок));
Это тоже все выполняется нормально.
Дальше пробуем выгружать данные:
//Передаем вид операции
Code:
VIDOPER = theFunc.exports("VIDOPER");
VIDOPER.Value = "C";
//Передаем заголовок в ФМ
стрЗаголовок = Заголовок.Rows.Add();
стрЗаголовок.Value("BUKRS", СтрокаТз3.BUKRS); [b] // и вот тут я получаю ошибку!!! [/b]
стрЗаголовок.Value("NUMZAJ", NUMZAJ);
// ... остальные поля
// запись
returnFunc = theFunc.Call;
Ошибка вываливается вот такая:
03.04.113 08:31:20.656 MakeTable (pn=FIELDS tn=RFC_FIELDS)
03.04.113 08:31:20.718 MakeTable (pn=PARAMS tn=RFC_FUNINT)
03.04.113 08:31:20.828 MakeTable (pn=IT_MSGS tn=ZTZ_1C_MSGS)
03.04.113 08:31:20.875 MakeTable (pn=IT_ZTZ0009 tn=ZTZ_1C_ZTZ0009)
03.04.113 08:31:20.921 MakeTable (pn=IT_ZTZ0010 tn=ZTZ_1C_ZTZ0010)
03.04.113 08:31:20.968 Function has exception: ZAY_BADFORMAT
03.04.113 08:31:20.968 Function has exception: ZAY_BADOPER
03.04.113 08:31:20.968 Function has exception: ZAY_BADPRFRGHT
03.04.113 08:31:21.515 RFC Error: RFC_ERROR_SYSTEM_FAILURE
BUKRS в SAP-е имеет тип CHAR длина 4. В 1C-ке это у нас строка длинна, которой тоже больше 4 не бывает (если быть точнее, то BUKRS = СокрЛП(КодБЕ), где КодБЕ 4 значное число).
Так вот не понятно, в чем ошибка? - почему не выполняется стрЗаголовок.Value("BUKRS", СтрокаТз3.BUKRS); - может как-то по другому нужно записывать значения в поля таблицы???