Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 22 Следующий »

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


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

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

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

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

Список опереаторов доступный в контрольных соотношениях :
> - больше
>= - больше либо равно
< - меньше
<= - меньше либо равно
= - равно
!= - не равно
<> - не равно
! - отритцание
& - объединение условий по и
| - объединение условий по или


Функция 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"




Добавляется флаг - ждем Витю

Если в форме не установлено "да" то проверять форму на заполнение

Если в форме установлено "да" то проверять форму на заполнение


Если в форме в ячейке отсутствует показатель и по умолчанию Null, проверить имеет ли форма хоть одно значение. 
if wbsheet.cells(1,1) = "NULL" THEN  
  wbsheet1 = 


Если в форме "SR_Sved_ObOtchOrg_OtvLicza" в ячейке с выпадающем списке  отсутствует показатель и по умолчанию берется Null, то проверить имеет ли форма 0420409 хоть одно значение.

Функция 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

Валидация

 


Примеры


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

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)


  • Нет меток