Наконец то выловил баг, но вот как исправить - не знаю.
Вот что делает 1С-ка при записи документа:
exec sp_executesql N'
Update DH2337
set
IDDOC=@P1,
SP17145=@P2,
SP2311=@P3,
SP2313=@P4,
SP2314=@P5,
SP2315=@P6,
SP6004=@P7,
SP2317=@P8,
SP2318=@P9,
SP2319=@P10,
SP2320=@P11,
SP2321=@P12,
SP15782=@P13,
SP15783=@P14,
SP15784=@P15,
SP15796=@P16,
SP15859=@P17,
SP16323=@P18,
SP17146=@P19,
SP18397=@P20,
SP18910=@P21,
SP20122=@P22,
SP20602=@P23,
SP20807=@P24,
SP20952=@P25,
SP21433=@P26,
SP2330=@P27,
SP2331=@P28,
SP2332=@P29,
SP2333=@P30,
SP2334=@P31,
SP17181=@P32,
SP1853=@P33,
SP1855=@P34
where SP2312=@P35
',
N'@P1 varchar(9),
@P2 varchar(9),
@P3 varchar(9),
@P4 varchar(13),
@P5 varchar(9),
@P6 numeric(9,5),
@P7 datetime,
@P8 varchar(9),
@P9 varchar(9),
@P10 varchar(9),
@P11 varchar(9),
@P12 varchar(9),
@P13 varchar(9),
@P14 numeric(9,5),
@P15 datetime,
@P16 varchar(9),
@P17 varchar(15),
@P18 varchar(9),
@P19 numeric(1,0),
@P20 varchar(9),
@P21 numeric(1,0),
@P22 varchar(9),
@P23 numeric(1,0),
@P24 numeric(1,0),
@P25 numeric(6,0),
@P26 varchar(9),
@P27 numeric(13,2),
@P28 numeric(11,3),
@P29 numeric(14,3),
@P30 numeric(14,3),
@P31 numeric(14,3),
@P32 numeric(3,0),
@P33 varchar(9),
@P34 text,
@P35 varchar(9)',
' IZ2C ',
' 2Q ',
' 7CB ',
' 1MZ CXNN ',
' 1 ',
1.00000,
'2010-07-29 00:00:00',
' 1ZG ',
' VK ',
' 2U ',
' V3 ',
' XD ',
' 8 ',
1000.00000,
'2010-09-06 00:00:00',
' 1CB ',
' ',
' 0 ',
0,
' 1 ',
0,
' 7 ',
0,
0,
29,
' F ',
12931.38,
0,
12931.380,
2586.276,
15517.656,
0,
' 1 ',
'аванс 7800',
' 1PQ '
Обратите внимание на строку:
"where SP2312=@P35"т.е. вместо того чтобы использовать IDDOC 1С-ка использует поле дополнительно вручную созданного индекса. И конечно же получается ошибка:
Violation of PRIMARY KEY constraint 'PK_DH2337'. Cannot insert duplicate key in object 'dbo.DH2337'.