Имя: Пароль:
1C
1С v8
Попытка вставки неуникального значения в уникальный индекс
,
0 Nenaviwu1c20
 
20.07.12
13:51
Здравствуйте.Знаю эта тема надоела всем и все же я повторю ее))
Начат автоматический обмен данными по настройке "OMG" (14:04:57).
Получение почтовых сообщений
Ошибка при чтении изменений при обмене РИБ:  Ошибка при вызове метода контекста (ПрочитатьИзменения): Попытка вставки неуникального значения в уникальный индекс:
Microsoft OLE DB Provider for SQL Server: Cannot insert duplicate key row in object 'dbo._AccumRg17789' with unique index '_Accum17789_ByPeriod_TRN'.
HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=E, native=2601, line=1
Чтение данных из файла обмена завершено с ошибками!
Обмен данными по настройке "OMG" завершен (14:13:20).
1 Nenaviwu1c20
 
20.07.12
13:52
Хелп плз!!!Гилева 10 раз перечитал и попробовал
2 Nenaviwu1c20
 
20.07.12
14:03
ап
3 Nenaviwu1c20
 
20.07.12
14:11
Еще один ап
4 mistеr
 
20.07.12
14:25
Не надо паниковать. Надо выяснить что за регистр и почему приехали неуникальные данные.
5 Nenaviwu1c20
 
20.07.12
14:28
Регистр ТоварыНаСкладах через ПолучитьСтруктуруХраненияБазыДанных() узнал
6 Nenaviwu1c20
 
20.07.12
14:28
А данные приехали думаю во время того что когда шел обмен отключился свет)УПС не потянул))
7 Nenaviwu1c20
 
20.07.12
14:33
нулевые значения выяснил и удалил через SQL и еще пересчет итогов отключил и это тоже не помогло
8 Nenaviwu1c20
 
20.07.12
14:37
Такого поля как _KeyField вообще нт в таблице
9 Nenaviwu1c20
 
20.07.12
14:46
ап +
10 МихаилМ
 
20.07.12
15:00
либо разрешите запись задвроенных отключив индекс.
затем поиск задвоенных и исправление (удаление свертка)
перестройка индекса.

либо выяснение какие данные задвоенны с помощью ТЖ или ms sql профайлера

затем
либо удаление данных из файла обмена (с ссответствующей правкой контрольных сумм и колва записей)


или  перехват загрузки путем  создания триггера на вставку и отмера при загрузке.

если прадположить, что задвоенных данных 1-2 позиции то 2 способ
если больше то первый
11 МихаилМ
 
20.07.12
15:08
+(10)
можно попробовать 3-й способ (но как - не знаю) :

загрузить данные в "пустую базу"
с настройками для обмена и затем проанализировать загруженные данные
12 Nenaviwu1c20
 
20.07.12
15:08
Спасибо щас пробовать буду.Единственная проблема в том что я в SQL не силен.Я 1с-специалист.Но все же попробовать надо
13 Nenaviwu1c20
 
20.07.12
15:12
Первый способ более реален думаю т.к. я не могу в точности сказать даже примерное кол-во повторяющихся индексов
14 Nenaviwu1c20
 
20.07.12
15:17
Если есть возможность опишите использование первого способа
15 Bober
 
20.07.12
15:28
16 Nenaviwu1c20
 
20.07.12
15:32
(2)
17 МихаилМ
 
20.07.12
15:44
(14)

удаление индекса

DROP INDEX ['_Accum17789_ByPeriod_TRN] ON [dbo].['_Accum17789]

поиск дублей




select * from  _Accum17789  Acc (NOLOCK)
inner join
(
select    
   _Period
   _RecorderTRef
   _RecorderRRef
   _LineNo
from  _Accum17789 (NOLOCK)
group by
   _Period
   _RecorderTRef
   _RecorderRRef
   _LineNo
having count(*) > 1
) doubles

ON doubles._Period        = Acc._Period
  doubles._RecorderTRef  = Acc._RecorderTRef
  doubles._RecorderRRef  = Acc._RecorderRRef
  doubles._LineNo = Acc._LineNo



создание индекса

CREATE UNIQUE CLUSTERED INDEX [Accum17789_ByPeriod_TRN] ON [dbo].[Accum17789]
(
   [_Period] ASC,
   [_RecorderTRef] ASC,
   [_RecorderRRef] ASC,
   [_LineNo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
18 Nenaviwu1c20
 
20.07.12
15:51
Большущее СПАСИБО!!!!!!!!!Работает
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.