Исправление субконто с типом значения 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 обработка исправления бухгалтерия предприятия

См. также

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

Обработка исправляет технические ошибки по НДФЛ, взаиморасчетам с сотрудниками в 1С:ЗУП (1С:ЗКГУ) на начало года. Фактически все ошибки, которые проявляются в ведомостях на выплату, расчетных листках, при заполнении ведомостей на выплату и отчетах 6-НДФЛ и т.д. нужно начинать исправлять с начала расчетного года. Это позволит быть уверенными, что после завершения расчетов предыдущего года, начали работать с «чистого листа» без ошибочных остатков.

60000 руб.

06.10.2023    4797    38    20    

46

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

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

14400 руб.

29.04.2020    34293    109    152    

75

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

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

3600 руб.

10.02.2017    111768    673    175    

712

Корректировка данных Программист Пользователь Платформа 1С v8.3 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.2 от 09.06.2024!

19200 руб.

26.08.2018    52759    16    61    

55

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

Внешняя обработка, позволяющая произвольным образом заполнять документ "Корректировка регистров" Предназначена для использования в конфигурациях "Управление торговлей 11", "Управление небольшой фирмой", "ERP Управление предприятием", а также в других конфигурациях, в состав которых входит библиотека стандартных подсистем (БСП) версии 2.2+ и указанный выше документ.

2400 руб.

13.07.2015    51497    175    29    

127

Корректировка данных Бухгалтер Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бухгалтерский учет Налоговый учет Налог на прибыль Платные (руб)

Обработка служит для: выравнивания бухгалтерского и налогового учета на определенную дату по выбранным счетам; закрытия остатков по выбранным счетам; обнуления налогового учета (ПР, ВР также будут обнулены)

2880 руб.

05.05.2024    751    11    0    

7

Корректировка данных Программист Бухгалтер Пользователь Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет НДС Платные (руб)

Обработка предназначена для ООО для смены системы налогообложения УСН на ОСНО, без ведения раздельного учета, входящего НДС по способам учета. При реализации перехода в операции формируются проводки по выделению НДС, который ранее учитывался в стоимости номенклатуры, регистр «НДС Предъявленный».

6000 руб.

22.01.2025    441    1    0    

3
Оставьте свое сообщение