[DEFINE]
;глобальнные константы (имена заранее определены, тип определяется именем)
$MCName = "200116-100337-00000003.scanned"
$MCType = 2
$MCode = "001012345678912992100000000W910bad924Nu8bdv/ikQ4OnqmHexAAuQ3bJce3CyDrH1qHQ/jB/+Pa4zgYsRLuSmSRuCQGrU3F3t27Oo+39E3UOcExSdSiw=="
;глобальнные переменные (имена произвольные, тип определяется первым символом имени (I - целое, S - стьрока, D - дата, F - с плав точкой)
ICOUNT_1059_2101 = 0
ICOUNT_1059_1270 = 0
DATE_DOC_1012 = 0
;SVAL_1005
;SVAL_1016
;SVAL_1026
;SVAL_1044
;SVAL_1073
;SVAL_1074
;SVAL_1075
;SVAL_1171


[Rules_00001]
Rule02="SETNEED 1"
Rule03="IF TLV_1001==1; SETNEED 1; ELSE; SETNEED 0; ENDIF"
Rule04="IF TLV_1002==0; SETNEED 1; ELSE; SETNEED 3; ENDIF; IF $CurCode==1017 && TLV_1002==1 && ISPRESENT(TLV_1017) && TLV_1017 != 000000000000; SETMESSAGE "Реквизит (тег 1017) должен иметь значение 000000000000"; ENDIF"
Rule05="IF Value>=0 && Value<=63; ELSE; SETMESSAGE "Реквизит (тег 1062) имеет недопустимое значение"; ENDIF"
Rule06="IF TLV_1001==1; SETNEED 1; ELSE; SETNEED 3; ENDIF"
Rule07="IF TLV_1002==1; SETNEED TLV_1046 3; ELSE; SETNEED TLV_1046 1; IF TLV_1002==1 && TLV_1056==1; SETMESSAGE "Реквизит (тег 1056) не может принимать значение 1"; ENDIF"
Rule09="IF Value != 1; SETMESSAGE "Реквизит (тег 1040) не может принимать значение отличное от 1""
Rule11="IF TLV_1002==1; SETNEED 0; ELSE; SETNEED 1; ENDIF"
Rule12="SETNEED 1"
Rule13="SETNEED 1"
Rule14="SETNEED 1"

[Rules_00011]
Rule02="SETNEED 1"
Rule03="IF TLV_1001==1; SETNEED 1; ELSE; SETNEED 0; ENDIF"
Rule04="IF TLV_1002==0; SETNEED 1; ELSE; SETNEED 3; ENDIF; IF $CurCode==1017 && TLV_1002==1 && ISPRESENT(TLV_1017) && TLV_1017 != 000000000000; SETMESSAGE "Реквизит (тег 1017) должен иметь значение 000000000000"; ENDIF"
Rule05="IF Value>=0 && Value<=63; ELSE; SETMESSAGE "Реквизит (тег 1062) имеет недопустимое значение"; ENDIF"
Rule06="IF TLV_1001==1; SETNEED 1; ELSE; SETNEED 3; ENDIF"
Rule07="IF TLV_1002==1; SETNEED TLV_1046 3; ELSE; SETNEED TLV_1046 1; IF TLV_1002==1 && TLV_1056==1; SETMESSAGE "Реквизит (тег 1056) не может принимать значение 1"; ENDIF"
Rule09="IF Value != 1; SETMESSAGE "Реквизит (тег 1040) не может принимать значение отличное от 1""
Rule11="IF TLV_1002==1; SETNEED 0; ELSE; SETNEED 1; ENDIF"
Rule12="SETNEED 1"
Rule13="SETNEED 1"
Rule14="SETNEED 1"
Rule15="IF TLV_1205==1; SETNEED 0; ELSE; SETNEED 1; ENDIF"

[Rules_00002]
Rule01="SETNEED 3"
Rule03="SETNEED 1"
;Rule04="IF REG$TLV_1001==1 || REG$TLV_1009==1; SETNEED 1; ELSE; SETNEED 0; ENDIF "
Rule05="IF TLV_1001==1; SETNEED 0; ELSE; SETNEED 1; ENDIF"

[Rules_00021]
Rule01="IF $SessOpened; SETNEED 1; ELSE; SETNEED 0; ENDIF"
Rule02="IF ISPRESENT(TLV_1002); TLV_1002=1; ELSE; SETNEED TLV_1116 1; SETNEED TLV_1097 1; SETNEED TLV_1098 1; SETNEED TLV_1158 1; ENDIF"
Rule04="SETNEED 1"

[Rules_00003]
;код инициализации для данной структуры
Init="ICOUNT_1059_2101=0; ICOUNT_1059_1270=0"
;General="SHOWMESSAGE "Структура - чек, завершение, текущие значение ICOUNT_1059_2101 и ICOUNT_1059_1270 - $, $" ICOUNT_1059_2101 ICOUNT_1059_1270"
Rule01="IF FSUM(TLV_1031, TLV_1081, TLV_1215, TLV_1216, TLV_1217) != TLV_1020; SETMESSAGE "Сумма значений реквизитов (тег 1031), (тег 1081), (тег 1215), (тег 1216) и (тег 1217) не равна значению реквизита (тег 1020)"; ENDIF"
;правило 2 пока не реализую - оно описано, странно указанных реквизитов вообще нет в описании структуры 1059 - задать вопрос!
;Rule02=""
Rule03="IF REG$TLV_1002==1; SETNEED 0; ELSE; SETNEED 1; ENDIF"
Rule04="IF REG$TLV_1002==1; SETNEED 1; ENDIF"
;правило 5 странное, т.к поля 1043 в списке нет - задать вопрос
Rule05="IF ICOUNT(TLV_1043) > 1 && FSUM(TLV_1043) != Value; SETMESSAGE "Сумма значений реквизитов (тег 1043) не равна значению реквизита (тег 1020))"; ENDIF"
Rule06="IF ISNOTPRESENT(TLV_1102) && ISNOTPRESENT(TLV_1103) && ISNOTPRESENT(TLV_1104) && ISNOTPRESENT(TLV_1105) && ISNOTPRESENT(TLV_1106) && ISNOTPRESENT(TLV_1107); SETMESSAGE "Документ должен содержать хотя ,ы один реквизит: (тег 1102),(тег 1103),(тег 1104),(тег 1105),(тег 1106),(тег 1107)"; ENDIF"
Rule08="IF REG$TLV_1108==1; SETNEED 1; ENDIF"
Rule10="IF REG$TLV_1002==0 && ISNOTPRESENT(REG$TLV_1048); SETNEED TLV_1048 1; ELSE SETNEED TLV_1048 0; ENDIF; IF REG$TLV_1002==0 && ISNOTPRESENT(REG$TLV_1018); SETNEED TLV_1018 1; ELSE; SETNEED TLV_1018 0; ENDIF; IF REG$TLV_1002==0 && ISNOTPRESENT(REG$TLV_1060); SETNEED TLV_1060 1; ELSE; SETNEED TLV_1060 0; ENDIF; IF REG$TLV_1002==0 && ISNOTPRESENT(REG$TLV_1017); SETNEED TLV_1017 1; ELSE; SETNEED TLV_1017 0; ENDIF; IF REG$TLV_1002==0 && ISNOTPRESENT(REG$TLV_1036); SETNEED TLV_1036 1; ELSE; SETNEED TLV_1036 0; ENDIF; IF REG$TLV_1002==0 && ISNOTPRESENT(REG$TLV_1009); SETNEED TLV_1009 1; ELSE; SETNEED TLV_1009 3; ENDIF; IF REG$TLV_1002==0 && ISNOTPRESENT(REG$TLV_1187); SETNEED TLV_1187 1; ELSE; SETNEED TLV_1187 0; ENDIF"
;вообще то правило 13 не нужно оно дублирует признак ДОПУСТИМОСТЬ ПОВТОРА
Rule13="IF ICOUNT(TLV_1054) > 1; SETMESSAGE "Документ содержит более 1 реквизита (тег 1054)"; ENDIF"
Rule18="IF REG$TLV_1101==1; SETNEED 3; ELSE; SETNEED 1; ENDIF"
;похоже в самой таблице вместо примечания 21 для реквизита  2107 должно быть 22  - задать вопрос
Rule22="IF ICOUNT_1059_2101 > 1; SETNEED 1; ELSE; SETNEED 0; ENDIF"
;Rule22="IF ICOUNT_1059_2101 > 1; SHOWMESSAGE "ЖОПА 2101"; ENDIF"
;скобки в IF не работает поэтому пишу так много отдельных выражений
;правило 24 25 невозможно реализовать - тик КМ не известен при разборе структуры 00003
;Rule24="IF ISPRESENT(TLV_2106,TLV_2100) && TLV_2102==2 && TLV_2100==0; SETNEED 3; ELSE SETNEED 1; ENDIF;IF ISPRESENT(TLV_2106,TLV_2100) && TLV_2102==2 && TLV_2100>=1 && TLV_2100<=5 && IBITVAL(0, TLV_2106)==0; SETNEED 3; ELSE SETNEED 1; ENDIF;IF ISPRESENT(TLV_2106,TLV_2100) && TLV_2102==2 && TLV_2100>=1 && TLV_2100<=5 && IBITVAL(1, TLV_2106)==0; SETNEED 3; ELSE SETNEED 1; ENDIF;IF ISPRESENT(TLV_2106,TLV_2100) && TLV_2102==2 && TLV_2100>=1 && TLV_2100<=5 && IBITVAL(2, TLV_2106)==1 && IBITVAL(3, TLV_2106)==0; SETNEED 3; ELSE SETNEED 1; ENDIF;IF ISPRESENT(TLV_2106,TLV_2100) && TLV_2102==2 && TLV_2100>=1 && TLV_2100<=5 && IBITVAL(2, TLV_2106)==1 && TLV_2109==2; SETNEED 3; ELSE SETNEED 1; ENDIF;IF ISPRESENT(TLV_2106,TLV_2100) && TLV_2102==2 && TLV_2100>=1 && TLV_2100<=5 && IBITVAL(2, TLV_2106)==1 && TLV_2109==3; SETNEED 3; ELSE SETNEED 1; ENDIF;"
;Rule25="IF ISPRESENT(TLV_2106,TLV_2100) && TLV_2102==3 && TLV_2100==0; SETNEED 3; ELSE SETNEED 1; ENDIF;IF ISPRESENT(TLV_2106,TLV_2100) && TLV_2102==3 && TLV_2100>=1 && TLV_2100<=5 && IBITVAL(0, TLV_2106)==0; SETNEED 3; ELSE SETNEED 1; ENDIF;IF ISPRESENT(TLV_2106,TLV_2100) && TLV_2102==3 && TLV_2100>=1 && TLV_2100<=5 && IBITVAL(1, TLV_2106)==0; SETNEED 3; ELSE SETNEED 1; ENDIF;IF ISPRESENT(TLV_2106,TLV_2100) && TLV_2102==3 && TLV_2100>=1 && TLV_2100<=5 && IBITVAL(3, TLV_2106)==0; SETNEED 3; ELSE SETNEED 1; ENDIF;IF ISPRESENT(TLV_2106,TLV_2100) && TLV_2102==3 && TLV_2100>=1 && TLV_2100<=5 && TLV_2109==2; SETNEED 3; ELSE SETNEED 1; ENDIF;IF ISPRESENT(TLV_2106,TLV_2100) && TLV_2102==3 && TLV_2100>=1 && TLV_2100<=5 && TLV_2109==3; SETNEED 3; ELSE SETNEED 1; ENDIF;"
Rule27="IF ICOUNT_1059_1270 > 10; SETMESSAGE "Документ содержит более 10 реквизитов (тег 1059)"; ENDIF"


[Rules_00031]
;код инициализации для данной структуры
Init="ICOUNT_1059_2101=0; DATE_DOC_1012 = TLV_1012"
;General="DATE_DOC_1012 = TLV_1012"
Rule01="IF FSUM(TLV_1031, TLV_1081, TLV_1215, TLV_1216, TLV_1217) != TLV_1020; SETMESSAGE "Сумма значений реквизитов (тег 1031), (тег 1081), (тег 1215), (тег 1216) и (тег 1217) не равна значению реквизита (тег 1020)"; ENDIF"
;правило 2 пока не реализую - оно описано, странно указанных реквизитов вообще нет в описании структуры 1059 - задать вопрос!
;Rule02=""
Rule03="IF REG$TLV_1002==1; SETNEED 0; ELSE; SETNEED 1; ENDIF"
Rule04="IF REG$TLV_1002==1; SETNEED 1; ENDIF"
;правило 5 странное, т.к поля 1043 в списке нет - задать вопрос
Rule05="IF ICOUNT(TLV_1043) > 1 && FSUM(TLV_1043) != Value; SETMESSAGE "Сумма значений реквизитов (тег 1043) не равна значению реквизита (тег 1020))"; ENDIF"
Rule06="IF ISNOTPRESENT(TLV_1102) && ISNOTPRESENT(TLV_1103) && ISNOTPRESENT(TLV_1104) && ISNOTPRESENT(TLV_1105) && ISNOTPRESENT(TLV_1106) && ISNOTPRESENT(TLV_1107); SETMESSAGE "Документ должен содержать хотя ,ы один реквизит: (тег 1102),(тег 1103),(тег 1104),(тег 1105),(тег 1106),(тег 1107)"; ENDIF"
Rule08="IF REG$TLV_1108==1; SETNEED 1; ENDIF"
Rule10="IF REG$TLV_1002==0 && ISNOTPRESENT(REG$TLV_1048); SETNEED TLV_1048 1; ELSE SETNEED TLV_1048 0; ENDIF; IF REG$TLV_1002==0 && ISNOTPRESENT(REG$TLV_1018); SETNEED TLV_1018 1; ELSE; SETNEED TLV_1018 0; ENDIF; IF REG$TLV_1002==0 && ISNOTPRESENT(REG$TLV_1060); SETNEED TLV_1060 1; ELSE; SETNEED TLV_1060 0; ENDIF; IF REG$TLV_1002==0 && ISNOTPRESENT(REG$TLV_1017); SETNEED TLV_1017 1; ELSE; SETNEED TLV_1017 0; ENDIF; IF REG$TLV_1002==0 && ISNOTPRESENT(REG$TLV_1036); SETNEED TLV_1036 1; ELSE; SETNEED TLV_1036 0; ENDIF; IF REG$TLV_1002==0 && ISNOTPRESENT(REG$TLV_1009); SETNEED TLV_1009 1; ELSE; SETNEED TLV_1009 3; ENDIF; IF REG$TLV_1002==0 && ISNOTPRESENT(REG$TLV_1187); SETNEED TLV_1187 1; ELSE; SETNEED TLV_1187 0; ENDIF"
;вообще то правило 13 не нужно оно дублирует признак ДОПУСТИМОСТЬ ПОВТОРА
Rule13="IF ICOUNT(TLV_1054) > 1; SETMESSAGE "Документ содержит более 1 реквизита (тег 1054)"; ENDIF"
;правило 17 возможно ли и нужно ли - задать вопрос!
;Rule17=""
Rule18="IF Value==0 || Value==2; ELSE; SETMESSAGE "Реквизит (тег 1173) имеет недопустимое значение"; ENDIF"
Rule21="IF ICOUNT_1059_2101 > 1; SETNEED 1; ELSE; SETNEED 0; ENDIF"


[Rules_00004]
;код инициализации для данной структуры
Init="ICOUNT_1059_2101=0; ICOUNT_1059_1270=0"
;General="SHOWMESSAGE "Структура - чек, завершение, текущие значение ICOUNT_1059_2101 и ICOUNT_1059_1270 - $, $" ICOUNT_1059_2101 ICOUNT_1059_1270"
Rule01="IF FSUM(TLV_1031, TLV_1081, TLV_1215, TLV_1216, TLV_1217) != TLV_1020; SETMESSAGE "Сумма значений реквизитов (тег 1031), (тег 1081), (тег 1215), (тег 1216) и (тег 1217) не равна значению реквизита (тег 1020)"; ENDIF"
;правило 2 пока не реализую - оно описано, странно указанных реквизитов вообще нет в описании структуры 1059 - задать вопрос!
;Rule02=""
Rule03="IF REG$TLV_1002==1; SETNEED 0; ELSE; SETNEED 1; ENDIF"
Rule04="IF REG$TLV_1002==1; SETNEED 1; ENDIF"
;правило 5 странное, т.к поля 1043 в списке нет - задать вопрос
Rule05="IF ICOUNT(TLV_1043) > 1 && FSUM(TLV_1043) != Value; SETMESSAGE "Сумма значений реквизитов (тег 1043) не равна значению реквизита (тег 1020))"; ENDIF"
Rule06="IF ISNOTPRESENT(TLV_1102) && ISNOTPRESENT(TLV_1103) && ISNOTPRESENT(TLV_1104) && ISNOTPRESENT(TLV_1105) && ISNOTPRESENT(TLV_1106) && ISNOTPRESENT(TLV_1107); SETMESSAGE "Документ должен содержать хотя ,ы один реквизит: (тег 1102),(тег 1103),(тег 1104),(тег 1105),(тег 1106),(тег 1107)"; ENDIF"
Rule08="IF REG$TLV_1108==1; SETNEED 1; ENDIF"
Rule10="IF REG$TLV_1002==0 && ISNOTPRESENT(REG$TLV_1048); SETNEED TLV_1048 1; ELSE SETNEED TLV_1048 0; ENDIF; IF REG$TLV_1002==0 && ISNOTPRESENT(REG$TLV_1018); SETNEED TLV_1018 1; ELSE; SETNEED TLV_1018 0; ENDIF; IF REG$TLV_1002==0 && ISNOTPRESENT(REG$TLV_1060); SETNEED TLV_1060 1; ELSE; SETNEED TLV_1060 0; ENDIF; IF REG$TLV_1002==0 && ISNOTPRESENT(REG$TLV_1017); SETNEED TLV_1017 1; ELSE; SETNEED TLV_1017 0; ENDIF; IF REG$TLV_1002==0 && ISNOTPRESENT(REG$TLV_1036); SETNEED TLV_1036 1; ELSE; SETNEED TLV_1036 0; ENDIF; IF REG$TLV_1002==0 && ISNOTPRESENT(REG$TLV_1009); SETNEED TLV_1009 1; ELSE; SETNEED TLV_1009 3; ENDIF; IF REG$TLV_1002==0 && ISNOTPRESENT(REG$TLV_1187); SETNEED TLV_1187 1; ELSE; SETNEED TLV_1187 0; ENDIF"
;вообще то правило 13 не нужно оно дублирует признак ДОПУСТИМОСТЬ ПОВТОРА
Rule13="IF ICOUNT(TLV_1054) > 1; SETMESSAGE "Документ содержит более 1 реквизита (тег 1054)"; ENDIF"
Rule18="IF REG$TLV_1101==1; SETNEED 3; ELSE; SETNEED 1; ENDIF"
;похоже в самой таблице вместо примечания 21 для реквизита  2107 должно быть 22  - задать вопрос
Rule22="IF ICOUNT_1059_2101 > 1; SETNEED 1; ELSE; SETNEED 0; ENDIF"
;Rule22="IF ICOUNT_1059_2101 > 1; SHOWMESSAGE "ЖОПА 2101"; ENDIF"
;скобки в IF не работает поэтому пишу так много отдельных выражений
;правило 24 25 невозможно реализовать - тик КМ не известен при разборе структуры 00003
;Rule24="IF ISPRESENT(TLV_2106,TLV_2100) && TLV_2102==2 && TLV_2100==0; SETNEED 3; ELSE SETNEED 1; ENDIF;IF ISPRESENT(TLV_2106,TLV_2100) && TLV_2102==2 && TLV_2100>=1 && TLV_2100<=5 && IBITVAL(0, TLV_2106)==0; SETNEED 3; ELSE SETNEED 1; ENDIF;IF ISPRESENT(TLV_2106,TLV_2100) && TLV_2102==2 && TLV_2100>=1 && TLV_2100<=5 && IBITVAL(1, TLV_2106)==0; SETNEED 3; ELSE SETNEED 1; ENDIF;IF ISPRESENT(TLV_2106,TLV_2100) && TLV_2102==2 && TLV_2100>=1 && TLV_2100<=5 && IBITVAL(2, TLV_2106)==1 && IBITVAL(3, TLV_2106)==0; SETNEED 3; ELSE SETNEED 1; ENDIF;IF ISPRESENT(TLV_2106,TLV_2100) && TLV_2102==2 && TLV_2100>=1 && TLV_2100<=5 && IBITVAL(2, TLV_2106)==1 && TLV_2109==2; SETNEED 3; ELSE SETNEED 1; ENDIF;IF ISPRESENT(TLV_2106,TLV_2100) && TLV_2102==2 && TLV_2100>=1 && TLV_2100<=5 && IBITVAL(2, TLV_2106)==1 && TLV_2109==3; SETNEED 3; ELSE SETNEED 1; ENDIF;"
;Rule25="IF ISPRESENT(TLV_2106,TLV_2100) && TLV_2102==3 && TLV_2100==0; SETNEED 3; ELSE SETNEED 1; ENDIF;IF ISPRESENT(TLV_2106,TLV_2100) && TLV_2102==3 && TLV_2100>=1 && TLV_2100<=5 && IBITVAL(0, TLV_2106)==0; SETNEED 3; ELSE SETNEED 1; ENDIF;IF ISPRESENT(TLV_2106,TLV_2100) && TLV_2102==3 && TLV_2100>=1 && TLV_2100<=5 && IBITVAL(1, TLV_2106)==0; SETNEED 3; ELSE SETNEED 1; ENDIF;IF ISPRESENT(TLV_2106,TLV_2100) && TLV_2102==3 && TLV_2100>=1 && TLV_2100<=5 && IBITVAL(3, TLV_2106)==0; SETNEED 3; ELSE SETNEED 1; ENDIF;IF ISPRESENT(TLV_2106,TLV_2100) && TLV_2102==3 && TLV_2100>=1 && TLV_2100<=5 && TLV_2109==2; SETNEED 3; ELSE SETNEED 1; ENDIF;IF ISPRESENT(TLV_2106,TLV_2100) && TLV_2102==3 && TLV_2100>=1 && TLV_2100<=5 && TLV_2109==3; SETNEED 3; ELSE SETNEED 1; ENDIF;"
Rule27="IF ICOUNT_1059_1270 > 10; SETMESSAGE "Документ содержит более 10 реквизитов (тег 1059)"; ENDIF"

[Rules_00041]
;код инициализации для данной структуры
Init="ICOUNT_1059_2101=0; DATE_DOC_1012 = TLV_1012"
Rule01="IF FSUM(TLV_1031, TLV_1081, TLV_1215, TLV_1216, TLV_1217) != TLV_1020; SETMESSAGE "Сумма значений реквизитов (тег 1031), (тег 1081), (тег 1215), (тег 1216) и (тег 1217) не равна значению реквизита (тег 1020)"; ENDIF"
;правило 2 пока не реализую - оно описано, странно указанных реквизитов вообще нет в описании структуры 1059 - задать вопрос!
;Rule02=""
Rule03="IF REG$TLV_1002==1; SETNEED 0; ELSE; SETNEED 1; ENDIF"
Rule04="IF REG$TLV_1002==1; SETNEED 1; ENDIF"
;правило 5 странное, т.к поля 1043 в списке нет - задать вопрос
Rule05="IF ICOUNT(TLV_1043) > 1 && FSUM(TLV_1043) != Value; SETMESSAGE "Сумма значений реквизитов (тег 1043) не равна значению реквизита (тег 1020))"; ENDIF"
Rule06="IF ISNOTPRESENT(TLV_1102) && ISNOTPRESENT(TLV_1103) && ISNOTPRESENT(TLV_1104) && ISNOTPRESENT(TLV_1105) && ISNOTPRESENT(TLV_1106) && ISNOTPRESENT(TLV_1107); SETMESSAGE "Документ должен содержать хотя ,ы один реквизит: (тег 1102),(тег 1103),(тег 1104),(тег 1105),(тег 1106),(тег 1107)"; ENDIF"
Rule08="IF REG$TLV_1108==1; SETNEED 1; ENDIF"
Rule10="IF REG$TLV_1002==0 && ISNOTPRESENT(REG$TLV_1048); SETNEED TLV_1048 1; ELSE SETNEED TLV_1048 0; ENDIF; IF REG$TLV_1002==0 && ISNOTPRESENT(REG$TLV_1018); SETNEED TLV_1018 1; ELSE; SETNEED TLV_1018 0; ENDIF; IF REG$TLV_1002==0 && ISNOTPRESENT(REG$TLV_1060); SETNEED TLV_1060 1; ELSE; SETNEED TLV_1060 0; ENDIF; IF REG$TLV_1002==0 && ISNOTPRESENT(REG$TLV_1017); SETNEED TLV_1017 1; ELSE; SETNEED TLV_1017 0; ENDIF; IF REG$TLV_1002==0 && ISNOTPRESENT(REG$TLV_1036); SETNEED TLV_1036 1; ELSE; SETNEED TLV_1036 0; ENDIF; IF REG$TLV_1002==0 && ISNOTPRESENT(REG$TLV_1009); SETNEED TLV_1009 1; ELSE; SETNEED TLV_1009 3; ENDIF; IF REG$TLV_1002==0 && ISNOTPRESENT(REG$TLV_1187); SETNEED TLV_1187 1; ELSE; SETNEED TLV_1187 0; ENDIF"
;вообще то правило 13 не нужно оно дублирует признак ДОПУСТИМОСТЬ ПОВТОРА
Rule13="IF ICOUNT(TLV_1054) > 1; SETMESSAGE "Документ содержит более 1 реквизита (тег 1054)"; ENDIF"
;правило 17 возможно ли и нужно ли - задать вопрос!
;Rule17=""
Rule18="IF Value==0 || Value==2; ELSE; SETMESSAGE "Реквизит (тег 1173) имеет недопустимое значение"; ENDIF"
Rule21="IF ICOUNT_1059_2101 > 1; SETNEED 1; ELSE; SETNEED 0; ENDIF"


[Rules_01059]
;Общий код для данной структуры (меняю значение глобальных переменных ICOUNT_1059_2101 и ICOUNT_1059_1270)
General = "IF ISPRESENT(TLV_2101); INC ICOUNT_1059_2101 1; ENDIF; IF ISPRESENT(TLV_1270); INC ICOUNT_1059_1270 1; ENDIF"
;SHOWMESSAGE "Структура - предмет расчета, завершение, текущие значение ICOUNT_1059_2101 и ICOUNT_1059_1270 - $, $" ICOUNT_1059_2101 ICOUNT_1059_1270"
Rule01="IF FMULT(TLV_1079, TLV_1023) != Value; SETMESSAGE "Значение реквизита тег 1043, не равно произведению значений реквизитов тег 1079 и тег 1023)"; ENDIF"
;правило обязательности реквизитов 2 не применяется до 1 февраля 2021г, пока 3
Rule02="SETNEED 3"
Rule03="SETNEED 3"
Rule04="SETNEED 3"
Rule05="IF IBITVAL(0, TLV_2106)==1; SETNEED 1; ELSE; SETNEED 3; ENDIF"
Rule06="IF TLV_1214==3; SETNEED 0; ELSE; SETNEED 1; ENDIF"
Rule08="IF Value>=1 && Value<=7; ELSE; SETMESSAGE "Реквизит (тег 1214) имеет недопустимое значение"; ENDIF"
;скобки в IF не работают поэтому разделю на два выражения (должно быть от 1 до 26 и от 30 до 33 остальные неверные)
Rule09="IF Value>=1 && Value<=33; ELSE; SETMESSAGE "Реквизит (тег 1212) имеет недопустимое значение"; ENDIF; IF Value==27 || Value==28 || Value==29; SETMESSAGE "Реквизит (тег 1212) имеет недопустимое значение"; ENDIF"
;проверить правильно ли я понял правило 10, возможно достаточно SETNEED 3
Rule10="SETNEED 3; IF ISPRESENT(TLV_1222,TLV_1223,TLV_1224,TLV_1226) || ISNOTPRESENT(TLV_1222,TLV_1223,TLV_1224,TLV_1226); ELSE; SETMESSAGE "Реквизиты (тег 1222, 1223, 1224, 1226) должны все вместе отсутствовать или присутствовать"; ENDIF"
Rule11="IF ISPRESENT(TLV_1222) || ISPRESENT(TLV_1223) || ISPRESENT(TLV_1224); SETNEED 1; ELSE; SETNEED 3; ENDIF"
Rule12="SETNEED 3"
Rule13="SETNEED 3"
Rule14="IF TLV_1209==2; SETNEED 1; ELSE; SETNEED 3; ENDIF"
;непонятное требование пока закоментировал, проверить правило 14 - задать вопрос
; IF TLV_1214==4; SETMESSAGE "Реквизит (тег 1214) имеет недопустимое значение"; ENDIF""
Rule16="SETNEED 3"
Rule17="SETNEED 3"
Rule18="SETNEED 3"
Rule18="SETNEED 3; IF ISPRESENT(TLV_2101, TLV_2102, TLV_2106) || ISNOTPRESENT(TLV_2101, TLV_2102, TLV_2106); ELSE; SETMESSAGE "Реквизиты (тег 2101, 2102, 2106) должны все вместе  отсутствовать или присутствовать"; ENDIF"
Rule20="SETNEED 3"
Rule21="SETNEED 3"
Rule22="IF ISPRESENT(TLV_1260) && $ParentLen > 1024; SETMESSAGE "Полная длина реквизита (тег 1059), не может превышать 1024 байт"; ENDIF"
;пока SGET_2101 реализоывана формально, $MCType - определен в секции DEFINE
Rule23="IF ISPRESENT(TLV_2101) && Value!=SGET_2101($MCType, $MCode); SETMESSAGE "Реквизиты тег 2101, 2100 и 2000 имеют несогласованые значения"; ENDIF"
;пока SCRC32_4 реализоывана формально, $MCode - определен в секции DEFINE
Rule25="SETNEED 3; IF ISPRESENT(TLV_2115) && Value!=SCRC32_4($MCode); SETMESSAGE "Реквизиты тег 2115 и 2000 имеют несогласованые значения"; ENDIF"

[Rules_01174]
Rule01="IF Value > DATE_DOC_1012; SETMESSAGE "Значение реквизита тег 1178, больше даты документа коррекции 1012; ENDIF"

[Rules_01256]
Rule03="IF ISINLIST(Value,21,22,26,27,28,31,32,33,34,35,36,37,38,40); ELSE; SETMESSAGE "Реквизит тег 1245, имеет недопустимое значение"; ENDIF"
Rule04="IF ISNOTPRESENT(TLV_1243) && ISNOTPRESENT(TLV_1245) && ISNOTPRESENT(TLV_1246); SETNEED 1; ELSE; SETNEED 0; ENDIF"
Rule05="IF ISNOTPRESENT(TLV_1228); SETNEED 1; ELSE; SETNEED 0; ENDIF"


[Rules_00005]
;правило 02  не реализую - это невозможно, нужно сначала провесть все ответы от ОФД
Rule04="IF TLV_1002==1; SETNEED 0; ELSE; SETNEED 1; ENDIF"
;правило 05  не понятно пока как реализовать 
Rule06="IF TLV_1001==1; SETNEED 0; ELSE; SETNEED 1; ENDIF"
;правило 08 и 09 не реализую - это невозможно, нужно сначала провесть все ответы от ИСМ
Rule10="SETNEED 3"


[Rules_00006]
Rule01="IF TLV_1001==1; SETNEED 0; ELSE; SETNEED 1; ENDIF"


[Rules_00007]
Rule01="SETNEED 3"

[Rules_00081]
Rule03="IF TLV_2003==2 || TLV_2003==4; SETNEED 1; ELSE; SETNEED 0; ENDIF"
Rule04="IF ISINLIST(Value,0,10,11,12,20,21,22,30,31,32,40,41,42,50,51,70,71,72,73,80,81,82,83,255); ELSE; SETMESSAGE "Реквизит тег 2108, имеет недопустимое значение"; ENDIF"
Rule05="IF Value!=0; SETMESSAGE "Реквизит тег 2102 может принимать только значение '0'"; ENDIF"
Rule06="IF TLV_2108==0; SETNEED 1; ELSE; SETNEED 0; ENDIF"

[Rules_00082]
Rule02="SETNEED 3"
Rule03="SETNEED 3"
Rule04="SETNEED 3"



[Rules_02007]
Rule01="IF TLV_2110==2 || TLV_2110==4; SETNEED 1; ELSE; SETNEED 0; ENDIF"
Rule02="SETNEED 3"
;правило 03 не реализую - это невозможно, т.к содержимого структупры 1059 я не знаю или может быть это можно сделать на эталонных данных
Rule03="SETNEED 3"
Rule04="IF Value!=0; SETMESSAGE "Реквизит тег 2102 может принимать только значение '0'"; ENDIF"
Rule07="IF TLV_2108==0; SETNEED 1; ELSE; SETNEED 0; ENDIF"

[Rules_00083]
Rule02="IF ISINLIST(Value,1,2,3); ELSE; SETMESSAGE "Реквизит тег 2109, имеет недопустимое значение"; ENDIF"
Rule03="IF ISINLIST(Value,5,7,13,15); ELSE; SETMESSAGE "Реквизит тег 2005, имеет недопустимое значение"; ENDIF"
Rule04="IF TLV_2105==0; SETNEED 1; ELSE; SETNEED 3; ENDIF"
Rule05="IF IBITVAL(1, TLV_2005)==0; SETNEED 3; ELSE; SETNEED 1; ENDIF"
;правило 06 не реализую - это невозможно, или возможно только на эталонных данных
Rule06="SETNEED 3"

[Rules_00084]
Rule02="IF TLV_2111==0; SETNEED 1; ELSE; SETNEED 0; ENDIF"

