Проверить файлы 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 и выводит стандартное сообщение об ошибке.
На следующем изображении показан результат: