Поиск ошибок в регистрах 7.7


Обработка  позволяет найти ошибки в регистрах 7.7 в Вашей базе данных
История создания

Когда проводил различные "опыты" , эксперименты по написанию "своих  блокировок" был необходим механизм обнаружения сложных ошибок в регистрах. В результате появилась эта обработка. 

Особенности

Сейчас обработка поддерживает только sql версию. Для работы обработки необходим 1с++

Установка

Скопировать и запустить обработку.

Как пользоваться - интуитивно понятно.

Принимаются ошибки, замечания, критика и.т.д.

Описание кнопок и  что они обнаруживают

  1. Документ не проведен и установлен флаг движения (rf по любому из регистров )
  2. Документ проведен и установлен флаг движения (rf) конкретного регистра и нет ни одного движения документа по этому регистру
  3. Ищем случай когда флаг движения (rf) сброшен у конкретного регистра и у документа есть движения по этому регистру
    1. Ищем случай когда документ не проведен , флаг движения (rf) у конкретного движения сброшен и у документа есть движения по этому регистру.
    2. Ищем случай когда документ проведен , флаг движения у конкретного движения (rf) сброшен и у документа есть движения по этому регистру.
  4. В таблице движений конкретного регистра (ra) есть ссылка на несуществующий документ.
  5. Проверяет что элемент-справочник или документ с максимальным ID существует в соответствующей таблице справочника или в журнале документов.
  6. Для регистров у которых установлен признак быстрое движение дата, время ( date_time_iddoc ) по регистру должно совпадать с этим полем по журналу документов.
  7. Ищем ошибки когда при проведении документа было что либо нарушено. Основная идея пункта 7 что при правильном проведении документа все его actno составляют ряд ( арифметическая прогрессия ) 1 2 3 4 5 ... n .Причем n должно равняться actcnt из строки журнала документов. Этот ряд составлен из всех движений документа по всем регистрам. В этот ряд также включается движение переодич. реквизита справочника этого документа


Пример из модуля проведения:
Вызвали проведение другого документа при этом второй документ откатил транзакцию а мы дальше стали проводить документ.
Искусственным тестом воссоздал такую ситуацию и обработка это обнаружила 


Версия 1.9.08
  1. Добавлен поиск ошибок связанных с периодич. значениями справочников полученных при проведении документов
    1. Документ непроведен и у него есть переодич. движения справочников
    2. Документ непроведен и у него по APPCODE (APPCODE & 0x08 = 8 ) есть движение
    3. Документ проведен и у него по APPCODE (APPCODE & 0x08 = 8 ), а движения нет
    4. Документ проведен и у него по APPCODE (APPCODE & 0x08 = 0 ) и движения есть
    5. В константах есть периодич движение документа в самом журнале документов нет документа iddoc
    6. В константах есть периодич ID (id плохой) который ссылается на неправильный реквизит справочник
    7. В константах есть периодич ID справочника спр и непустой, а в самом справочнике нет значения (ссылка в никуда или на удаленный элемент спр)

На 09.04.2012 сделаны изменения версии с 2.0.0.1 по 2.0.0.4
Версия 2.0.01

сделано
1 при открытии делается проверка и если надо то загружается внешняя компонента 1cpp.dll
2 проверка что раньше определенной даты нет движений по rg
3 проверка что позже  определенной даты нет движений по rg
4 Для периодичности итогов = месяц проверка что в rg в поле PERIOD не может быть даты отличной от числа 01

Версия 2.0.02 и 2.0.03
1. добавлен 6.1 поиск в rg значений PERIOD по дате меньше заданной доп флаг можно дату наименьшую взять из _ssystem
2. добавлен 6.2 поиск в rg значений PERIOD по дате больше заданной доп флаг можно дату наименьшую взять из _ssystem. Это надо делать если уверены что не двигали ТА в прошлое и в прошлом и остались
3. добавлен 6.3 проверка дат PERIOD d rg переделана для любой периодичности базы 1с
4. добавлен 6.4 где флаг быстрые движения включен то в ra не может быть даты самой ранней чем в _1ssystem
5. добавлен 8.8 по _1sjourn (журнал документов) сделан поиск документов меньше заданной даты. (Т.е если Вы ведете базу с 2005 года то логично предположить что нет документов с датой < 01.01.2005)
6. добавлен 8.9 по _1sjourn (журнал документов) сделан поиск документов с пустой датой ( точнее с датой 01.01.1753)
7. добавлен 8.10 по _1sentry  (проводки ) сделан поиск проводок с пустой датой
8. добавлен 8.11 по _1soper   (операции ) сделан поиск операций с пустой датой

Версия 2.0.04
1.сделан поиск документов где для документа время документа отличается от времени проводок
2 сделан поиск документов где для документа время документа отличается от времени операции
3 сделан поиск документов где для документа время документа отличается от времени отбора счетов
4 сделан поиск документов где для документа время документа отличается от времени отбора проводок
5. сделано сравнение времени в операции и ее проводок.

Дальнейшее развитие

Есть идеи что из этого можно сделать еще.

Файлы обработки:

-