Проверить файлы XBRL и iXBRL в Python

Проверить файл экземпляра XBRL в Python

XBRL Экземпляры, XBRL Базы ссылок и XBRL Схемы таксономии ДОЛЖНЫ соответствовать требованиям синтаксиса, установленным вXBRL спецификация. Для их проверки класс XbrlInstance предоставляет метод validate().

В следующем фрагменте кода Python показано, как проверить экземпляр документа XBRL.

Проверить файл iXBRL в Python

iXBRL спецификация определяет множество правил проверки. Для проверки файлов iXBRL класс InlineXbrlDocument предоставляет метод validate().

Следующий фрагмент кода Python демонстрирует проверку экземпляра документа iXBRL.

Коды ошибок проверки

В перечислении ValidationErrorCode коды ошибок проверки определяются для каждого правила проверки. Ниже приведены определения кодов ошибок:

  • КОНТЕКСТ_ПЕРИОД_НЕТ_НАЧАЛО_ВРЕМЯ: Тип периода контекста — продолжительность, но не имеет даты начала.
  • КОНТЕКСТ_ПЕРИОД_НЕТ_КОНЕЦ_ВРЕМЯ: Тип периода контекста — продолжительность, но не имеет даты окончания.
  • КОНТЕКСТ_ПЕРИОД_НАЧАЛО_ПОСЛЕ_КОНЕЦ: Тип контекстного периода — продолжительность, но дата окончания предшествует дате начала.
  • КОНТЕКСТ_МГНОВЕННЫЙ_NO_TIME: Тип периода контекста мгновенный, но не имеет мгновенной даты.
  • КОНТЕКСТ_СЦЕНАРИЙ_XBRL_NAMESPACE: сценарий контекста не может иметь узел пространства имен XBRL.
  • КОНТЕКСТ_СЦЕНАРИЙ_XBRL_ЗАМЕНА_ГРУППА: Сценарий контекста не может иметь элемент в группе замены для элементов, определенных в пространстве имен XBRL.
  • КОНТЕКСТ_СЦЕНАРИЙ_ПУСТОЙ: Контекстный сценарий не может быть пустым.
  • КОНТЕКСТ_СЕГМЕНТ_XBRL_NAMESPACE: Сегмент контекста не может иметь узел пространства имен XBRL.
  • КОНТЕКСТ_СЕГМЕНТ_XBRL_SUBSTITUTIONGROUP: сегмент контекста не может иметь элемент в группе замены для элементов, определенных в пространстве имен XBRL.
  • КОНТЕКСТ_СЕГМЕНТ_ПУСТОЙ: Сегмент контекста не может быть пустым.
  • ВЕЩЬ_НЕТ_КОНТЕКСТ: элемент должен иметь контекст.
  • ВЕЩЬ_ПЕРОИД_ТИП_КОНФЛИКТ_WITH_CONTEXT: тип элемента конфликтует с контекстом.
  • ВЕЩЬ_ЦИФРОВОЙ_NO_UNIT: Элемент является числовым и должен иметь единицу измерения.
  • ДЕНЕЖНЫЙ_ВЕЩЬ_НЕТ_НЕ ЗАМУЖЕМ_UNIT_MEASURE: Элемент является денежным типом и должен иметь единую единицу измерения.
  • ДЕНЕЖНЫЙ_ВЕЩЬ_NO_ISO4217: Товар имеет денежный тип и должен иметь единицу измерения в стиле Iso 4217.
  • ПОДЕЛИТЬСЯ_ВЕЩЬ_НЕТ_НЕ ЗАМУЖЕМ_UNIT_MEASURE: элемент относится к типу акций и должен иметь единую меру.
  • ПОДЕЛИТЬСЯ_ВЕЩЬ_НЕТ_ПОДЕЛИТЬСЯ_UNIT_MEASURE: элемент относится к типу акций и должен иметь единицу измерения xbrli:shares.
  • НОЛЬ_ВЕЩЬ_С_ТОЧНОСТЬ_OR_DECIMALS: элемент равен нулю и не должен иметь ни точности, ни десятичных знаков.
  • ДРОБНАЯ ЧАСТЬ_ВЕЩЬ_С_ТОЧНОСТЬ_OR_DECIMALS: Элемент представляет собой дробный тип и не должен иметь ни точности, ни десятичных знаков.
  • ЦИФРОВОЙ_ВЕЩЬ_С_ОБА_ТОЧНОСТЬ_А ТАКЖЕ_DECIMALS: Элемент является числовым типом и не должен иметь как точность, так и десятичные дроби.
  • ЦИФРОВОЙ_ВЕЩЬ_БЕЗ_ТОЧНОСТЬ_OR_DECIMALS: Элемент является числовым типом и должен иметь точность или десятичные дроби.
  • НЕ_ЦИФРОВОЙ_ВЕЩЬ_С_ТОЧНОСТЬ_ИЛИ ЖЕ_DECIMALS: элемент не является числовым типом и не должен иметь ни точности, ни десятичных знаков.
  • СНОСКА_АРК_ИЗ_НЕТ_НАЙДЕНО: не удалось найти дугу сноски из лок.
  • СНОСКА_АРК_К_НЕТ_НАЙДЕНО: не удалось найти дугу сноски для сноски.
  • ОПРЕДЕЛЕНИЕ_АРК_ИЗ_НЕТ_НАЙДЕНО: Не удалось найти дугу Определения из лок.
  • ОПРЕДЕЛЕНИЕ_АРК_К_НЕТ_НАЙДЕНО: Не удалось найти дугу определения к локации.
  • СУЩНОСТЬ_Псевдоним_ОПРЕДЕЛЕНИЕ_АРК_DIFFERENT_TYPE: дуга определения псевдонима-сущности имеет разные типы.
  • СУЩНОСТЬ_Псевдоним_ОПРЕДЕЛЕНИЕ_АРК_ДРУГОЙ_ПЕРИОД_TYPE: Сущность-псевдоним Дуга определения имеет разные типы periodTypes.
  • СУЩНОСТЬ_Псевдоним_ОПРЕДЕЛЕНИЕ_АРК_DIFFERENT_BALANCE: дуга определения сущности-алиаса имеет разные балансы.
  • РАСЧЕТ_АРК_ИЗ_НЕТ_НАЙДЕНО: невозможно найти расчетную дугу из лок.
  • РАСЧЕТ_АРК_К_НЕТ_ОБНАРУЖЕНО: не удалось найти расчетную дугу для лок.
  • ЭТИКЕТКА_АРК_ИЗ_НЕТ_НАЙДЕНО: Не удалось найти дугу Lable от Loc.
  • ЭТИКЕТКА_АРК_К_НЕТ_НАЙДЕНО: Не удалось найти дугу Lable, ведущую к Loc.
  • ПРЕЗЕНТАЦИЯ_АРК_ИЗ_НЕТ_НАЙДЕНО: не удалось найти дугу презентации из лок.
  • ПРЕЗЕНТАЦИЯ_АРК_К_НЕТ_ОБНАРУЖЕНО: Не удалось найти арку презентации для лок.
  • ССЫЛКА_АРК_ИЗ_НЕТ_НАЙДЕНО: Не удалось найти опорную дугу из лок.
  • ССЫЛКА_АРК_К_НЕТ_НАЙДЕНО: Не удалось найти опорную дугу к локации.

Пример стандартного сообщения об ошибке проверки

дело:изображение_альтернативный_текст

Выше приведен экземпляр XBRL, он определяет контекст «cd1», этот тип периода контекста — продолжительность, его начальная дата — 31 марта 2002 г., дата окончания — 31 марта 2001 г., поэтому дата окончания предшествует дате начала. В спецификации XBRL, глава 4.7.2, определяется правило проверки: «endDate ДОЛЖЕН указывать или подразумевать момент времени, который является более поздним, чем указанный или подразумеваемый момент времени соответствующего startDate». Согласно этому правилу, этот экземпляр XBRL не является допустимым.

Подтвердите XBRL и выведите стандартное сообщение об ошибке

Следующий код проверяет экземпляр XBRL и выводит стандартное сообщение об ошибке.

На следующем изображении показан результат:

дело:изображение_альтернативный_текст