Описание работы с дополнительными КС


Общие правила для КС

Когда срабатывает дополнительная валидация?

Модуль расширенной валидации выполняется только вместе с основной валидацией.

К каким данным применяется дополнительная валидация

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

Для переменных объявленных в КС, действует правило группировки. Т.е. переменные связанные с показателями открытых осей будут схлопнуться до уровня переменной с минимальным кол-вом измерений.

Операторы + функции

Так же в Кс можно использовать функции. Список доступных функций с описанием доступности (ниже)


Список опереаторов доступный в контрольных соотношениях :

  • > - больше
  • >= - больше либо равно
  • < - меньше
  • <= - меньше либо равно
  • = - равно
  • != - не равно
  • <> - не равно
  • ! - отритцание
  • & - объединение условий по и
  • | - объединение условий по или


Функция fill


fill - функция проверяет существует ли хотя бы одно значение в указанной форме[таблице], если есть значение, функция вернет - истина, иначе ложь.

Параметры вызова :

  • formCode - код формы, в которой нужно проверить наличие значений, обязательно
  • tableCode - код таблицы в форме formCode, в которой нужно проверить наличие значений, не обязательно

Примеры вызов а:

  • fill('formCode') - проверяет наличие хотя бы одного значения во всех таблицы принадлежащих форме formCode
  • fill('formCode', 'tableCode') - проверяет наличие хотя бы одного значения в конкретной форме и таблице принадлежащей этой форме.

Проверить заполнена ли форма "SR_0420409_m"  если в форме "SR_Sved_ObOtchOrg_OtvLicza" не указан признак нулевой отчетности

  1. Название КС (ext_va_) (?) :Validation_FILL_Sved
  2. Форма (?) : SR_Sved_ObOtchOrg_OtvLicza.
  3. Таблица (?) : SR_Sved_ObOtchOrg_OtvLicza.
  4. Описание КС (?) Проверяет на соответствие регулярному выражению значения передаваемого в переменной.
  5. Контрольное выражение (?): (fill('SR_0420409_m') & !in(v1, ['mem-int:ZnachPokOtsMember']) ) || (!fill('SR_0420409_m') && in(v1, ['mem-int:ZnachPokOtsMember']) )
    1. Где:
      1. fill - функция
      2. SR_0420409_m - существует ли хотя бы одно значение в указанной форме
      3. & -  оператор "объединение условий по и"
      4.  !  отрицание
      5. in  - функция - проверяет что значение переменной, соответствует хотя бы одному из значений содержащийся в списке, переданным вторым параметром
      6. v1 - назначаем переменную  в форме  "SR_Sved_ObOtchOrg_OtvLicza=>SR_Sved_ObOtchOrg_OtvLicza=>R__7C__4" где нулевой признак. 
      7. mem-int:ZnachPokOtsMember - т.к "SR_Sved_ObOtchOrg_OtvLicza=>SR_Sved_ObOtchOrg_OtvLicza=>R__7C__4" - это выпадающий список берем его "mem-in"
      8. ||  - объединение условий по или
    2. Т.е мы видим две части выражения через условие || (или)
      1. Первая часть:  (fill('SR_0420409_m') & !in(v1, ['mem-int:ZnachPokOtsMember']) )
      2. Вторая часть: !fill('SR_0420409_m') && in(v1, ['mem-int:ZnachPokOtsMember']) 
      3. Если в SR_0420409_m форме нет значений и в форме "SR_Sved_ObOtchOrg_OtvLicza=>R__7C__4"  не установлен признак нулевой отечности   - То сработает КС и будет выведена "Ошибка"
      4. Если в SR_0420409_m форме нет значений и в форме "SR_Sved_ObOtchOrg_OtvLicza=>R__7C__4" установлен признак нулевой отечности   - То  тест КС будет успешным
      5. Если в SR_0420409_m форме есть значения и в форме "SR_Sved_ObOtchOrg_OtvLicza=>R__7C__4" не установлен признак нулевой отечности   - То  тест КС будет успешным.
      6. Если в SR_0420409_m форме есть значения и  в форме "SR_Sved_ObOtchOrg_OtvLicza=>R__7C__4"  установлен признак нулевой отечности   - То сработает КС и будет выведена "Ошибка"
    3. Форма не заполнена
  6. № п/п    Название переменной: Выбрали монетарную ячейку v1 = "SR_Sved_ObOtchOrg_OtvLicza=>SR_Sved_ObOtchOrg_OtvLicza=>R__7C__4"

Валидация 

Если в SR_0420409_m форме нет значений и в форме "SR_Sved_ObOtchOrg_OtvLicza=>R__7C__4"  не установлен признак нулевой отечности   - То сработает КС и будет выведена "Ошибка"


Функция match


match - проверяет на соответствие регулярному выражению значения передаваемого в переменной.

Параметры вызова :

  • Expression - регулярное выражение(можно использовать любое, мы рассмотрим на примере '^\d+(\.\d+)?$' )
  • varName - имя переменной

Примеры вызова:
match('^\d+(\.\d+)?$', varName) - проверяем, что в переменной varName, записано именно число, возможно дробное, но точно не отрицательное.

  1. Название КС (ext_va_) (?) : Validation_match.
  2. Форма (?) : FR_2_001_01c_01.
  3. Таблица (?) : FR_2_001_01c_01.
  4. Описание КС (?) Проверяет на соответствие регулярному выражению значения передаваемого в переменной.
  5. Контрольное выражение (?): match('^\d+(\.\d+)?$', V1)
  6. Сообщение об ошибке (?):  Ошибка.
  7. № п/п    Название переменной: Выбрали монетарную ячейку "FR_2_001_01c_01=>FR_2_001_01c_01=>R__6C__3"
  8. Присвоили переменную: v1



Валидация:



Т.к в ячейке занесено отрицательное число (-1), то сработал наш контроль.



Функция in


in - проверяет что значение переменной, соответствует хотя бы одному из значений содержащийся в списке, переданным вторым параметром

Параметры вызова :

  • varName - имя переменной.
  • listValues - список допустимых значений.

Примеры вызова:

  • in(varName, ['mem-int:Strana_004AfgAfganistanMember', 'mem-int:Strana_008AlbAlbaniyaMember', 'mem-int:Strana_010AtaAntarktidaMember']) - проверяем, что в переменной записана страна из допустимого списка

Пример в XBRLCA

  1. Название КС (ext_va_) (?) : Validation_IN
  2. Форма (?) : FR_1_001_01c_01
  3. Таблица (?) : FR_1_001_01c_01
  4. Описание КС (?) проверяет что значение переменной, соответствует хотя бы одному из значений содержащийся в списке, переданным вторым параметром
  5. Контрольное выражение (?): in(v1, ['mem-int:VTysyachaxRossijskixRublejMember'])
  6. Сообщение об ошибке (?):  Ошибка.
  7. № п/п  Название переменной:  Выбрали монетарную ячейку "FR_2_001_01c_01=>FR_2_001_01c_01=>R__6C__3"
  8. Присвоили переменную: v1




Функция floor


floor - округляет значение к наименшему целому, т.е.

  • floor(5.2) = 5
  • floor(5.8) = 5

Параметры вызова :

  • varName - имя переменной, обязательно

Примеры вызова:

  • floor(varName) - где varName содержит значение показателя монетарного/дробного/целочисленного/процентного типа
  1. Название КС (ext_va_) (?) : Validation_floor
  2. Форма (?) : FR_2_001_01c_01.
  3. Таблица (?) : FR_2_001_01c_01.
  4. Описание КС (?) округляет значение к наименьшему целому
  5. Контрольное выражение (?):floor(v1) = 5 ( КС сработает т.к  в ячейке указано значение "4.55"  с помощью функции floor округлится до 4.00 и не будет равняться  5)
  6. Сообщение об ошибке (?):  Ошибка.
  7. № п/п    Название переменной: Выбрали монетарную ячейку
  8. v1 = "FR_2_001_01c_01=>FR_2_001_01c_01=>R__6C__3"


Валидация


КС сработает т.к  в ячейке указано значение "4.55"  с помощью функции floor округлится до 4.00 и не будет равняться  5)




Функция ceil


ceil - округляет значение к наибольшему целому, т.е.

  • ceil(5.2) = 6
  • ceil(5.8) = 6

Параметры вызова :

  • varName - имя переменной, обязательно

Примеры вызова:
ceil(varName) - где varName содержит значение показателя монетарного/дробного/целочисленного/процентного типа

  1. Название КС (ext_va_) (?) : Validation_ceil
  2. Форма (?) : FR_2_001_01c_01.
  3. Таблица (?) : FR_2_001_01c_01.
  4. Описание КС (?) округляет значение к наибольшему целому.
  5. Контрольное выражение (?):ceil(v1) = 6 ( КС сработает т.к  в ячейке указано значение "4.33"  с помощью функции ceil округлится до 5.00 и не будет равняться  6)
  6. Сообщение об ошибке (?):  Ошибка.
  7. № п/п    Название переменной: Выбрали монетарную ячейку v1 = "FR_2_001_01c_01=>FR_2_001_01c_01=>R__6C__3"

Валидация


  1. КС сработает т.к  в ячейке указано значение "4.33"  с помощью функции ceil округлится до 5.00 и не будет равняться  6)

1




Функция round



round - округляет значение с заданной точностью, если точность не задана, округляет до 2-х знаков после точки

Параметры вызова :

  • varName - имя переменной, обязательно
  • precision - точность, не обязательно, по умолчанию = 2

Примеры вызова

  • round(varName, 4) - где varName содержит значение показателя монетарного/дробного/целочисленного/процентного типа,  а "4" округление до 4 знаков.
  1. Название КС (ext_va_) (?) : Validation_round
  2. Форма (?) : FR_2_001_01c_01.
  3. Таблица (?) : FR_2_001_01c_01.
  4. Описание КС (?) округляет значение к наибольшему целому.
  5. Контрольное выражение (?): itog = round(v1+v2+v3,0)
    1. Где:
      1. itog = 5
      2. v1 =1.14
      3. v2 = 3.33
      4. v3 = 1.21
      5. ,0 = округление до целого числа
    2. ( КС сработает т.к  сумма ячеек v1+v2+v3 = 5.68 и округляется по математическому правилу до 6.00 и 6.00 ни как не равно itog(5) 
  6. Сообщение об ошибке (?):  Ошибка.
  7. № п/п  Название переменной: Выбрали монетарную ячейку:
    1. itog = FR_2_001_01c_01=>FR_2_001_01c_01=>R__6C__3
    2. v1 = FR_2_001_01c_01=>FR_2_001_01c_01=>R__5C__3
    3. v2 = FR_2_001_01c_01=>FR_2_001_01c_01=>R__4C__3
    4. v3 = FR_2_001_01c_01=>FR_2_001_01c_01=>R__3C__3

Валидация

 



Функция dim

dim - получает значения определенного измерения в факте

Параметры вызова :

  • varName - имя переменной, обязательно
  • dimName-  название измерения, обязательно

Примеры вызова

  • dim(varName, 'dim-int:ID_CzennojBumagiTaxis') =varName - где varName является выходом из отчета xbrl, если требуемое измерение у факта отсутствует, выдается ошибка.

Если показатель «Идентификатор ценной бумаги, лежащей в основе депозитарной расписки» заполнен, то значение по данному показателю должно соответствовать той же строке формы 0420459 с идентификатором «Идентификатор ценной бумаги», значение которого соответствует значению по показателю «Идентификатор ценной бумаги, лежащей в основе депозитарной расписки».

  1. Название КС (ext_va_) (?) : 0420459_Id
  2. Форма (?) :SR_0420459
  3. Таблица (?) :SR_0420459
  4. Описание КС (?) Если показатель «Идентификатор ценной бумаги, лежащей в основе депозитарной расписки» заполнен, то значение по данному показателю должно соответствовать  строке формы 0420459 с идентификатором «Идентификатор ценной бумаги», значение которого соответствует значению по показателю «Идентификатор ценной бумаги, лежащей в основе депозитарной расписки».
  5.  Контрольное выражение (?): dim(v1, 'dim-int:ID_CzennojBumagiTaxis') =v1
    1. Где:
      1. v1= указанный показатель в таблице 0420459 "Идентификатор ценной бумаги, лежащей в основе депозитарной расписки"
        1. dim-int:ID_CzennojBumagiTaxis = это значение идентификатора 
    2. ( КС сработает т.к  в ячейке "Идентификатор ценной бумаги, лежащей в основе депозитарной расписки" указано значение "id_2", а в идентификаторе указано "id_1"
  6. Сообщение об ошибке (?):  Ошибка.
  7. № п/п  Название переменной: Выбрали монетарную ячейку:
    1. v1 = SR_0420459=>SR_0420459=>RA__1C__14




Функция existDimVal


existDimVak -  проверяет наличие фактов (хотя бы одного) с определенным значением конкретного измерения в заданной форме/таблице.

Параметры вызова :

  • dimName - название измерения, обязательно.
  • var - название переменной из которой брать значение, обязательно.
  • formCode - код формы, в которой нужно проверить наличие значений, обязательно.
  • tableCode - код таблицы в форме formCode, в которой нужно проверить наличие значений, не обязательно.

Примеры вызова

  • existDimVal('dim-int:ID_CzennojBumagiTaxis', v1, 'SR_0420459', 'SR_0420459') - где v1 является фактом из отчета xbrl, если факты с определенным значением конкретного измерения в заданной форме/таблице отсутствуют, выдается ошибка.

Если показатель «Идентификатор ценной бумаги, лежащей в основе депозитарной расписки» заполнен, то значение по данному показателю должно соответствовать  любой строке формы 0420459 лист 0420459 с идентификатором «Идентификатор ценной бумаги», значение которого соответствует значению по показателю «Идентификатор ценной бумаги, лежащей в основе депозитарной расписки».

  1. Название КС (ext_va_) (?) : 0420459_Id_cen_bumag
  2. Форма (?) :SR_0420459
  3. Таблица (?) :SR_0420459
  4. Описание КС (?) Если показатель «Идентификатор ценной бумаги, лежащей в основе депозитарной расписки» заполнен, то значение по данному показателю должно соответствовать  строке формы 0420459 с идентификатором «Идентификатор ценной бумаги», значение которого соответствует значению по показателю «Идентификатор ценной бумаги, лежащей в основе депозитарной расписки».
  5.  Контрольное выражение (?): existDimVal('dim-int:ID_CzennojBumagiTaxis', v1, 'SR_0420459', 'SR_0420459')
    1. Где:
      1. v1указанный показатель в таблице 0420459 "Идентификатор ценной бумаги, лежащей в основе депозитарной расписки"
        1. dim-int:ID_CzennojBumagiTaxis= это значение идентификатора 
    2. ( КС сработает в том случае если в показателе "ценной бумаги, лежащей в основе депозитарной расписки" будет указано значение, которого нет ни в одной строке указанным в идентификаторе отрытой оси.
  6. Сообщение об ошибке (?):  Ошибка.
  7. № п/п  Название переменной: Выбрали монетарную ячейку:
    1. v1 = SR_0420459=>SR_0420459=>RA__1C__14



Примеры


Простое математическое не равенство

var1 + var2 > var3 - var4
Простое математическое равенство с использованием функции
var1 + var2 > round(var3 - var4)
Группировка условий с использованием оператора & (и). Такое КС истинно когда есть значение в var3 и выполняется неравенство var1 + var 5 < var7
(var1 + var 5 < var7) & match('.+', var3)
Группировка условий с использованием оператора | (или). Такое КС истинно когда есть значение в var3 или выполняется неравенство var1 + var 5 < var7
(var1 + var 5 < var7) | match('.+', var3)


  • Нет меток