Проверка отчета XBRL для НФО





Проверка отчета XBRL для НФО средствами Arelle и анализ полученного журнала сообщений. Обработки тестировались в пустой конфигурации на платформе 8.3.10

В предыдущей части пытались разбираться с таксономией (тут). Если получать готовый отчет XBRL из учетной системы, то нам необходимо как-то его проверить (валидировать) по определенным в таксономии правилам (база формул). Это можно сделать в ПО "Анкета-редактор XBRL". Но это не удобно: создавать пакет, загружать, проверять…

Увидев что Анкета-редактор проверяет отчет вызовом arelleCmdLine.exe через командную строку, возникла идея получать и обрабатывать log-файл об ошибках самим.

Как это делает ПО "Анкета-редактор XBRL" (пример):

C:Program Files (x86)Anketa-redaktor XBRLinanketa-assetsarelleCmdLine.exe -f <путь отчета>.xml -v —packages <путь таксономии>final_1_2.zip —parameters {http://parameters}param_min1=2024-12-28,{http://parameters}PriorPeriod-1Start=2024-01-01,{http://parameters}CurrentPeriodStart=2024-01-01,{http://parameters}param_min3=2024-06-28,{http://parameters}param_min2=2024-09-28,{http://parameters}startRepYear=2024-12-31,{http://parameters}PriorPeriod-2Start=2014-01-01,{http://parameters}refPeriodEnd=2024-02-28,{http://parameters}refPeriodStart=2024-01-01,{http://parameters}PriorPeriod-2End=2024-02-28,{http://parameters}startQuart=2024-12-29,{http://parameters}PriorPeriod-1End=2024-12-31,{http://parameters}CurrentPeriodEnd=2024-02-28,{http://parameters}startMonth=2024-01-31 —logFile <путь лога>.xml —export —exportDir <путь выгрузки ролей> —uiLang ru —labelLang ru-RU —calcDecimal —infoset —formula run —formulaUnsatisfiedAsser —logFormat "%(messageCode)s DIVIDER %(message)s DIVIDER %(file)s DIVIDER %(refs)s DIVIDER %(levelname)s DIVIDER %(args)s ENDOFROW"

Посмотрев help к arellecmdLine.exe выясняем что часть параметров лишняя:

  • —parameters: используются для базы таблиц, в проверках не используются (может и ошибаюсь, но не нашел где в формулах используется).  В версии таксономии 1.3 используется.
  • —export: видимо используют для создания ссылок на таблицы из список ошибок. Нам это не нужно.
  • —infoset: не используем.

Просто убрать —parameters нельзя,т.к. будут выходить ошибки при загрузке/проверки базы таблиц. Необходимо исключать файлы *-rend.xml, *-lab.xml:

  • —skipLoading "*-rend.xml|*-lab.xml"

Так же в логах идет ошибка с кодом "err:XPTY0004", ее можно пропускать через параметр —logCodeFilter.

Проверять отчет можно через arelleCmdLine.exe как от Анкеты-редактора так и от сайта arelle.org.

Важно!!! Результаты проверки через Анкету-редактор (1.0.345) и arelle.org (2024-03-16) разные:

  • не совпадают количество ошибок;
  • есть ошибки которые присутствуют в Анкете, но нет в  arelle.org  и наоборот;
  • не совпадают описание переменных.

Представленная обработка показывает пример запуска проверки отчета и вывод лог-файла в виде отчета.

На следующих двух скринах показано различие в описании переменных по одной и той же ошибке.

На вкладке "Подробности" xml-тексты для информации.

Инструкция к обработке:

1. Указываем пути к arelleCmdLine.exe, файлу таксономии (zip), отчету XBRL. Кнопка "Проверить и сформировать отчет проверки". Если файл-лог не был указан, то создается новый в том же каталоге что и отчет XBRL. Если указан, то перезаписывается.

2. Если хотим вывести отчет по уже существующему файлу-логу, указываем его и кнопка "Вывести отчет по логу-файлу".

Если вы получаете готовый отчет из учетной системы и у вас нет базы формул, то используемый метод позволит пользователю проверить отчет без запуска Анкеты-редактора

 

Обновление вер. 1.2: После выпуска таксономии версии 1.3 пришлось включить выбор периода для установки параметров проверки.

Замечание: при проверке бухгалтерской отчетности используется установленная для фактов разрядность "-3", что не очень удобно,т.к. в отчет проверки суммы выходят округленные до тыс.рублей. Поэтому мы обычно для проверки готовим xbrl-отчет с разрядностью "2".

Обновление 07.09.2024: с последней версией Анкета-редактор обработка не работает, т.к. разработчики запретили запускать проверку через командную строку (ключ key). Занялся обработкой базы формул, уже получается проверять по части формул. Готовиться статья по разбору базы формул таксономии…

21 Comments

  1. Dziden

    Мы тоже обратили недавно внимание на это внимание =). На самом деле arellecmdLine.exe в пакете анкеты доработан Банком России.

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

    Reply
  2. Milan-1c

    Добрый день!

    Спасибо за обработку.

    Помогите расшифровать ошибку, пожалуйста?

    Сообщение пустое.

    Формула: $Prinadlezhashhie_affilirovannomu_liczu_akczii_Aff_l ge 20

    Текст сообщения:

    <message error=»Соответствующая последовательность переменных включает в себя факт modelFact[419257, qname: purcb-dic:Kod_osnovaniya_affilirovannosti_otch_orgEnumerator, contextRef: a1f04c9be-c43d-43a0-9ec0-430354e9f42b, unitRef: None, value: mem-int:Chlen_sovet_dirzacziiMember, XBRL_1027402052347_ep_nso_purcb_m_q_30d_20180630.xml, line 1539] несогласованный в аспекте dim-int:ID_strokiTaxis» label=»valueAssertion_SR_0420402_9″>Message: [xbrlmfe:inconsistentMatchedVariableSequence] Переменный набор %(label)s

    Исключение: %(error)s Соответствующая последовательность переменных включает в себя факт modelFact[419257, qname: purcb-dic:Kod_osnovaniya_affilirovannosti_otch_orgEnumerator, contextRef: a1f04c9be-c43d-43a0-9ec0-430354e9f42b, unitRef: None, value: mem-int:Chlen_sovet_dirzacziiMember, XBRL_1027402052347_ep_nso_purcb_m_q_30d_20180630.xml, line 1539] несогласованный в аспекте dim-int:ID_strokiTaxis

    Message log error: incomplete format key</message>

    Reply
  3. Solikamsk

    Так пройдись по файлу поиском «a1f04c9be-c43d-43a0-9ec0-430354e9f42b» — должен быть сам элемент и его описание.

    Reply
  4. tgrstart

    (2) может указан факт Chlen_sovet_dirzacziiMember с неверной осью ID_strokiTaxis в контексте contextRef: a1f04c9be-c43d-43a0-9ec0-430354e9f42b?

    А сама формала должна проверять кол-во аф.лиц не более 20.

    Reply
  5. starik-2005

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

    Reply
  6. tgrstart

    (5) Да, с последней версией Анкета-редактор обработка не работает, т.к. разработчики запретили запускать проверку через командную строку (ключ key). Причины не известны. C последней arelle твориться что-то непонятное: если при запуске проверки из командной строки (или через обработку) не выдает результат, то помогало переименование файлов отчета.

    Занялся изучением базы формул, уже получается проверять по части формул. Прототип обработки для проверки xbrl-файла уже проверяет около 70% формул из таксономии. Может скоро что-нибудь выложу…

    Reply
  7. user761157

    (6) Нашли адекватную документацию по базам формул?

    Из того, что я видел — очень поверхностно, в самих проверка используется большое количество тэгов, которые нигде не описаны.

    Reply
  8. tgrstart

    (7) нет, не нашел. Пошел от обратного: собрал статистику использования тэгов, типов дуг и ресурсов в базе формул от ЦБ. По смыслу формул определяю назначение того или иного атрибута.

    Reply
  9. dragonCat

    (5) Здравствуйте!

    А как удалось отследить данный ключ запуска и «постоянно меняющиеся значения»? Перехватывали внешние запуски Анкеты чем то или есть какой то иной способ?

    Reply
  10. tgrstart

    (9) Если запустить Анкету из командной строки (или через FarManager), то в консоли видны все команды запуска arelle

    Reply
  11. dragonCat

    (10) Спасибо большое!

    Reply
  12. Solikamsk

    У меня задача готовый файл отчетности проверить с данными системы учёта. Можно ли как-то с помощью arelle сделать запросы к определенным значениям фактов?

    Reply
  13. Solikamsk

    Ну или другие утилиты.. В идеале конечно хотелось бы что-то вроде OLE DB, типа запросы..

    Reply
  14. starik-2005

    (12)

    Можно ли как-то с помощью arelle сделать запросы к определенным значениям фактов?

    Смотря какая отчетность. Если это страховая НСО, то они там накрутили на каждый элемент ОСВ сове КС, которых в общей сложности по 10к — арель мрет на этомю

    Reply
  15. starik-2005

    (13)

    Ну или другие утилиты.

    У нас скоро портал будет для тестирования отчетности — на выходе лог.

    Reply
  16. Solikamsk

    (15) Я предполагаю, что портал будет платным.. В чём преимущество от обычной анкеты?

    И ещё.. юзали «Office Tool for XBRL Prototype»? Я пока только узнал, что он есть и ничего найти не могу.

    Reply
  17. starik-2005

    (16) в отчетности страховых добрые люди из ЦБ накуевертили столько контрольных соотношений, что анкета дохнет. Не от отчета дохнет, а от контролей, ибо там каждый элемент в каждом соотношении ищется по фильтрам, потом все это вычиляется, потом снова… КС в XBRL — это очень слабенькая реализация функций над даными. Особенно в подходе к ССД, когда все счета по отдельности в ОСВ сравниваются по сумме начала, оборота и окончания, линии бизнеса и элемента валюты с итогами. Это не бигдата подход — это наепалово налогоплательщиков)))

    Reply
  18. tgrstart

    (17) последняя версия анкеты вроде бы не «дохнет», и быстрее проверяет. Еще пришлось ограничить анкету на использование оперативной памяти.

    Интересно было бы сравнить скорость проверки и у разных разработчиков… а то своей программой проверяешь по таксономии — полчаса, анкетой — два часа. Как будто что-то делаю не так.

    Идея счет ОСВ = концепт мне не нравиться, я бы код счета в измерение поставил.

    Reply
  19. starik-2005

    (18)

    я бы код счета в измерение поставил

    Тогда другие трудности возникнут с проверкой, например, сальдо на расчетных счетах как сумма сальдо определенных счетов. Лучше было бы проверять все элементы по оси валютного признака и периода, но там свои трудности в самом XBRL-стандарте.

    Reply
  20. tgrstart

    (19)Наоборот легко: Факт A (измерение счет B) = Факт A (измерение счет C) + Факт A (измерение счет D). А их тысяча формул по ОСВ описывалась одной одной. И таблица ОСВ была бы читаемой (отображались бы счета по которым есть данные, а не все подряд).

    Reply
  21. starik-2005

    (20)

    Факт A (измерение счет B) = Факт A (измерение счет C) + Факт A (измерение счет D). А их тысяча формул по ОСВ описывалась одной одной.

    Так было бы круто, но вот есть какой-то факт СуммаНаРасчетныхСчетах, который собирается из 205/206/303,,, — там сложности возникают.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *