Ошибка при получении контактов из 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
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 select", и заменяете "*" в запросе соответствующими полями.
После этого вы можете вернуться к новому комбинированному провайдеру Exact Online для API XML и REST и продолжить работу.
Вариант 2: используйте F4 (Опишите столбцы) в имени таблицы.
В качестве альтернативы вы также можете получить список доступных полей. Они доступны в представлении словаря данных systemtablecolumns
, Или более удобным для пользователя во всплывающем окне, которое вы получите, поместив курсор на имя таблицы и нажав F4 или выбрав "Describe" в меню редактора:
Вариант 3: используйте "Показать / Скрыть пустые столбцы" на панели инструментов сетки.
В качестве последней альтернативы, вы можете указать сетку только показанным столбцам, где некоторые строки имеют непустые значения. Сетка результатов имеет кнопку, как показано ниже для этого. Не забудьте активировать его перед выполнением запроса.