Вход | Регистрация


1С:Предприятие ::

Метки: 

v7: как найти ошибку преобразования в число в таблице документа

Я
   vde69
 
10.01.13 - 08:56
есть база 7.7 SQL, у нее есть табличная часть  DT1320

без этой таблицы база нормально выгружается, с таблицей валится и не выгружается.

что уже смотрел
1. индекс есть и правильный iddoc+lineno_
2. визуально таблица нормальная (размер примерно 10 000 записей)
3. дублей нет, запрос возвращает пусто

SELECT     aaa.*
FROM         (SELECT     a1.IDDOC, a1.lineno_, SUM(1) AS cou
                      FROM          DT1320 AS a1
                      GROUP BY a1.IDDOC, a1.lineno_) aaa
WHERE     (cou <> 1)

4. все значения lineno лежа в дипазоне 1...999


куды дальше копать?
 
 
   Ёпрст
 
1 - 10.01.13 - 08:59
ну, либо есть задвоенные iddoc (чего не видит твой запрос)
либо есть записи с iddoc, которых нема в 1sjourn
   vde69
 
2 - 10.01.13 - 09:02
(1) в журнале все есть, запрос ничего не возвращает


SELECT     a1.*
FROM         DT1320 a1 LEFT OUTER JOIN
                     _1SJOURN a2 ON a1.IDDOC = a2.IDDOC
WHERE     (a2.IDDOC IS NULL)
   vde69
 
3 - 10.01.13 - 09:03
(1) по поводу "не видит дубля", не понял, ведь индекс клатерный по нему с уникальностью...
   КонецЦикла
 
4 - 10.01.13 - 09:03
удали все индексы, в т.ч. ПК
потом выполни поиск дублей и подозрительных записей
создай индексы
   mikecool
 
5 - 10.01.13 - 09:04
null на неправильном месте?
   Ёпрст
 
6 - 10.01.13 - 09:05
а так ?
SELECT IDDOC
FROM DT1320
GROUP BY IDDOC
having count(*)>1
   Ёпрст
 
7 - 10.01.13 - 09:07
тьфу блин, ты же dt смотришь..
   vde69
 
8 - 10.01.13 - 09:12
(4) ничего подозрительного, 
выполняю 3 запроса, все пустые

--------------------------------------

SELECT     *, LINENO_ AS Expr1
FROM         DT1320
WHERE     (NOT (LINENO_ > 0 AND LINENO_ < 999))


--------------------------------------
SELECT     a1.*
FROM         DT1320 a1 LEFT OUTER JOIN
                    _1SJOURN a2 ON a1.IDDOC = a2.IDDOC
WHERE     (a2.IDDOC IS NULL)



--------------------------------------

SELECT     aaa.*
FROM         (SELECT     a1.IDDOC, a1.lineno_, SUM(1) AS cou
                     FROM          DT1320 AS a1
                     GROUP BY a1.IDDOC, a1.lineno_) aaa
WHERE     (cou <> 1) 



--------------------------------------
   vde69
 
9 - 10.01.13 - 09:13
(6)

SELECT     IDDOC, LINENO_
FROM         DT1320
GROUP BY IDDOC, LINENO_
HAVING      (COUNT(*) > 1)

пусто....
   Ёпрст
 
10 - 10.01.13 - 09:14
Это, размер базы то какой ?
И есть уверенность, что она в dat без всяких приблуд ромикса выгрузится ?
 
 Рекламное место пустует
   vde69
 
11 - 10.01.13 - 09:16
(5)

пусто

SELECT     *, LINENO_ AS Expr1
FROM         DT1320
WHERE     (LINENO_ IS NULL) OR
                     (LINENO_ IS NULL)
   mikecool
 
12 - 10.01.13 - 09:17
(11) я имел ввиду не только номер строки, но и везде, где по структуре запрещено незаполненное значение
   Ёпрст
 
13 - 10.01.13 - 09:17
(11) ага, хорошее условие
:)
   vde69
 
14 - 10.01.13 - 09:17
(10) легко, скулевский файл чуть больше гига, кроме того без этой таблички (а она маленькая) все выгружается и работает
   dk
 
15 - 10.01.13 - 09:17
а ТиИ запустить в режиме без исправлений?
   Ёпрст
 
16 - 10.01.13 - 09:18
(14) общие реквизиты дока, с типом строка неогр длины, последние хоть в дереве метаданных ?
   Ёпрст
 
17 - 10.01.13 - 09:19
+16 если прибить записи в 1scrdoc, тоже болт ?
   vde69
 
18 - 10.01.13 - 09:25
(12) пусто
SELECT     *
FROM         DT1320
WHERE     (IDDOC IS NULL) OR
                     (LINENO_ IS NULL) OR
                     (SP1337 IS NULL) OR
                     (SP1338 IS NULL) OR
                     (SP1339 IS NULL) OR
                     (SP1340 IS NULL) OR
                     (SP1343 IS NULL) OR
                     (TSP1343 IS NULL) OR
                     (SP1344 IS NULL) OR
                     (SP1345 IS NULL) OR
                     (TSP1345 IS NULL) OR
                     (SP1346 IS NULL) OR
                     (SP1346 IS NULL) OR
                     (SP1348 IS NULL) OR
                     (SP1347 IS NULL) OR
                     (SP1349 IS NULL)

(17) давно прибиты
(15) без исправления видит ошибки но не относящиеся к этой таблице

после выгрузки в файловую делал ТИИ - все нормально
   mikecool
 
19 - 10.01.13 - 09:28
(18) некорректные символы в полях?
   Ёпрст
 
20 - 10.01.13 - 09:28
(18) словарик хоть соответствует этому мд ?
   vde69
 
21 - 10.01.13 - 09:29
(19) визуально - вроде нет (хотя конечно глазами не пробежишь нормально), а как проверить?
   Ёпрст
 
22 - 10.01.13 - 09:30
а на 16 ?
   Ёпрст
 
23 - 10.01.13 - 09:32
можешь еще и проапдейтить последовательно все реквизиты таб части, занося туда пустойИД
   Ёпрст
 
24 - 10.01.13 - 09:32
+23 если это ссылочный тип
   vde69
 
25 - 10.01.13 - 09:33
(20) как получена текущая база
1. выгрузил в файл (без таблицы)
2. загрузил в файловую, сделал ТИИ
3. созранил в выгрузку
4. очистил скуль базу
5. загрузил в нее файловую
6. экспортом из копии базы перелил табличку

должно все соответсвтовать... экспорт не ругался, по этому индексы и дубли нолжны быть в норме....

я склоняюсь к кривому символу где-то, только как найти?
   dk
 
26 - 10.01.13 - 09:34
прибей все табличные реквизиты по одному - найдешь проблемную колонку
   dk
 
27 - 10.01.13 - 09:36
либо не найдешь, тогда дело не в ней )
   vde69
 
28 - 10.01.13 - 09:36
(16) это табличная часть, ты уверен что там это общие реквизиты?
   Ёпрст
 
29 - 10.01.13 - 09:43
(25) ну дык, проверь все реквизиты , правильнаяч ли в них ссылка
   1Сергей
 
30 - 10.01.13 - 09:43
удивительно, что главный восстановитель баз спрашивает что-то :)

В качестве бреда: Создать новую табличку и скопировать в неё всё из DT1320. удалить первую. вторую переименовать в первую
   Ёпрст
 
31 - 10.01.13 - 09:43
можешь по-очереди их прибивать (тупо апдейтом и выгружать)
   Ёпрст
 
32 - 10.01.13 - 09:45
тем более, у тебя в dt есть реквизиты неопределенного типа - в начале, прибей их..
это поди выписка какая-нить ?
   Ёпрст
 
33 - 10.01.13 - 09:46
т.е первым делом прибей SP1343 и SP1345
 
 
   vde69
 
34 - 10.01.13 - 09:48
это КассовыйДень из бюджетки...

счас буду исключением колонок искать...
   mikecool
 
35 - 10.01.13 - 10:02
(25) "я склоняюсь к кривому символу где-то, только как найти?" я вот даже хз (
   monsterZE
 
36 - 10.01.13 - 10:07
я ищу кривые символы так.. =) тока это не в скл, но мож поможет..
            Для м=1 по ДлинаТ Цикл
                Если КодСимв(Сред(т,м,1))<32 Тогда
                    Сообщить(""+Док.Вид()+" "+СокрЛП(Док.НомерДок)+" / "+т);
                КонецЕсли;                                      
                
                Если (КодСимв(Сред(т,м,1))>122) и (КодСимв(Сред(т,м,1))<192) Тогда
                    Если КодСимв(Сред(т,м,1))<>185 Тогда
                        Сообщить(""+Док.Вид()+" "+СокрЛП(Док.НомерДок)+" / "+т);
                    КонецЕсли;    
                КонецЕсли;                                      
            КонецЦикла;
   vde69
 
37 - 10.01.13 - 10:13
ошибка в одной из числовых колонках
СуммаДО, ВалСуммаДО, СуммаКО, ВалСуммаКО.

добавление реквизита через конфигуратор не проходит...
   vde69
 
38 - 10.01.13 - 10:27
нашел кривую строку запросом

SELECT     *
FROM         DT1320
WHERE     (SP1347 <> 0) OR
                      (SP1349 <> 0)
   Ёпрст
 
39 - 10.01.13 - 10:32
и че там было ?
   mikecool
 
40 - 10.01.13 - 10:34
а у меня как то не задавался заголовок колонки ТЧ на форме
ругался, что он неправильный
если прописывал реквизиту такой синоним - то добавлялся заголовок, но при попытке исправить - снова ругался )
   КонецЦикла
 
41 - 10.01.13 - 11:05
(39) +1 :)
   mikecool
 
42 - 10.01.13 - 11:07
я провидец!!!! )))
(41) +1
   КонецЦикла
 
43 - 10.01.13 - 11:11
(42) Ну обо как бы логично :)
Если нет дублей, то либо null... а что там еще может быть интересно?
   vde69
 
44 - 10.01.13 - 11:13
(41) (39)

одна строка с мусором в 3х колонках, при этом ключ был нормальный
   Ёпрст
 
45 - 10.01.13 - 11:15
мусор то как выглядел и в каких колонках ?
   mikecool
 
46 - 10.01.13 - 11:15
(45) теперь клещами бум вытягивать правду )
   vde69
 
47 - 10.01.13 - 11:22
кракозябры в числовых колонках и один уид сдвинут в поле
   КонецЦикла
 
48 - 10.01.13 - 11:23
Представляю сколько дерьма там в НЕчисловых колонках :)
   vde69
 
49 - 10.01.13 - 11:25
наверно есть :) хотя ссылочную целостность - проходит
 
 Рекламное место пустует



Список тем форума
Рекламное место пустует Рекламное место пустует
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует