Получить список заблокированных подразделений Exact Online - PullRequest
0 голосов
/ 30 апреля 2018

У нас есть несколько тысяч компаний в Exact Online, из которых определенный процент ведет собственный учет и имеет собственную лицензию. Тем не менее, существует ежедневно меняющаяся группа компаний, которые отстают в выплатах Exact, и поэтому их компании блокируются.

Для всех компаний мы используем Invantive Data Replicator для репликации всех компаний Exact Online в хранилище данных SQL Server для аналитической отчетности и непрерывного мониторинга.

В таблице SystemDivisions значение state такой заблокированной компании остается равным 1 (активен). Он не изменяется на 2 (Архив) или 0 (ожидается). Также не было установленной даты в прошлом.

Однако, когда API-интерфейсы XML или REST используются через запрос из Invantive SQL или напрямую из Python в такой заблокированной компании, появляется много нечетких сообщений об ошибках.

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

Кажется, что нет способа получить список заблокированных компаний.

Есть ли альтернатива?

1 Ответ

0 голосов
/ 30 апреля 2018

Хотя это не поддерживается и не принимается во внимание, вы можете получить доступ к ограниченному количеству экранов в Exact Online, используя собственные запросы. Ходят слухи, что это возможно не для всех экранов.

Однако вам повезло. Статус блокировки компании можно запросить с помощью следующих запросов:

insert into NativePlatformScalarRequests(url, orig_system_group)
select /*+ ods(false) */ 'https://start.exactonline.nl/docs/SysAccessBlocked.aspx?_Division_=' || code
,      'BLOCK-DIV-CHECK-' || code
from   systemdivisions

create or replace table currentlyblockeddivisions@inmemorystorage
as
select blockingstatus
,      divisioncode
from   ( select regexp_replace(result, '.*<table class="WizardSectionHeader" style="width:100%;"><tr><th colspan="2">([^<]*)</th>.*', '$1', 1, 0, 'n') blockingstatus
         ,      replace(orig_system_group, 'BLOCK-DIV-CHECK-', '') divisioncode
         from   NativePlatformScalarRequests
         where  orig_system_group like 'BLOCK-DIV-CHECK-%'
       )
where  blockingstatus not like '%: Onbekend%'

Обратите внимание, что гиперссылка с «.nl» должна быть заменена, если вы работаете в другой стране. То же самое относится к поиску по голландскому термину «Onbekend» («Неизвестный» на английском языке).

Этот запрос выполняет несколько тысяч HTTP-запросов, каждый из которых запрашивает экран со статусом блокировки компании. Однако, когда компания не заблокирована, на экране отображается причина «Неизвестно».

Эти компании с неизвестной причиной, вероятно, не заблокированы. Остальное есть.

...