Проблема с таблицами в SQL 1c 8.2 #561020


#0 by Bittin
Здравствуйте. У меня такая ситуация,делается переход с 8.1 на 8.2, конфигурация Бухгалтерия для Казахстана,клиент - серверный режим на MS SQL, после загрузки конфигурации, запускается отладка идет выполнение обновления бд, и во время обработки документов выдается ошибка следующего содержания: "{Обработка.ОбновлениеИнформационнойБазы.Форма.ЗаменаСсылокНаНеиспользующиесяСчета.Форма}: Ошибка при вызове метода контекста (Записать)                    НаборЗаписей.Записать; по причине: Попытка вставки неуникального значения в уникальный индекс: 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). Тестирование и исправление не помогает. Покопавшись в инете нашел статью в которой описывается как в sql найти эти значения и удалить и заново перепровести документ с ошибочными записями в бд, но выяснилась другая проблема  некоторые записи в таблице нельзя удалить(выдается ошибка) и я незнаю какой у меня документ чтобы заново перепровести. В файловом обычном режиме проходит все нормально, но при загрузке обновленной бд в sql опять ставятся даты большие в той таблице либо если смещение стоит 0, то дата будет 3999 если смещение 2000 то дата будет 5999 Плиззз подскажите пожалуйста, как исправить. Заранее спасибо!
#1 by МихаилМ
не забудте сделать архив (средствами скл) перед экспериментами что записано в _YearOffset ?
#2 by Bittin
2000
#3 by МихаилМ
какой номер релиза 1с 8.1 и 8.2
#4 by Bittin
#5 by МихаилМ
1) даты больше 3999 2) задовоение уник. индекса. скорее всего проще в коде  обработки ,создающей записи ,  найти доки с неправильной датой можно отключить индекс если (он может быть создан для первичного ключа) и потом разбираться.
#6 by Bittin
"можно отключить индекс если (он может быть создан для первичного ключа) " а где его взять и как отключить?
#7 by МихаилМ
в em или в ssms !!! ПЕРЕД изменением запомнить начальное состояние. проще всего на таблице правой кнопкой мыши- криате скрипт- - альтер табле и полученный скрипт сохранить далее в дереве таблиц есть поддерево сопутствующих объектов там есть indexex на нем дисабле или отключить. если рагается на первичный ключ то в таблица-изменить убрать ключик индекс сам исчезнет. но потом его надо будет восстановить.
#8 by Bittin
отключил индекс, но когда пытаешься отредактировать таблицу он говорит ошибка индекс отключен. Нашел документы которые вызывали ошибку-документы "Операции(бухгалтерский и налоговый учет)" т.е. документы где вручную забивали остатки на конец года. Смотрел по коду набор записей который он формирует, то у них дата нормальное 2009 год. Когда их удаляешь то все норм.
#9 by rs_trade
Да не надо индекс отключать. Строку двойник грохнуть да и все.
#10 by rs_trade
Только еще желательно узнать кому она принадлежит. Потом перепровести что бы.
#11 by sda553
проблема простая, скорее всего меняли состав субконт. Теперь в sql ной таблице почему то остались записи не с теми видами субконто какие нужно. Я не раз исправлял эту проблему, но вменяемая и понятная инструкция слишком длинная будет
#12 by Bittin
sda553, пжлста, распишите немогу врубиться как исправить эту ситуацию. Действительно я посмотрел по обработке эта таблица содержит "итоги по субконто3" Просто база срочно, нужна на нервы действуют.
#13 by Bittin
rs_trade, строк одинаковых там штук 20, 3 штуки удаляются остальные говорят что записят от других 11 и не удаляются
#14 by rs_trade
Итоги вообще можно полностью грохнуть. Потом пересчитать просто и все.
#15 by detec
как именно грохнуть? С помощью TABLE TRUBCATE?
#16 by detec
*TRUNCATE
#17 by Bittin
так мне что зайти в таблицу изменить выбору из SELECT TOP 1000 [_Period]      ,[_AccountRRef] на TRUNCATE TABLE [OtdelStroyTriumfAstany2].[dbo].[_AccRgAT35649] так?
#18 by rs_trade
Если эта таблица точно итоги, которые можно рассчитать. То да.
#19 by Bittin
а самой базы какое должно быть смещение 2000 или 0? сейчас 2000
#20 by sda553
Берем таблицу SQL которая хранит занчения субконто от того регистра который _AccRg35649 джойним ее с самой таблицей _AccRg35649, джойн делаешь по _RecorderRRef _LineNo и выставляешь _Correspond=0x00 для дебета или _Correspond=0x01 для кредита. (надо сделать по очереди вначале для дебета, потом для кредита) Из этого джойна отбираем _KindRRef и _AccountDtRRef для дебета или AccountCtRRef для кредита.
#21 by sda553
Сравниваем эти данные с таблицей _Acc[...номер какой то...]_ExtDim[.№..] который хранит план счетов от твоего регистра Там должны быть поля _DimKindRRef и _Acc[.#.]_IDRRef которые должны сходится с результатами полученными в Именно несовпадение и вызывает эту ошибку
#22 by sda553
Грохание итогов не поможет, т.к. ошибка вызывает именно тем что в итоги пытается записаться нехорошая запись при обработке документов, а не в итогах сидит нехорошая запись
#23 by rs_trade
не факт. попробовать можно.
#24 by sda553
Факт, я же уже упоминал, что часто исправлял эту ошибку
#25 by Bittin
поставил обновление, появились записи с датами в таблице очистил через TRUNCATE TABLE [OtdelStroyTriumfAstany2].[dbo].[_AccRgAT35649], запустил опять и опять записи появились
#26 by Bittin
я сделал такой запрос SELECT [_Period]      ,[_AccountRRef] Теперь он ругается на то что нет такого столбца. И Правильно, там нет такого, где его взять...?
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С