Исправление субконто с типом значения 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С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

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

14400 руб.

29.04.2020    33039    107    152    

73

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

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

3600 руб.

10.02.2017    110765    665    174    

704

Корректировка данных Программист Пользователь Платформа 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    52279    16    61    

55

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

Закрытие месяца - важный процесс в современных конфигурациях, таких как УТ 11.4, УТ 11.5, КА 2.4, КА 2.5 ERP 2.4,ERP 2.5, КА 2 Казахстан, УТ 3 Казахстан регламентные операции влияют на расчет себестоимости, и ошибки в данном расчете не дают картины деятельности организации.

4800 руб.

27.10.2021    24135    242    35    

79

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

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

28800 руб.

06.10.2023    4135    35    18    

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