Дык все вроде просто.
Если у тебя всего 32 теста или меньше - с ними вообще можно запросто работать:
1. Допустим, полный набор тестов 1111b
2. Обязательный набор тестов 0101b
Необязательный набор тестов вычисляется как XOR(1111b, 0101b) = 1010b
Проверка конкретного теста на вхождение в список обязательных, например: BITAND(0001b, 0101b) <> 0
т.е. BITAND(0001b, 0101b) = 1 - обязательный тест, BITAND(0010b, 0101b) = 0 - необязательный
Журнализация непрошедших тестов: флаги = BITOR(0001b, флаги). Флаги эти можно хранить в базе для быстрого анализа.
А вообще, для хранения цепочек битов длиннее 32, есть разные способы:
1. Как сказал orefkov, макс число = это 19 цифр. Это ln(10^19)/ln(2) = 63 двоичных флага. Для стандартного Math это слишком много, но действительно можно реализовать свою логику внутри 1С.
2. Можно хранить, к примеру в виде шестнадцатеричных строк, их легко резать в группы по 8 цифр и применять булеву логику последовательно. (перевод из строки в числа просто делается функцией Long()).
P.S.
Собственно, можно сделать логику какой угодно длины в каком-нибудь другом Math1024, но зачем