При синхронизации транзакций Exact Online GL с ошибкой Invantive Control for Excel: вы пытаетесь переместить ячейки в таблице на листе

При попытке синхронизировать мою модель с Invantive Control for Excel возникает следующая ошибка:

сообщение об ошибке

Это полное сообщение об ошибке:

Type: System.Runtime.InteropServices.COMException
   at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
   at Microsoft.Office.Interop.Excel.Range.Delete(Object Shift)
   at Invantive.Producer.Control.Utility.ResizeBlock(ModelCache modelCache, Workbook workbook, List`1 blocks, iea_blocks_v block, Cube currentCube, Cube desiredCube, Point3d startPoint, Int64 growLength) in File169:line 7968
   at Invantive.Producer.Control.Utility.AdjustBlockDimensionOneAxis(SystemWorkingContext context, ModelCache modelCache, Workbook workbook, iea_blocks_v currentBlock, Cube currentCube, Cube desiredCube, IEnumerable`1 anchoredBlocksResult, List`1 blocks, Point3d desiredStartPoint, Int64 growLength, iea_blocks_vBlk_repeat_rows_along adjustAxis, iea_blocks_vBlk_repeat_rows_direction adjustDirection) in File169:line 7293
   at Invantive.Producer.Control.Utility.AdjustBlockDimensions(SystemWorkingContext context, ModelCache modelCache, Workbook workbook, List`1 blocks, iea_blocks_v currentBlock, Cube currentCube, Cube desiredCube, Point3d desiredStartPoint) in File169:line 6617
   at Invantive.Producer.Control.SyncToDatabaseForm.SyncDownload(DoWorkEventArgs e) in File170:line 2173

Каковы шаги по устранению этой ошибки?

РЕДАКТИРОВАТЬ

Оператор SQL в блоке Invantive Control:

select division_hid
,      division_name
,      reportingyear_attr
,      years_balance_code_attr
,      years_balance_description
,      open
from   BalanceLines
where  years_balance_balancetype_attr = "B"
and    reportingyear_attr = $X{eol_year_to}

$X{eol_year_to} ссылается на именованный диапазон eol_year_to, значение которого используется в запросе.

Я добавил в таблицу Excel два столбца: один с вертикальным поиском по коду классификации учетной записи GL и один по описанию классификации учетной записи GL. После этого добавления модель больше не синхронизируется с Exact Online.


person R. van Deursen    schedule 15.11.2016    source источник
comment
Нет, я обновил Invantive до новой версии. Я ничего не менял в SQL-коде или листах в Excel.   -  person R. van Deursen    schedule 16.11.2016


Ответы (2)


Вы также можете получить классификационный код и описание учетной записи GL от Exact Online за один раз. Используйте что-то вроде следующего, чтобы получить список всех транзакций GL, а также код/описание классификации:

select tln.division division_hid
,      sdn.description division_name
,      tln.financialyear finyear_number_attr
,      tln.financialperiod finperiod_number_attr
,      tln.glaccountcode glaccount_code_attr
,      tln.glaccountdescription glaccount_description
,      tln.journalcode gltransaction_journal_code_attr
,      tln.currency gltransaction_journal_currency_code_attr
,      tln.amountdc amount_value
,      tln.vatpercentage amount_vatpercentage
,      tln.description
,      tln.accountname account_name
,      sysdate nu
,      '=I_EOL_GL_ACTCLN_CODE(,$C{E,.,.,^+4,.})' glactclncode
,      '=I_EOL_GL_ACTCLN_DESCRIPTION(,$C{E,.,.,^+4,.})' glactclndescription
from   transactionlines tln
join   systemdivisions sdn
on     sdn.code = tln.division
where  tln.financialyear   >= $X{eol_year_from}
and    tln.financialyear   <= $X{eol_year_to}
and    tln.financialperiod >= $X{eol_month_from}
and    tln.financialperiod <= $X{eol_month_to}
order 
by     tln.division
,      tln.financialyear
,      tln.glaccountcode 

Классификации баланса

В вашем запросе это будет:

select division_hid
,      division_name
,      reportingyear_attr
,      years_balance_code_attr
,      years_balance_description
,      open
,      '=I_EOL_GL_ACTCLN_CODE(,$C{E,.,.,^+3,.})' glactclncode
,      '=I_EOL_GL_ACTCLN_DESCRIPTION(,$C{E,.,.,^+3,.})' glactclndescription
from   BalanceLines
where  years_balance_balancetype_attr = "B"
and    reportingyear_attr = $X{eol_year_to}

Выражения столбца

Сейчас процесс:

  • SQL загружает все проводки главной книги Exact Online за указанный период в Excel.
  • Сделайте это, нажав Синхронизировать.
  • Затем вычисляются формулы Excel I_EOL_GL_ACTCLN_CODE и I_EOL_GL_ACTCLN_DESCRIPTION.

Эти формулы принимают уникальный код подразделения (компании) плюс, по крайней мере, код счета GL. Поскольку код счета GL меняется в зависимости от транзакции GL, вы хотите обратиться к содержимому определенного столбца вашего запроса. Вы можете сгенерировать жестко закодированную формулу с фактическим кодом счета GL. Но код счета GL лучше взять из другой ячейки Excel. Синтаксис $C{...} позволяет во время синхронизации заменить его ссылкой на ячейку. Пожалуйста, обратитесь к онлайн-руководству и мастеру редактора моделей.

$C{E,.,.,^+4,.} означает:

  • Поворотный метод: используйте ориентацию X/Y в (E)xcel. Вы также можете использовать D, чтобы учесть любую транспозицию из базы данных в Excel, но это редко используется.
  • .: текущий блок, например '.' in vi иногда ссылается на «здесь».
  • .: текущий лист, например '.' in vi иногда ссылается на «здесь».
  • ^+4: столбец, крайняя левая ячейка ('^') текущей строки Excel, а затем четыре ячейки справа.
  • .: текущая строка

Вы также можете добавить еще две координаты в выражение столбца для столбца 2 и строки 2, чтобы указать диапазон ячеек.

person Guido Leenders    schedule 21.11.2016

Invantive Control помещает данные в таблицу Excel. Я добавил формулы в последние два столбца этой таблицы. Invantive Control не может изменить эти формулы, поскольку это нарушит таблицу Excel.

Мы добавили формулы в SQL-код. Теперь проблема решена.

person R. van Deursen    schedule 17.11.2016
comment
Что получается в результате SQL-запроса? - person Guido Leenders; 20.11.2016