Неподдерживаемый тип параметра в IDispatch.Invoke: 20

Автор Михаил2000, 04.07.23, 08:54:31

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Михаил2000

Пишу плагин - это код работает и возвращает ожидаемое значение.  мы в параметрах передаем в ExistsObject нужно передать параметр IdVersion и получить Проверяет существование объекта в текущей базе данных и в текущем чекауте.


 long IdVersion = call.PluginCall.IdVersion;
            object[] args = { "", "", "", IdVersion };

             int num = (int)call.RunMethod("ExistsObject", args);

            System.Windows.Forms.MessageBox.Show(Convert.ToString(num));
 


И там и там передаем одинаковое long idVersion но в этом случае, что то пошло не так
И это код не работает: выводит ошибку Неподдерживаемый тип параметра в IDispatch.Invoke: 20

  object[] ar = {"","","", idVersionNumber, inMode };
            IDataSet dataSet = (IDataSet)call.PluginCall.GetDataSet("GetInfoAboutVersion", ar); // здесь ошибка Неподдерживаемый тип параметра в IDispatch.Invoke: 20


 
 public static string PluginCaption = "Тестовый плагин"; // к данной ошибке не имеет отношения

   long inMode = 7;
   long idVersionNumber = call.PluginCall.IdVersion;
           
            object[] ar = {"","","", idVersionNumber, inMode };
            IDataSet dataSet = (IDataSet)call.PluginCall.GetDataSet("GetInfoAboutVersion", ar); // здесь ошибка Неподдерживаемый тип параметра в IDispatch.Invoke: 20


Просто выводит dataSet в данной теме просто для ознакомления
            var builder = new StringBuilder();
            while (!dataSet.Eof)
            {

                builder.AppendFormat("{0}\n", dataSet.FieldValue["_NAME"]);

                dataSet.Next();
            }
            MessageBox.Show(builder.ToString(), PluginCaption, MessageBoxButtons.OK, MessageBoxIcon.Information);

FeelsSoBad

Попробуйте айди выделенного объекта получать через PluginCall.Selected.ID как вариант

Chaa

Тип параметра 20 это VT_I8 - то есть 64-х битное число. Почему он не поддерживается - это отдельный вопрос.

Попробуйте использовать просто int или Int32.