Когда проводил различные "опыты" , эксперименты по написанию "своих блокировок" был необходим механизм обнаружения сложных ошибок в регистрах. В результате появилась эта обработка.
Особенности
Сейчас обработка поддерживает только sql версию. Для работы обработки необходим 1с++
Установка
Скопировать и запустить обработку.
Как пользоваться - интуитивно понятно.
Принимаются ошибки, замечания, критика и.т.д.
Описание кнопок и что они обнаруживают
- Документ не проведен и установлен флаг движения (rf по любому из регистров )
- Документ проведен и установлен флаг движения (rf) конкретного регистра и нет ни одного движения документа по этому регистру
- Ищем случай когда флаг движения (rf) сброшен у конкретного регистра и у документа есть движения по этому регистру
- Ищем случай когда документ не проведен , флаг движения (rf) у конкретного движения сброшен и у документа есть движения по этому регистру.
- Ищем случай когда документ проведен , флаг движения у конкретного движения (rf) сброшен и у документа есть движения по этому регистру.
- В таблице движений конкретного регистра (ra) есть ссылка на несуществующий документ.
- Проверяет что элемент-справочник или документ с максимальным ID существует в соответствующей таблице справочника или в журнале документов.
- Для регистров у которых установлен признак быстрое движение дата, время ( date_time_iddoc ) по регистру должно совпадать с этим полем по журналу документов.
- Ищем ошибки когда при проведении документа было что либо нарушено. Основная идея пункта 7 что при правильном проведении документа все его actno составляют ряд ( арифметическая прогрессия ) 1 2 3 4 5 ... n .Причем n должно равняться actcnt из строки журнала документов. Этот ряд составлен из всех движений документа по всем регистрам. В этот ряд также включается движение переодич. реквизита справочника этого документа
Пример из модуля проведения:
Вызвали проведение другого документа при этом второй документ откатил транзакцию а мы дальше стали проводить документ.
Искусственным тестом воссоздал такую ситуацию и обработка это обнаружила
Версия 1.9.08
- Добавлен поиск ошибок связанных с периодич. значениями справочников полученных при проведении документов
- Документ непроведен и у него есть переодич. движения справочников
- Документ непроведен и у него по APPCODE (APPCODE & 0x08 = 8 ) есть движение
- Документ проведен и у него по APPCODE (APPCODE & 0x08 = 8 ), а движения нет
- Документ проведен и у него по APPCODE (APPCODE & 0x08 = 0 ) и движения есть
- В константах есть периодич движение документа в самом журнале документов нет документа iddoc
- В константах есть периодич ID (id плохой) который ссылается на неправильный реквизит справочник
- В константах есть периодич 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. сделано сравнение времени в операции и ее проводок.
Дальнейшее развитие
Есть идеи что из этого можно сделать еще.