Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Небольшой TSQL скрипт для проверки корректности данных БД 1С 7.7 (число прочтений - 9078 )
Phoenix
Senior Member
****
Отсутствует


itpath.ru

Сообщений: 398
Местоположение: Москва
Зарегистрирован: 15. Июня 2006
Пол: Мужской
Небольшой TSQL скрипт для проверки корректности данных БД 1С 7.7
04. Сентября 2008 :: 08:23
Печать  
Проверяется:
- проверка наличия записей журнала которых нет в шапке
- проверка наличия записей шапки которых нет в журнале      
- проверка наличия дублей iddoc в шапках
- проверка наличия записей табличной части которых нет в журнале
- проверка наличия записей в регистре без записей в журнале
- получаем дубли iddoc в журнале
- получаем дубли DATE_TIME_IDDOC в журнале
- проверка наличия дублей id в справочниках
- проверка наличия несуществующих родителей
- получаем iddoc у которых right(date_time_iddoc,9) <> iddoc
- получаем список документов у которых статус не равен 0 и стоит пометка на удаление

если у кого будут дополнения или правки - постараюсь учесть


небольшое уточнение. будет работать на любой конфигурации.
таблицы для проверки берутся из sysobjects
« Последняя редакция: 05. Сентября 2008 :: 06:18 - Phoenix »  

CheckDB.txt ( 5 KB | Загрузки )

Лень двигатель прогресса.&&http://www.itpath.ru&&;
Наверх
IP записан
 
sml
Full Member
***
Отсутствует


I Love 1С++!

Сообщений: 186
Зарегистрирован: 28. Февраля 2008
Re: Небольшой TSQL скрипт для проверки корректности данных БД 1С 7.7
Ответ #1 - 05. Сентября 2008 :: 05:11
Печать  
а где же сам скрипт? Прицеплен лишь лог работы скрипта  Нерешительный

прошу пардону - надо было просто кликнуть по ссылке и получить текст, а я сохранил вложение себе.  Озадачен
  
Наверх
 
IP записан
 
sml
Full Member
***
Отсутствует


I Love 1С++!

Сообщений: 186
Зарегистрирован: 28. Февраля 2008
Re: Небольшой TSQL скрипт для проверки корректности данных БД 1С 7.7
Ответ #2 - 05. Сентября 2008 :: 05:30
Печать  
запустил на тестовой базе. Вывалила ошибок:
Код
Выбрать все
Сообщение 208, уровень 16, состояние 1, строка 1
Invalid object name 'dtpropertie'.
Сообщение 16917, уровень 16, состояние 1, строка 90
Cursor is not open.
Сообщение 208, уровень 16, состояние 0, строка 1
Invalid object name '#tmplost'.
Сообщение 208, уровень 16, состояние 0, строка 1
Invalid object name '#tmplost'.
Сообщение 208, уровень 16, состояние 0, строка 1
Invalid object name '#tmplost'.
Сообщение 208, уровень 16, состояние 0, строка 1
Invalid object name '#tmplost'.
Сообщение 16916, уровень 16, состояние 1, строка 119
A cursor with the name 'refs' does not exist.
--- следующие сообщения повторяются много раз
Сообщение 207, уровень 16, состояние 3, строка 1
Invalid column name 'parentID'.
Сообщение 207, уровень 16, состояние 3, строка 1
Invalid column name 'parentid'.
 



и везде сообщения:
(строк обработано: 0)
  
Наверх
 
IP записан
 
Phoenix
Senior Member
****
Отсутствует


itpath.ru

Сообщений: 398
Местоположение: Москва
Зарегистрирован: 15. Июня 2006
Пол: Мужской
Re: Небольшой TSQL скрипт для проверки корректности данных БД 1С 7.7
Ответ #3 - 05. Сентября 2008 :: 06:18
Печать  
скрипт не анализирует наличия поля parentID, если его нет - вывалится ошибка, на работоспособность не влияет.
dtproperties - системная таблица, если посмотришь скрипт, он берет все таблицы, которые начинаются с dt и обрабатывает их
Invalid object name '#tmplost' - косяк в скрипте.
P.S. скорее всего у тебя есть записи в регристре по документам, которых нет в журнале
A cursor with the name 'refs' does not exist. -  выдает при DEALLOCATE, нужно для нормальной работы при нескольких прогонах скрипта
обновил файл в 0
  

Лень двигатель прогресса.&&http://www.itpath.ru&&;
Наверх
IP записан
 
unnamed
Full Member
***
Отсутствует


0x1c = 28

Сообщений: 166
Местоположение: Chelyabinsk
Зарегистрирован: 01. Ноября 2007
Пол: Мужской
Re: Небольшой TSQL скрипт для проверки корректности данных БД 1С 7.7
Ответ #4 - 05. Сентября 2008 :: 07:10
Печать  
Server: Msg 3701, Level 11, State 5, Line 1
Cannot drop the table '#tmpLostInHeaders', because it does not exist in the system catalog.
и т.д., можно добавить перед удалением проверку на существование?

Server: Msg 16916, Level 16, State 1, Line 26
A cursor with the name 'cdh' does not exist.

Server: Msg 16916, Level 16, State 1, Line 66
A cursor with the name 'cdt' does not exist.

Server: Msg 208, Level 16, State 1, Line 1
Invalid object name 'dtpropertie'.

Server: Msg 16916, Level 16, State 1, Line 88
A cursor with the name 'ra_lst' does not exist.
Server: Msg 16917, Level 16, State 1, Line 90
Cursor is not open.

Server: Msg 16916, Level 16, State 1, Line 119
A cursor with the name 'refs' does not exist.

Server: Msg 207, Level 16, State 3, Line 1
Invalid column name 'parentID'.
Server: Msg 207, Level 16, State 1, Line 1
Invalid column name 'parentid'.





  
Наверх
ICQ  
IP записан
 
Phoenix
Senior Member
****
Отсутствует


itpath.ru

Сообщений: 398
Местоположение: Москва
Зарегистрирован: 15. Июня 2006
Пол: Мужской
Re: Небольшой TSQL скрипт для проверки корректности данных БД 1С 7.7
Ответ #5 - 05. Сентября 2008 :: 07:28
Печать  
проверять можно.
скрипт делался по быстрому, поэтому всякие фенечки не учитывались.
подправлю позже.
  

Лень двигатель прогресса.&&http://www.itpath.ru&&;
Наверх
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Небольшой TSQL скрипт для проверки корректности данных БД 1С 7.7
Ответ #6 - 05. Сентября 2008 :: 08:48
Печать  
Поиск пользовательскими скриптами разрушений в индексах, IMHO, не гарантирует результат.

Для документов вида Операция closed <> 0 and ismark = 1 - штатная ситуация.

Для законченности хотелось бы ещё тестирования периодических реквизитов и бух. движений..


Тут убраны ненужные варнинги, учтены dtproperties и Операция.
  

CheckDB.zip ( 1 KB | Загрузки )

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Phoenix
Senior Member
****
Отсутствует


itpath.ru

Сообщений: 398
Местоположение: Москва
Зарегистрирован: 15. Июня 2006
Пол: Мужской
Re: Небольшой TSQL скрипт для проверки корректности данных БД 1С 7.7
Ответ #7 - 05. Сентября 2008 :: 09:31
Печать  
спасибо за доработку Улыбка
где можно глянуть по бух.движениям?
помимо класса БухИтоги?
у нас не используется бух.компонента поэтому не знаю чего как внутри.

периодика - хорошая идея, постараюсь за выходные сделать
  

Лень двигатель прогресса.&&http://www.itpath.ru&&;
Наверх
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Небольшой TSQL скрипт для проверки корректности данных БД 1С 7.7
Ответ #8 - 05. Сентября 2008 :: 10:28
Печать  
Phoenix писал(а) 05. Сентября 2008 :: 09:31:
где можно глянуть по бух.движениям?

Тут что-то есть: http://www.1csql.ru/materials/articles/admin.html~947a192a-ffb7-7436-1fa6-308a00...
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
sml
Full Member
***
Отсутствует


I Love 1С++!

Сообщений: 186
Зарегистрирован: 28. Февраля 2008
Re: Небольшой TSQL скрипт для проверки корректности данных БД 1С 7.7
Ответ #9 - 05. Сентября 2008 :: 13:20
Печать  
Phoenix писал(а) 05. Сентября 2008 :: 09:31:
периодика - хорошая идея, постараюсь за выходные сделать


а еще полезно было бы найти объекты подчиненного справочника, где нет владельца
  
Наверх
 
IP записан
 
sml
Full Member
***
Отсутствует


I Love 1С++!

Сообщений: 186
Зарегистрирован: 28. Февраля 2008
Re: Небольшой TSQL скрипт для проверки корректности данных БД 1С 7.7
Ответ #10 - 05. Сентября 2008 :: 13:36
Печать  
berezdetsky писал(а) 05. Сентября 2008 :: 08:48:

Тут убраны ненужные варнинги, учтены dtproperties и Операция.


а вот с этой штукой все ОК! Спасибки!!!
даже нашла в одном регистре записи от несуществующих документов (видимо, при обрезке базы я не доделал с этим регистром)

почикал уже в рабочей базе
(строк обработано: 9363)
  
Наверх
 
IP записан
 
Phoenix
Senior Member
****
Отсутствует


itpath.ru

Сообщений: 398
Местоположение: Москва
Зарегистрирован: 15. Июня 2006
Пол: Мужской
Re: Небольшой TSQL скрипт для проверки корректности данных БД 1С 7.7
Ответ #11 - 05. Сентября 2008 :: 15:21
Печать  
sml писал(а) 05. Сентября 2008 :: 13:20:
Phoenix писал(а) 05. Сентября 2008 :: 09:31:
периодика - хорошая идея, постараюсь за выходные сделать


а еще полезно было бы найти объекты подчиненного справочника, где нет владельца

в SQL таблицах не хранится кто кому подчинен.
переводить же скрипт на 1С++ не хочется.
  

Лень двигатель прогресса.&&http://www.itpath.ru&&;
Наверх
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Небольшой TSQL скрипт для проверки корректности данных БД 1С 7.7
Ответ #12 - 05. Сентября 2008 :: 15:48
Печать  
Phoenix писал(а) 05. Сентября 2008 :: 15:21:
переводить же скрипт на 1С++ не хочется.

а было бы разумно в плане еще одного полезного инструмента, который надо только запустить.
и на инфостарт выложи. пипл заценит...
  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать