Получение ошибки при получении контактов из Exact Online

Я хочу получить всех контактных лиц одной компании в Exact Online и получить следующую ошибку:

select * from AccountContacts

Ошибка:

itgenusg026: запрошенное количество столбцов 3,308 не поддерживается. Ограничьте количество запрошенных столбцов максимум до 1000 столбцов.

Type: Invantive.Configuration.ValidationException
   bij Invantive.Configuration.ValidationException..ctor(String errorCode, String errorMessage, String kindRequest, String localStackTrace, String nk, Exception innerException)
   bij Invantive.Producer.Windows.Forms.UltraGridExtensionMethods.AddColumnsToDataGrid(UltraDataColumnsCollection dataBandColumns, ResultSet results, Dictionary`2& columnNameIdMap, String[] excludedColumnNames, Func`2 allowEdit)
   bij Invantive.Producer.Windows.Forms.QueryTool.ExecuteStatement(IProgressNotifier notifier, String statement, ParameterList bindVariables, Boolean showResultsInGrid, Boolean showStatistics, Boolean memorizeStatisticsInSqlHistory, Boolean allowPaging)
   bij Invantive.Producer.Windows.Forms.QueryTool.FetchResultsFromSql()
   bij Invantive.Producer.Windows.Forms.QueryTool.<>c__DisplayClass107_0.<FetchData>b__0()
   bij System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   bij System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   bij System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   bij System.Threading.ThreadHelper.ThreadStart()
   bij Invantive.Producer.Windows.Forms.UltraGridExtensionMethods.AddColumnsToDataGrid(UltraDataColumnsCollection dataBandColumns, ResultSet results, Dictionary`2& columnNameIdMap, String[] excludedColumnNames, Func`2 allowEdit) in File969:regel 368
   bij Invantive.Producer.Windows.Forms.QueryTool.ExecuteStatement(IProgressNotifier notifier, String statement, ParameterList bindVariables, Boolean showResultsInGrid, Boolean showStatistics, Boolean memorizeStatisticsInSqlHistory, Boolean allowPaging) in File948:regel 2847
   bij Invantive.Producer.Windows.Forms.QueryTool.FetchResultsFromSql() in File948:regel 2437

person Frank Leemkuil    schedule 13.12.2016    source источник
comment
Запрошенное количество столбцов 3,308 не поддерживается. Ограничьте количество запрошенных столбцов максимум до 1000 столбцов.   -  person Frank Leemkuil    schedule 14.12.2016


Ответы (1)


Ошибка «Запрошенное количество столбцов 3,308 не поддерживается. Ограничьте количество запрашиваемых столбцов до 1000 столбцов. вызывается Invantive Query Tool, когда набор результатов из базы данных содержит более 1000 столбцов.

Используемая сетка становится чрезвычайно медленной при наличии нескольких тысяч столбцов.

Тем не менее, вы все равно захотите увидеть содержимое. На данный момент есть три варианта:

  • Вариант 1: определить список столбцов с помощью старого поставщика Exact Online (XML).
  • Вариант 2: используйте F4 (описать столбцы) для имени таблицы.
  • Вариант 3: используйте «Показать/скрыть пустые столбцы» на панели инструментов сетки.

Причина этой проблемы в том, что XSD Exact Online описывает все возможные выходные форматы. Но на самом деле когда-либо возвращается не более 200 из иногда сотен тысяч возможных полей. Нет документации, какие поля доступны в некоторых сценариях, поэтому разработчику SQL нужно просто проанализировать выходные данные для соответствующих полей и их значений.

Аналогичные проблемы также возникают для других платформ ERP, таких как Twinfield или любых других, имеющих обширный XSD со ссылками между узлами на разных уровнях в XSD.

Вариант 1: определить список столбцов

Вариант 1 требует, чтобы вы сначала вошли в систему, используя старый поставщик Exact Online (XML). Он использует Invantive SQL v1, как описано в версиях грамматики Invantive SQL. Эта версия SQL не полностью совместима с ANSI; когда он пуст, он удаляет поля из набора результатов, которые не имеют значения. Это сокращает количество полей примерно в 1000 раз.

Затем вы просто копируете имена полей, щелкнув правой кнопкой мыши по ячейке или используя формат экспорта «выбор SQL», и замените «*» в запросе соответствующими полями.

После этого вы можете вернуться к новому комбинированному поставщику Exact Online для API XML и REST и продолжить работу.

Вариант 2: используйте F4 (описать столбцы) для имени таблицы.

В качестве альтернативы вы также можете получить список доступных полей. Они доступны в представлении словаря данных systemtablecolumns. Или более удобно для пользователя во всплывающем окне, которое вы получаете после размещения курсора на имени таблицы и нажатия F4 или выбора «Описать» в меню «Редактор»:

Список столбцов

Вариант 3: используйте «Показать/скрыть пустые столбцы» на панели инструментов сетки.

В качестве последней альтернативы вы можете указать сетке отображать только столбцы, в которых некоторая строка имеет непустое значение. В сетке результатов для этого есть кнопка, как показано ниже. Не забудьте активировать его перед запуском запроса.

Скрыть пустые столбцы

person Guido Leenders    schedule 14.12.2016