После обновления конфигурации «1С:Бухгалтерия предприятия» до версии 3.0.167 (особенно в редакции КОРП) многие пользователи столкнулись с серьезной проблемой: привычная или универсальная оборотно-сальдовая ведомость (ОСВ) показывает некорректные данные по счету 68.01. При попытке перепровести документы возникает критическая ошибка: «Попытка вставки неуникального значения в уникальный индекс: Дублирование ключей в уникальном индексе _ACCRGAT...». В этой статье мы подробно разберем причины этой ситуации (затрагивающей структуру хранения базы данных) и рассмотрим пошаговые алгоритмы решения проблемы.
Разберем первопричину. В релизе 3.0.167 разработчики реализовали объединение субсчетов 68.01.1 (НДФЛ при доходах до 5 млн руб.) и 68.01.2 (НДФЛ при превышении 5 млн руб.) в один общий счет 68.01. Это связано с переходом на единые механизмы учета НДФЛ. Однако процесс «миграции» данных часто проходит некорректно по следующим причинам:
68.01 в версии КОРП обычно используется субконто РегистрацияВНалоговомОргане, тогда как на старых субсчетах 68.01.1 и 68.01.2 его могло не быть. При слиянии проводок система пытается записать две суммы в одну «ячейку» итогов, что вызывает конфликт уникальности в таблицах базы данных (индексы _AccRgAT).Я68.01, на котором «зависают» остатки, если процесс перехода не завершен (в ручном режиме здесь может потребоваться перенос остатков между счетами).Проанализируем базу данных на наличие проводок, которые вызывают сбой. Чаще всего это документы, где аналитика (субконто) заполнена частично или некорректно после удаления субсчетов. Чтобы увидеть полную картину по месяцам и регистраторам, можно использовать специализированные отчеты, например, остатки и обороты по счетам с субконто, но для быстрого поиска ошибок подойдет следующий запрос:
ВЫБРАТЬ
ХозрасчетныйОбороты.Регистратор КАК Регистратор
ИЗ
РегистрБухгалтерии.Хозрасчетный.Обороты(&Начало, &Конец, Регистратор, Счет = &Счет, , Организация = &Организация, , ) КАК ХозрасчетныйОбороты
ГДЕ
(ХозрасчетныйОбороты.Субконто2 ЕСТЬ NULL ИЛИ ХозрасчетныйОбороты.Субконто1 ЕСТЬ NULL)
Этот код позволяет найти регистраторы, у которых после обновления «слетело» субконто РегистрацияВНалоговомОргане или КБК. Именно эти документы блокируют нормальный расчет итогов.
Выясним, все ли регламентные процедуры выполнены успешно. Перейдем в раздел Администрирование — Обслуживание — Результаты обновления программы. Нам нужно убедиться, что следующие обработчики имеют статус «Выполнен»:
ПланыСчетов.Хозрасчетный.ОбновитьПараметрыСчетовНДФЛРегистрыСведений.РасчетНачисленияНалоговНаЕНС.ЗаменитьСчетУчетаНДФЛПланыСчетов.Хозрасчетный.ЗаменитьСчетУчетаНДФЛЕсли какой-то из них завис, попробуем запустить его повторно. Если стандартные средства не помогают, рассмотрим программный способ принудительного выполнения замены в регистре ЕНС:
ИмяПроцедуры = "РегистрыСведений.РасчетНачисленияНалоговНаЕНС.ЗаменитьСчетУчетаНДФЛ";
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Регистратор ИЗ РегистрСведений.РасчетНачисленияНалоговНаЕНС ГДЕ Период = ДАТАВРЕМЯ(1,1,1)";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Набор = РегистрыСведений.РасчетНачисленияНалоговНаЕНС.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(Выборка.Регистратор);
Набор.Прочитать();
Для каждого Запись Из Набор Цикл
Запись.Период = Выборка.Регистратор.Дата;
КонецЦикла;
Набор.Записать();
КонецЦикла;
Разберем наиболее эффективный метод исправления ошибки уникальности индекса. Проблема в том, что 1С не дает записать документ, пока индекс итогов активен и видит дублирующие записи. Выполним следующие действия:
Журнал проводок (бухгалтерский и налоговый учет).Сведения об удержанном НДФЛ или Отражение зарплаты в бухучете). Теперь они проведутся без ошибки, так как контроль уникальности в таблице итогов отключен.Разработчики 1С выпустили исправления для этой ситуации. Проанализируем, установлены ли они у вас:
68.01, когда нарушается условие уникальности в базах КОРП.КорректировкаСчетовНДФЛ.Если вы уже обновились до версии 168 или 169, попробуйте запустить эту обработку вручную (альтернативно может использоваться внешняя корректировка данных налогового учета). Для этого воспользуйтесь меню «Функции для технического специалиста» (ранее «Все функции»), введите в поиске Корректировка счетов НДФЛ и запустите ее. В открывшемся окне нажмите кнопку Исправить сейчас. Это программно объединит движения по ставкам 13% и 15%, которые после удаления субсчетов стали идентичными.
Посмотрим на состояние счета Я68.01. Это вспомогательный объект (префикс «Я» означает «Якорный» или транзитный для обновления). Если после всех процедур на нем остаются суммы, значит, какие-то документы не смогли изменить свои движения автоматически. После успешного применения методов из Шага 3 или Шага 4 остатки со счета Я68.01 должны уйти на счет 68.01 автоматически. Если этого не произошло, необходимо вручную перепровести документы, которые делают движения по этому «Я-счету».
Проблема носит массовый характер и связана с изменением структуры метаданных. Краткий план действий:
EF_30180711.Регистрация в налоговом органе на счете 68.01 и убедиться, что учет по подразделениям включен корректно в функциональности.Помните, что стандартное Тестирование и исправление с галочкой «Пересчет итогов» может не помочь, пока не будут исправлены сами записи в регистре, так как пересчет просто наткнется на ту же ошибку уникальности индекса SQL-таблицы. А после восстановления учета рекомендуем проверить отчетность, возможно потребуется автоматическое исправление 170 строки в 6-НДФЛ.