![]() |
#7 |
Участник
|
так, Tony Green, спокойствие.
Я вчера проверил. Да, не работает с 21 релизом, ни 3.0, ни 2.5. Раньше работало. Барабашки нет. Значит что-то изменилось. Задача - выяснить. Да, действительно. Сам метод отрабатывает, но Аксапта возбуждает исключение. Исключение возбуждается поскольку метод возвращает ненулевой HRESULT. Если вы знакомы с COM, то должны знать, что внутри совсем все не так как пишется в коде. У меня подозрение, что 1С в некоторых конфигурациях выполняет код правильно, но возвращает HRESULT. Аксапта это ловит. Все басикоподобные языки сильно обертывают и прячут COM-события. Обратите внимание, что в басике и дельфи вы вызываете FindByCode как МЕТОД, а не как функцию! Обратите внимание, что там где у вас работает нет Retval параметра. Аксапта же всегда вызывает как функцию и хочет получить возвращаемое значение. Здесь то ее похоже и обламывают. Я протестил и Excel VBA. Excel выполнил не возбудил никаких исключений. У меня подозрение, что он и не смотрит в HRESULT. Т.е. все произошло так, как будто в Аксапте вызов findByCode обернули в Try catch. Погодите, хочу протестировать с ключом, с соболем и с соароном. Хочу протестировать 18 и 21 релиз, DBF и SQL версию. Обязательно расскажу о результатах. Пока у меня вопрос: какой HRESULT возвращает 1С, если вызвать ее из Delphi через iDispatch? |
|