Имя: Пароль:
1C
1С v8
Проблема с таблицами в SQL 1c 8.2
, ,
0 Bittin
 
21.07.11
07:58
Здравствуйте.
У меня такая ситуация,делается переход с 8.1 на 8.2, конфигурация Бухгалтерия для Казахстана,клиент - серверный режим на MS SQL, после загрузки конфигурации, запускается отладка идет выполнение обновления бд, и во время обработки документов выдается ошибка следующего содержания:
"{Обработка.ОбновлениеИнформационнойБазы.Форма.ЗаменаСсылокНаНеиспользующиесяСчета.Форма(510)}: Ошибка при вызове метода контекста (Записать)
                   НаборЗаписей.Записать();
по причине:
Попытка вставки неуникального значения в уникальный индекс:
Microsoft OLE DB Provider for SQL Server: Не удается вставить повторяющуюся строку ключа в объект "dbo._AccRgAT35649" с уникальным индексом "_AccRg35649_ByPeriod_TRRRRRRRN". Повторяющееся значение ключа: (ноя  1 5999 12:00AM, 0xab8d602264cf180548c866b4006d6052, 0x915a0019d12005b711de6b75f3443ddb, 0x9180a24cb053d3bd419b3e926f77648a, 0x00000000000000000000000000000000, <NULL>, <NULL>, <NULL>, <NULL>, <NULL>, <NULL>, <NULL>, <NULL>, <NULL>, 0).
HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=E, native=2601, line=1"
Тестирование и исправление не помогает. Покопавшись в инете нашел статью http://www.1c-pro.ru/index.php?showtopic=22793 в которой описывается как в sql найти эти значения и удалить и заново перепровести документ с ошибочными записями в бд, но выяснилась другая проблема  некоторые записи в таблице нельзя удалить(выдается ошибка) и я незнаю какой у меня документ чтобы заново перепровести. В файловом обычном режиме проходит все нормально, но при загрузке обновленной бд в sql опять ставятся даты большие в той таблице либо если смещение стоит 0, то дата будет 3999 если смещение 2000 то дата будет 5999
Плиззз подскажите пожалуйста, как исправить.
Заранее спасибо!
1 МихаилМ
 
21.07.11
08:07
не забудте сделать архив (средствами скл)
перед экспериментами



что записано в _YearOffset ?
2 Bittin
 
21.07.11
08:08
2000
3 МихаилМ
 
21.07.11
08:11
(2)


какой номер релиза 1с 8.1 и 8.2
4 Bittin
 
21.07.11
08:17
8.1 1.5.19.5
8.2 2.0.3.14
5 МихаилМ
 
21.07.11
08:34
тут 2 проблемы

1) даты больше 3999
2) задовоение уник. индекса.

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



можно отключить индекс если (он может быть создан для первичного ключа)

и потом разбираться.
6 Bittin
 
21.07.11
08:37
"можно отключить индекс если (он может быть создан для первичного ключа) "
а где его взять и как отключить?
7 МихаилМ
 
21.07.11
08:58
в em или в ssms
!!!
ПЕРЕД изменением запомнить начальное состояние.
проще всего на таблице правой кнопкой мыши- криате скрипт-
- альтер табле

и полученный скрипт сохранить

далее
в дереве таблиц есть поддерево сопутствующих объектов

там есть indexex на нем дисабле или отключить.

если рагается на первичный ключ

то в таблица-изменить убрать ключик
индекс сам исчезнет.

но потом его надо будет восстановить.
8 Bittin
 
21.07.11
09:18
отключил индекс, но когда пытаешься отредактировать таблицу он говорит ошибка индекс отключен.
Нашел документы которые вызывали ошибку-документы "Операции(бухгалтерский и налоговый учет)" т.е. документы где вручную забивали остатки на конец года. Смотрел по коду набор записей который он формирует, то у них дата нормальное 2009 год. Когда их удаляешь то все норм.
9 rs_trade
 
21.07.11
09:22
Да не надо индекс отключать. Строку двойник грохнуть да и все.
10 rs_trade
 
21.07.11
09:25
Только еще желательно узнать кому она принадлежит. Потом перепровести что бы.
11 sda553
 
21.07.11
09:27
проблема простая, скорее всего меняли состав субконт. Теперь в sql ной таблице почему то остались записи не с теми видами субконто какие нужно. Я не раз исправлял эту проблему, но вменяемая и понятная инструкция слишком длинная будет
12 Bittin
 
21.07.11
09:37
sda553, пжлста, распишите немогу врубиться как исправить эту ситуацию. Действительно я посмотрел по обработке эта таблица содержит "итоги по субконто3"
Просто база срочно, нужна на нервы действуют.
13 Bittin
 
21.07.11
09:38
rs_trade, строк одинаковых там штук 20, 3 штуки удаляются остальные говорят что записят от других 11 и не удаляются
14 rs_trade
 
21.07.11
09:49
(12) Итоги вообще можно полностью грохнуть. Потом пересчитать просто и все.
15 detec
 
21.07.11
09:57
(14) как именно грохнуть? С помощью TABLE TRUBCATE?
16 detec
 
21.07.11
10:00
*TRUNCATE
17 Bittin
 
21.07.11
10:19
так мне что зайти в таблицу изменить выбору из
SELECT TOP 1000 [_Period]
     ,[_AccountRRef]

     ,[_Splitter]
 FROM [OtdelStroyTriumfAstany2].[dbo].[_AccRgAT35649]

на TRUNCATE TABLE [OtdelStroyTriumfAstany2].[dbo].[_AccRgAT35649]

так?
18 rs_trade
 
21.07.11
10:22
(17) Если эта таблица точно итоги, которые можно рассчитать. То да.

TRUNCATE TABLE [OtdelStroyTriumfAstany2].[dbo].[_AccRgAT35649]
19 Bittin
 
21.07.11
10:28
а самой базы какое должно быть смещение 2000 или 0? сейчас 2000
20 sda553
 
21.07.11
10:31
(12)
Берем таблицу SQL которая хранит занчения субконто от того регистра который _AccRg35649 джойним ее с самой таблицей _AccRg35649, джойн делаешь по _RecorderRRef _LineNo и выставляешь _Correspond=0x00 для дебета или _Correspond=0x01 для кредита. (надо сделать по очереди вначале для дебета, потом для кредита)

Из этого джойна отбираем
_KindRRef и _AccountDtRRef для дебета или AccountCtRRef для кредита.
21 sda553
 
21.07.11
10:35
Сравниваем эти данные с таблицей _Acc[...номер какой то...]_ExtDim[.№..] который хранит план счетов от твоего регистра
Там должны быть поля _DimKindRRef и _Acc[.#.]_IDRRef которые должны сходится с результатами полученными в (20)

Именно несовпадение и вызывает эту ошибку
22 sda553
 
21.07.11
10:39
Грохание итогов не поможет, т.к. ошибка вызывает именно тем что в итоги пытается записаться нехорошая запись при обработке документов, а не в итогах сидит нехорошая запись
23 rs_trade
 
21.07.11
10:41
(22) не факт. попробовать можно.
24 sda553
 
21.07.11
10:42
(23) Факт, я же уже упоминал, что часто исправлял эту ошибку
25 Bittin
 
21.07.11
10:52
поставил обновление, появились записи с датами в таблице очистил через TRUNCATE TABLE [OtdelStroyTriumfAstany2].[dbo].[_AccRgAT35649], запустил опять и опять записи появились
26 Bittin
 
25.07.11
07:51
я сделал такой запрос
SELECT [_Period]
     ,[_AccountRRef]
     ,[_Fld5632RRef]
     ,[_Fld5633RRef]
     ,[_Fld6326RRef]
     ,[_Value1_TYPE]
     ,[_Value1_RTRef]
     ,[_Value1_RRRef]
     ,[_Value2_TYPE]
     ,[_Value2_RTRef]
     ,[_Value2_RRRef]
     ,[_Value3_TYPE]
     ,[_Value3_RTRef]
     ,[_Value3_RRRef]
     ,[_Fld5634]
     ,[_TurnoverDt5641]
     ,[_TurnoverCt5642]
     ,[_Turnover5643]
     ,[_Fld5635]
     ,[_TurnoverDt5644]
     ,[_TurnoverCt5645]
     ,[_Turnover5646]
     ,[_Splitter]
 FROM [OtdelStroyTriumfAstany].[dbo].[_AccRgAT35649]
 Where
 [OtdelStroyTriumfAstany].[dbo].[_AccRgAT35649]._Correspond=0x00

Теперь он ругается на то что нет такого столбца. И Правильно, там нет такого, где его взять...?
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан