Имя: Пароль:
1C
Админ
1С 7.7упала sql 2000
0 Фдулич
 
23.08.12
11:42
при выполнении обработки выдала сообщенице
http://s15.radikal.ru/i189/1208/33/eaa8b77b3dc6.jpg
1С 7,7 розница
как я понимаю из него есть дубли. как исправить ?
1 Voronve
 
23.08.12
11:43
что сказал ТИИ ?
2 Sh1ko
 
23.08.12
11:43
а сервис паки на скл стоят?
3 ДенисЧ
 
23.08.12
11:44
1. дропнуть ВСЕ индексы на этой таблице
2. сделать select iddoc, count(iddoc) from dt2226 group by by iddoc having count(iddoc) > 1
3. Разбираться в результатах.
4 VladZ
 
23.08.12
11:44
смотри индексы для dt2226
5 Фдулич
 
23.08.12
11:46
(2)вплоть до 4го
6 Фдулич
 
23.08.12
11:47
(3) буду делать щас помучаю
(1) щас делается
7 ADirks
 
24.08.12
07:20
Фигня всё это. Поможет только profiler.

Если посмотрим на PK, то он (IDDoc, LineNo_), значит вероятнее всего 1С пихает в документ дубль LineNo_.
LineNo_ - smallint (max 32767) Врядли конечно в документ пихается строк больше, но чем чёрт не шутит.
8 Фдулич
 
24.08.12
08:41
сделал ТиИ, индекс в sql и дефрагментацию , запустил таж картина маслом что в(0)
9 Фдулич
 
24.08.12
08:41
(7) не совсем понимаю как это сделать
10 Ёпрст
 
24.08.12
08:59
(9) что говорит (3.2) ?
11 Фдулич
 
24.08.12
09:00
открылась таблица, с кучей значений
12 Фдулич
 
24.08.12
09:04
хотя в DDS описание таблицы это непонятно

P=_1sp_DT2226_TLockX            |EscalateTLockX|                                        |set nocount on declare i integer select i=1 from DT2226(TABLOCKX HOLDLOCK) where 0=1
#
#===============================================================================
#==TABLE no 100    : Документ (Мн.ч.) ПродажиПоДискКартам
# Name    |Descr                         |SQLTableNam|RecordLock
T=DT2226  |Документ (Мн.ч.) ПродажиПоДиск|DT2226     |          
#-----Fields-------
# Name                  |Descr               |Type|Length|Precision
F=IDDOC                 |ID Document's       |C   |9     |0        
F=LINENO_               |LineNo              |S   |0     |0        
F=SP2230                |(P)Товар            |C   |9     |0        
F=SP2231                |(P)Количество       |N   |14    |3        
F=SP2233                |(P)СуммаБезСкидки   |N   |16    |2        
F=SP2236                |(P)СуммаСкидки      |N   |16    |2        
F=SP2237                |(P)ПроцентСкидки    |N   |5     |2        
F=SP2239                |(P)КодДК            |C   |24    |0        
F=SP2240                |(P)ДискКарта        |C   |9     |0        
#----Indexes------
# Name                           |Descr         |Unique|Indexed fields                                              |Type      
I=PK_DT2226                      |of IDDOC+LineN|1     |IDDOC,LINENO_                                               |1          
#
#===============================================================================
#==PROCEDURE
# Name                          |Descr         |Parameters                              |Source                                                                          
P=_1sp_DH2226_UpdateTotals      |              |@IdDoc C(9)                             |{\
SET NOCOUNT ON
DECLARE @Sum0 NUMERIC(28,2),@Sum1 NUMERIC(28,2)
SELECT @Sum0=COALESCE(SUM(SP2233),0),@Sum1=COALESCE(SUM(SP2236),0) FROM DT2226 WHERE IDDOC=@IdDoc
   IF ABS(@Sum0)>99999999999999.99 SELECT @Sum0=99999999999999.99*SIGN(@Sum0)
   IF ABS(@Sum1)>99999999999999.99 SELECT @Sum1=99999999999999.99*SIGN(@Sum1)
UPDATE DH2226 SET SP2233=@Sum0,SP2236=@Sum1 WHERE IDDOC=@IdDoc
\}
13 Ёпрст
 
24.08.12
09:11
покажи скриншот результата вот этого, выполненого в QA

select iddoc, count(iddoc) from dt2226 group by by iddoc having count(iddoc) > 1
14 Ёпрст
 
24.08.12
09:12
и вот этого еще

select iddoc, count(iddoc) from _1sjourn (nolock) group by by iddoc having count(iddoc) > 1
15 vde69
 
24.08.12
09:17
примари кей просто так не задваивается...

(0) для начала сделай бекап
потом (13)

потом спроси всех кто имеет доступ, про нештатые 1с действия (прямые запросы, изменения уровня изоляции, и т.д.)

спроси про сбои файловой системы и т.д.

пока не поймешь причину ничего не изменяй.
16 stix2010
 
24.08.12
09:20
а документы руками вводятся?
17 Фдулич
 
24.08.12
09:24
18 Фдулич
 
24.08.12
09:26
c(14) пустота
19 Фдулич
 
24.08.12
09:27
(16) только приходные накладные вручную + возвраты + списание + акты переоценки +оприходование+инвентаризация
20 Ёпрст
 
24.08.12
09:27
блин, не то.. Дениска сбил с толку..
вот так, что кажет ?
21 Фдулич
 
24.08.12
09:28
все продажи автоматом сливаются с касс в базу + чеки + закрытие смен
22 Фдулич
 
24.08.12
09:29
(15) сбоев не было,все крутится на нормальном серваке,с базой работают 7-8 чел
23 Фдулич
 
24.08.12
09:30
+(22)максимум 10, тетки для них "нештатые 1с действия (прямые запросы, изменения уровня изоляции, и т.д.) " это фантастика
24 Фдулич
 
24.08.12
09:31
(20) что кажет ?
25 Ёпрст
 
24.08.12
09:37
(24) у тя же примари кей.. там дублей не должно быть по-определению..
Но можешь проверить, на всякий это:

select iddoc,lineno_, count(iddoc+lineno_) from _1sjourn (nolock) group by by iddoc,lineno_ having count(iddoc+lineno_) > 1
26 Ёпрст
 
24.08.12
09:38
>>>полнении обработки выдала сообщенице

а обработка че делает ?

а вот этот запрос че кажет ?

select iddoc, count(iddoc) from _1sjourn (nolock) group by by iddoc having count(iddoc) > 1
27 Фдулич
 
24.08.12
09:41
(25)
Server: Msg 207, Level 16, State 3, Line 1
Invalid column name 'lineno_'.
Server: Msg 207, Level 16, State 1, Line 1
Invalid column name 'lineno_'.
Server: Msg 207, Level 16, State 1, Line 1
Invalid column name 'lineno_'.
Server: Msg 207, Level 16, State 1, Line 1
Invalid column name 'lineno_'.
Server: Msg 207, Level 16, State 1, Line 1
Invalid column name 'lineno_'.
28 Фдулич
 
24.08.12
09:41
(26) (0 row(s) affected)
29 Андрюха
 
24.08.12
09:42
Дублей нет, всё ништяг
30 Фдулич
 
24.08.12
09:43
(26) обработка ищет карточки товара которые не использовались более 1,5 года и помечает их на удаление
31 Фдулич
 
24.08.12
09:45
там их развелось до хрена и больше
32 Ёпрст
 
24.08.12
09:45
(27)ошибся, так есть че ?
select iddoc,lineno_, count(iddoc+lineno_) from dt2226 (nolock) group by by iddoc,lineno_ having count(iddoc+lineno_) > 1
33 borozavr
 
24.08.12
09:46
Посмотри выгрузку с касс, может там фигня выгрузилась, поэтому грузит в док >32000 строк.
34 Фдулич
 
24.08.12
09:47
(32)Line 1: Incorrect syntax near 'iddoc'.
35 Фдулич
 
24.08.12
09:51
(33) да нет отчет отдела в НГ самый большой на 1474 строк  и все самый большой
36 Фдулич
 
24.08.12
09:52
Инвентаризация на 11792 строки
37 Фдулич
 
24.08.12
09:53
(32)Server: Msg 245, Level 16, State 1, Line 1
Syntax error converting the varchar value ' 41RFX   ' to a column of data type smallint.
38 Фдулич
 
24.08.12
09:53
ОНО
39 Фдулич
 
24.08.12
09:57
40 vde69
 
24.08.12
10:00
(21) как именно сливаются, какими средствами?

из траблов могущих привести к сабжу
1. вложеные транзакции 1с с кривым откатом
2. кривые индексы (как правило это если есть волшебный файлик для дружбы хрюши и висты/семерки)
3. выключение сервера
4. сетевые проблеммы (частичная потеря пакетов)
5. кривые настройки сервера (файловый кеш и всякие "спасатели")


(20)

примерно так, только синтаксис по памяти пишу, наверно ошибки есть

select t1.iddoc from (select iddoc, count(iddoc) AS C from DT2226)as t1 whele t1.c > 0
41 Ёпрст
 
24.08.12
10:01
да блин
select
 iddoc,
 lineno_,
 count(iddoc+lineno_)
from dt2226 (nolock)
group by iddoc,lineno_
having count(iddoc+lineno_) > 1
42 Фдулич
 
24.08.12
10:07
(40)программа кассовый сервер,которая опрашивает кассы на наличие чеков и закрытие смен.
1.не знаю
2.стоит только Win 2003 и win ХП. семерок и прочей лабуды нет
3.не возможно физически.2 линий света + дизель генератор
4.не возможно ,оборудование полная замена с нуля
5.спасатели это что ?
43 Фдулич
 
24.08.12
10:08
(41)
Server: Msg 245, Level 16, State 1, Line 1
Syntax error converting the varchar value ' 41RFX   ' to a column of data type smallint.
44 Фдулич
 
24.08.12
10:10
(40)
Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near '0'.
45 ADirks
 
24.08.12
10:10
(41)
всёж наверное

select
 iddoc,
 lineno_,
 count(*)
from dt2226 (nolock)
group by iddoc,lineno_
having count(*) > 1

только это гарантированно ничего не даст
у него же в процессе записи ошибка валится и дублей естественно не создаётся, ибо constraint же, а потом ещё и транзакция откатывается
46 Фдулич
 
24.08.12
10:11
(0 row(s) affected)
47 Фдулич
 
24.08.12
10:11
так вот и интересно найти причину
48 ADirks
 
24.08.12
10:15
В составе SQL-сервера есть "SQL Server Profiler", вот его запускай, и смотри какие запросы идут на сервер в момент работы обработки. После того как оно свалится, где-то ближе к концу будет искомый запрос про вставку в dt2226. Надо смотреть, чего он вставляет в lineno_
49 Фдулич
 
24.08.12
10:17
ок щас пустим
50 stix2010
 
24.08.12
10:19
(36) ниче что табличные части в 7.7 10 тыс строк держат?
51 Ёпрст
 
24.08.12
10:19
(45) точно, он же к смоллинт чар не может преобразовать..
52 Ёпрст
 
24.08.12
10:20
(50) :))
200 тыщ легко и не напрягаясь, даже в дбф.
53 stix2010
 
24.08.12
10:20
точнее 9999
54 Ёпрст
 
24.08.12
10:21
(53) это нумерация строк до стольки, и то, только для дбф базы.
55 Фдулич
 
24.08.12
14:57
exec sp_executesql N'Insert into DT2226 values( P1,@P2,@P3,@P4,@P5,@P6,@P7,@P8,@P9)', N'P1 varchar(9),@P2 smallint,@P3 varchar(9),@P4 numeric(14,3),@P5 numeric(16,2),@P6 numeric(16,2),@P7 numeric(5,2),@P8 varchar(24),@P9 varchar(9)', ' 58I2A   ', -2313, '  1B5X   ', 0.250, 20.88, 1.04, 4.98, '5000000608              ', '    CF   '
56 Фдулич
 
24.08.12
14:58
последнее что написало он перед крахом
57 ADirks
 
27.08.12
08:16
собственно, интересовать тебя должна парочка
' 58I2A   ', -2313
цыферка -2313 явно свидетельствует о переполнении, и скорее всего где-то внутре у 1С.
Почему дубль появляется именно на этой цыферке не понятно. Интересу для можно просмотреть лог, на предмет в какой момент появляется переполнение, и в какой момент в первый раз появляется искомая пара.
Но всё это в общем достаточно теоретические изыскания. Вероятнее всего, надо всё-таки что-то делать с загружаемым документом. На два его поделить, что-ли. Сколько там вообще строк то грузится?
Закон Брукера: Даже маленькая практика стоит большой теории.