Исправление субконто с типом значения NULL + Лечение "Попытка вставки неуникального значения в уникальный индекс: Microsoft SQL Server"

11.04.24

Задачи пользователя - Корректировка данных

Исправляем 2 проблемы: 1) Проводки с типом субконто NULL, возникающие при добавлении нового субконто. 2) Ошибку: "Попытка вставки неуникального значения в уникальный индекс: Microsoft SQL Server"

Хочу поделиться решением 2х проблем, которые иногда возникают при добавлении нового субконто в случае наличия движений по этому счету.

Возникающие проблемы:

1) В оборотно-сальдовой ведомости с группировками по субконто по счету строки не сворачиваются.

2) При изменении документа выводит ошибку "Попытка вставки неуникального значения в уникальный индекс ..."

Я столкнулся одновременно и с той и с другой проблемой.

Причины:

Изначально, у счета был 1 субконто. Были введены по нему остатки. Позже добавляют 2-е субконто и создают последующие документы уже с 2-мя субконто. Возникает ситуация, когда у 1-го документа ввода остатков у субконто2 тип = NULL, а у всех последующих документов тип уже определен. 

 


 

В моём случае это было сделано обработкой переноса данных (это делал не я) и получилось так, что в документе было 2 записи, 1-я запись с типом субконто2 = NULL, а 2-я запись с типом субконто2 = "Основное средство".

Из за этого, помимо того, что в оборотно-сальдовой ведомости строки не сворачиваются по субконто, так еще при попытке изменить первоначальный "косячный" документ выводится ошибка:

Ошибка при вызове метода контекста (Записать)
по причине:
Нарушено условие уникальности данных.

Попытка вставки неуникального значения в уникальный индекс:
Microsoft SQL Server Native Client 11.0: Не удается вставить повторяющуюся строку ключа в объект "dbo._AccRgAT2625" с уникальным индексом "_AccRgAT2625_1". Повторяющееся значение ключа: (0, 0xa25af40ed3a15b76458310d45ac671b1, 4014-12-01 00:00:00, 0xb56400148535cac211dcb37a96865fd8, 0x08, 0x00000036, 0xb0341f53c68854524eac29f387baa355, <NULL>, <NULL>, <NULL>, <NULL>, 0x00000000000000000000000000000000, 0).
HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=E, native=2601, line=1

 


 

Для решения проблемы с неуникальным индексом многие предлагают исправлять это в таблицах на SQL сервере, выгружать / загружать в файловую и выполнять различные тестирования и исправления.

Я нашел, на мой взгяд более логичное и простое решение:

Добавляю субконто3, обновляю базу, удаляю субконто3, обновляю базу и вуаля, ошибка исчезает.

Дело в том, что индексы таблиц в базе данных создаются неявным образом при создании объектов конфигурации, а мы добавлением субконто3 как раз пересоздали индексы.

Что касается исправления проводок с типом субконто NULL:

Изначально вам нужно выполнить запрос в консоли наподобие:

ВЫБРАТЬ  
    ХозрасчетныйОборотыДтКт.Период КАК Период,
    ХозрасчетныйОборотыДтКт.Регистратор КАК Регистратор,
    ХозрасчетныйОборотыДтКт.СчетДт КАК СчетДт,
    ХозрасчетныйОборотыДтКт.СчетКт КАК СчетКт,
    ТИПЗНАЧЕНИЯ(ХозрасчетныйОборотыДтКт.СубконтоДт1) КАК Тип_СубконтоДт1,
    ТИПЗНАЧЕНИЯ(ХозрасчетныйОборотыДтКт.СубконтоДт2) КАК Тип_СубконтоДт2,    
    ТИПЗНАЧЕНИЯ(ХозрасчетныйОборотыДтКт.СубконтоДт3) КАК Тип_СубконтоДт3,
    ХозрасчетныйОборотыДтКт.СубконтоДт1 КАК СубконтоДт1,        
    ХозрасчетныйОборотыДтКт.СубконтоДт2 КАК СубконтоДт2,
    ХозрасчетныйОборотыДтКт.СубконтоДт3.Код КАК СубконтоДт3,
    ХозрасчетныйОборотыДтКт.СуммаОборот КАК СуммаОборот
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(, , Регистратор, , , , , ) КАК ХозрасчетныйОборотыДтКт
ГДЕ 
    ХозрасчетныйОборотыДтКт.Организация = &Организация
    И ХозрасчетныйОборотыДтКт.СчетДт = &СчетДт
    // И ХозрасчетныйОборотыДтКт.Регистратор = &Регистратор
    // И ХозрасчетныйОборотыДтКт.СубконтоДт1 = &Контрагент
    // И ХозрасчетныйОборотыДтКт.СубконтоДт2 = &ОС

Это был запрос по Дт (у меня были проблемы с Дт), если нужно Кт, тогда аналогичный запрос нужно выполнить по Кт (поменять с Дт на Кт в тексте запроса).

В результате вы сразу увидите, по какому типу субконто у вас "расходятся" аналитики.
Их то и нужно будет править, открыв период редактирования и написав примерно такую обработку:
 

    Набор = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
    Набор.Отбор.Регистратор.Установить(СсылкаНаОперацию);
    Набор.Прочитать();
    Для Каждого Запись Из Набор Цикл
        БухгалтерскийУчет.УстановитьСубконто(Запись.СчетДт, Запись.СубконтоДт, "ОсновныеСредства", Справочники.ОсновныеСредства.ПустаяСсылка());
    КонецЦикла;
    Набор.Записать();

Где СсылкаНаОперацию - это реквизит на форме (ссылка на "косячный" документ, который мы исправляем).

Причем, в случае программного изменения операции, так называемая "граница последовательности" не слетит, и все закрытия месяцев останутся выполненными, если будете редактировать документ вручную - слетит.


Конфигурация: Бухгалтерия предприятия 3.0 (релиз: 3.0.147.30)

Платформа: 1С:Предприятие 8.3 (8.3.23.1865) 

Вступайте в нашу телеграмм-группу Инфостарт

Попытка вставки неуникального значения в уникальный индекс Microsoft SQL Server NULL субконто субконто1 субконто2 субконто3 обработка исправления бухгалтерия предприятия

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14640 руб.

29.04.2020    51034    140    162    

95

Корректировка данных Системный администратор Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Незаменимая обработка для сопровождения конфигураций: ERP, УТ, КА. Позволяет вычистить многие ошибки в ключах аналитики, в ключевых справочниках конфигурации.

6100 руб.

10.02.2017    121688    734    177    

769

Зарплата Корректировка данных Бухгалтер 1С 8.3 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Бухгалтерский учет НДФЛ Платные (руб)

Внешняя обработка сравнивает НДФЛ из расчетного листка и НДФЛ из регистра, на разницу формирует документы в 2 шага. Исправляет расхождения, в том числе, когда Аванс больше Зарплаты

9760 руб.

01.09.2023    8895    322    93    

22

Корректировка данных Программист Пользователь 1С:Предприятие 8 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)

Представьте, что есть система QR - кодирования, которая НЕ ТРЕБУЕТ изменения конфигурации, НЕ ТРЕБУЕТ изменения ни одной печатной формы для добавления QR-кода, включая внешние, НЕ ХРАНИТ данные штрихкодов и их связь, от чего база не "пухнет", ИМЕЕТ возможность закодировать в QR-коде произвольные данные параметров для последующей обработки полученных данных, УМЕЕТ прикреплять сканы, УМЕЕТ обработать считанный QR-код как ВЫ захотите. А также ХРАНИТ историю операций в обход базы для каждого пользователя в отдельности и УМЕЕТ работать с 2D - сканерами. А также автоматически распознавать отсканированные печатные формы (картинки или pdf-файлы) и выполнять заданные произвольные алгоритмы, в том числе прикрепление их к документам! Обновление 3.3 от 24.06.2025!

26840 руб.

26.08.2018    56757    19    65    

58

Файловый обмен (TXT, XML, DBF), FTP Поиск данных Инструменты администратора БД Корректировка данных Системный администратор Программист 1С:Предприятие 8 1C:Бухгалтерия 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Данная обработка позволит Вам легко и просто, а главное - быстро, выполнить сравнение данных между ЛЮБЫМИ базами (и РИБ, по правилам конвертаций) по контрольным суммам выбранных объектов баз 1С, работающих на платформах 8.3 и выше. Удобный и понятный интерфейс в виде "мастера". Высокая скорость сравнения достигается за счет специального алгоритма расчета контрольной суммы объекта/записи и сравнения по данным суммам объектов 2х баз через файл. Имеется возможность выбора реквизитов, по которым система будет сравнивать объекты. Сравнение количества записей в движениях документов, возможность сравнивать данные по правилам конвертации и не только! Выбор объектов конфигурации для КАЖДОГО узла в отдельности с индивидуальным отбором для каждого объекта конфигурации, работа с FTP, сохранение или загрузка настроек, сохранение или загрузка результата сравнения, регистрация на обмен объекта и его движений. (Обновление от 12.11.2024, версия 2.2-2.5)

24400 руб.

27.10.2017    46797    32    15    

50

Корректировка данных Закрытие периода Мастера заполнения Программист Бизнес-аналитик Бухгалтер Пользователь 1С 8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление нашей фирмой 3.0 1С:УНФ Платные (руб)

Оптимизируйте процесс закрытия периодов. Автоматизируйте любые, даже самые сложные правила переноса и выполните инвентаризацию остатков за минуты. Гибкая обработка для 1С, которая работает как самостоятельный модуль — без привязки к БСП и с поддержкой большинства конфигураций. Ваш идеальный помощник для закрытия периода, исправления ошибок, реорганизации учета, корректировки и списания остатков.

6100 руб.

28.01.2026    1407    5    0    

4
Вознаграждение за ответ
Показать полностью
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. beardlyhich 17 05.03.25 22:19 Сейчас в теме
Красавец, спасибо
2. beardlyhich 17 05.03.25 22:19 Сейчас в теме
Красавец, спасибо.
3. Suker86 86 08.11.25 17:55 Сейчас в теме
Для отправки сообщения требуется регистрация/авторизация