В 1С может появиться ошибка такого рода: Ошибка при чтении изменений при обмене РИБ: Ошибка при вызове метода контекста (ПрочитатьИзменения): Попытка вставки неуникального значения в уникальный индекс:
Microsoft SQL Server Native Client 11.0: Не удается вставить повторяющуюся строку ключа в объект "dbo._AccRgAT118760" с уникальным индексом "_AccR118760_ByPeriod_TRRRRN". Повторяющееся значение ключа: (ноя 1 5999 12:00AM, 0xab52f3e52b35efa847b0cfef9c90ff9d, 0x95eb00112f2a1abf11dac09f12116a47, NULL, NULL, NULL, NULL, 0).
HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=E, native=2601, line=1
Техническая информация:
Ошибка при чтении изменений при обмене РИБ: {ОбщийМодуль.ПроцедурыОбменаДанными.Модуль(1559)}: Ошибка при вызове метода контекста (ПрочитатьИзменения): Попытка вставки неуникального значения в уникальный индекс:
(1)Обычно такого рода ошибка появляется (у нас) при изменении структуры счета: например признака "суммовой" по одному из субконто, или что-то подобное... Но не каждый раз. Предполагаю, что это как-то связанно с тем в каком порядке в фале обмена идет информация об изменении - видимо бывает так, что сначала пытаются загрузится движения, а потом - изменения плана счетов. Тогда пересчет существующих движений еще не произошел и вставка новых движений (и их индексация) конфликтует с ними... Ну сугубо мои домыслы - глубокий анализ не проводил...
А еще можно просто отключить использование итогов, выполнить обмен и включить использование итогов обратно... Индекс полностью пересоздастся (AccRg - это таблица регистра бухгалтерского, если ничего не путаю) и все будет хорошо.
В нашем случае произошел сбой в SQL, повредился один из авансовых отчетов. Что ты с ним не делай, появлялась такая ошибка. В пример я скопировал ошибку из обмена, в котором были изменения для этого документа. По факту получилось что вовремя сбоя происходили манипуляции с документом и проводки по нему записались частично. Повторно записать или удалить проводки при помощи 1С не получалось, всегда появлялась ошибка "Не удается вставить повторяющуюся строку ключа в объект". Перепробовав все что можно помог только этот способ с нахождением битых данных и удаление их через SQL.
(4)Т.е. вы хотите сказать, что пробовали отключить итоги и провести какие-либо из указанных действий и получали то-же сообщение? Простите, но не верю! Сообщение касается вставки неуникального индекса таблицы AccRgAT, которая является таблицей итогов (https://its.1c.ru/db/metod8dev#content:1798:hdoc), при отключенных итогах этого никак не может происходить. То же и при перепроведении - эта таблица при отключенных итогах не работает. А при последующем включении итогов они полностью пересчитываются и индекс пересоздается... Я бы не стал настаивать, но операция включения/выключения итогов в моем понимании на порядок проще и, главное, безопаснее, чем прямое вмешательство в SQL... Даже при хорошем знании структуры таблиц это рискованно, а вы, как мне кажется, действовали что называется "по наитию"... ) Проблема решена и это хорошо, но я бы не рекомендовал этот метод, как "best practices".
Я не утверждаю что это золотой грааль решения данной проблемы, но данный способ нам помог и я решил им поделиться. SQL-я боятся не надо и если все делать грамотно и аккуратно, то ни чего не сломаешь.
(6) Как говорил один знакомый электрик, люди боятся электричества в двух случаях: когда не знают, как это работает и когда ТОЧНО знают, как это работает. А не боятся - когда ДУМАЮТ, что знают... С SQL - тоже самое. И ваш случай, к сожалению, последний.
Поясню.
AccRgAT - таблица ИТОГОВ по счету.
_AccountRRef - Ссылка на счет.
_Fld18737RRef - согласно документации - измерение или ресурс... Предположу ,что в вашем случае - измерение, и думаю, что это - Организация.
-1500 - Собственно итог.
Что выделаете? Вы удаляете запись из таблицы итогов. Напрямую из таблицы. По какому-то счету. После чего у вас все проводится и вы думаете, что исправили ошибку.
После этого вы итоге не пересчитываете, а счастливо продолжаете жить дальше...
Хотите совет? ;) Пересчитайте итоги. Бухгалтерские. Полностью. Можно еще построить оборотку по предположительно проблемным счетам - до и после этой операции. И сравнить. Возможно удивитесь.
Итоги после этого пересчитали и оборотку формировали, все норм.
Могу да же больше сказать, эта проблема возникла в последний день сдачи отчетности и проблему надо было решать оперативно. Отчетность сдана успешна.
можно проблему решить куда проще, просто создаем запись с такой ссылкой в 1с, у меня была проблема:
была вскуле запись о строке табличной части документа, но небыло самого документа, я просто создал пустой документ с этой ссылкой, а потом он просто обменом перезаписался
в случае с регистром накопления, создаем пустой документ и проводим его, он сам очистит все записи лишние из регистра накопления или перезапишет их и будет все ок
Более простое решение:
1. Копию базу сделали.
2. По стандарту: Кеш почистили, Тестирование и исправление данных 2 раза запустили крыжики все, первый раз очистить, второй раз создать.
3. Расшифровываем косячный объект согласно инструкции
https://its.1c.ru/db/metod8dev#content:1798:hdoc в Вашем и моем случае это бухгалтерские итоги.
У меня на 01.12.4018г, у Вас "ноя 1 5999 12:00AM" - 1.11.5999г
3. Заходим в Все функции / Стандартные / Управление итогами
Внизу справа гиперссылка Полные возможности
Находим регистр бухгалтерии
Журнал проводок (бухгалтерский и налоговый учет) (регистр бухгалтерии)
Спозиционировались на нем, нажали в командной панели Пересчет, Пересчитать Итоги,
Затем там же жмем кнопку Установить период итогов и меняем максимальный или минимальный (у кого какой глюканул) период Ок, и возвращаем период назад и опять Ок.
Как вариант. У меня была ситуация, что я не мог удалить операцию, сделанную вручную. Как то ее сделали, а вот на удалить не получалось - выдавалась ошибка "... Попытка вставки неуникального значения в уникальный индекс.... " и т.д.
В ошибке было описание таблицы, в которой это произошло. Зашел в SQL через Management нашел эту таблицу, нужный индекс и в свойстве индекса снял галочку с "Уникальный". Потом удалил в 1с нужную операцию. И она удалилась. Но обратно галочка "Уникальный" в индексе не ставилась. Также выходила ошибка неуникального значения. И я просто удалил сам индекс. Зашел в 1ску и произвел тестирование и исправление с реиндексацией и пересчетом итогов... Проверил потом в SQL - по таблице создался индекс уже с отметкой уникальности... и Все!!!