3

Чтобы решить проблемы консолидации с другим пакетом, мы загружаем все строки транзакции из Главной книги в лист Excel с помощью Invantive Control. В Exact Online у каждой компании есть классификация 2, которая содержит код клиента, например, «123400». На одного клиента приходится несколько компаний.

Из другой таблицы мы ссылаемся на эти строки транзакции GL с помощью запроса, такого как:

SELECT `'Exact transacties$'`.Administratie, `'Exact transacties$'`.Jaar2, `'Exact transacties$'`.Periode, `'Exact transacties$'`.Grootboeknr, `'Exact transacties$'`.Grootboekomschr, `'Exact transacties$'`.Classificatie_code, `'Exact transacties$'`.Zoek_code, `'Exact transacties$'`.Dagboek, `'Exact transacties$'`.Valuta, `'Exact transacties$'`.Bedrag
FROM `'Exact transacties$'` `'Exact transacties$'`
ORDER BY `'Exact transacties$'`.Administratie, `'Exact transacties$'`.Jaar2, `'Exact transacties$'`.Grootboeknr

Источник данных:

DSN=Excel Files;DBQ=PATH\Databestand EOL (bestandsnaam niet wijzigen).xlsm;DefaultDir=PATH;DriverId=1046;MaxBufferSize=2048;PageTimeout=5;

Однако консолидация за период во всех компаниях клиента занимает 30 минут на клиента. Большая часть времени тратится тысячи раз на выполнение запроса в электронной таблице Exact Online с помощью этой формулы, представленной примерно в 10 компаниях x 14 периодов x 600 категорий = 84 000 ячеек:

=ALS(W$511<=Huidige_periode;V595+(-SOMMEN.ALS(Tabel_Query_van_Excel_Files_1[Bedrag];Tabel_Query_van_Excel_Files_1[Administratie];Cliëntnr_EOL1;Tabel_Query_van_Excel_Files_1[Jaar2];HuidigBoekjaar;Tabel_Query_van_Excel_Files_1[Periode];W$511;Tabel_Query_van_Excel_Files_1[Classificatie_code];$B595&"*";Tabel_Query_van_Excel_Files_1[Dagboek];"<900"));0)

Как я могу улучшить производительность менее чем за одну минуту?

1 ответ1

1

Несмотря на техническую и функциональную корректность, набросок, который вы рисуете, немного медленный и тяжелый для API и вашего процессора. Лучше всего получить суммированные балансы из Exact Online и позволить им выполнять тяжелую работу.

Пример:

Выберите правильные компании для запроса данных:

use
select DIVISIONCLASSES_DIVISIONCLASSNAME_DIVISIONCLASSNAMES_ADMINISTRATION_CODE_ATTR
from   AllAdministrationClassifications 
where  DIVISIONCLASSES_DIVISIONCLASSNAME_NUMBER_ATTR = 2 
and    CODE_ATTR = '123123' -- PUT HERE YOUR CLIENT CODE

Оператор use отличный от SQL Server, позволяет указывать несколько разделов (которые являются компаниями в Exact Online).

А затем получить результаты по учетной записи GL, периоду и разделению:

select BALANCE
,      PERIODS_YEAR_YEARS_BALANCE_CODE_ATTR
,      DIVISION_HID
,      PERIODS_YEAR_REPORTINGYEAR_ATTR
,      REPORTINGPERIOD_ATTR
from   BalanceLinesPerPeriod 

В моей установке требуется около 10 секунд, чтобы получить консолидированные суммы в 10 крупных компаниях.

Доступно несколько вариантов таблиц, например, с единицами затрат / МВЗ и сальдо открытия / закрытия года.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .