Как исправить неправильные итоги по счету 68.01 и ошибку дублирования ключей после обновления 1С:Бухгалтерия 3.0.167

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Налоговый учет
← На главную

После обновления конфигурации «1С:Бухгалтерия предприятия» до версии 3.0.167 (особенно в редакции КОРП) многие пользователи столкнулись с серьезной проблемой: привычная или универсальная оборотно-сальдовая ведомость (ОСВ) показывает некорректные данные по счету 68.01. При попытке перепровести документы возникает критическая ошибка: «Попытка вставки неуникального значения в уникальный индекс: Дублирование ключей в уникальном индексе _ACCRGAT...». В этой статье мы подробно разберем причины этой ситуации (затрагивающей структуру хранения базы данных) и рассмотрим пошаговые алгоритмы решения проблемы.

Почему возникают ошибки на счете 68.01?

Разберем первопричину. В релизе 3.0.167 разработчики реализовали объединение субсчетов 68.01.1 (НДФЛ при доходах до 5 млн руб.) и 68.01.2 (НДФЛ при превышении 5 млн руб.) в один общий счет 68.01. Это связано с переходом на единые механизмы учета НДФЛ. Однако процесс «миграции» данных часто проходит некорректно по следующим причинам:

  1. Конфликт аналитики: На счете 68.01 в версии КОРП обычно используется субконто РегистрацияВНалоговомОргане, тогда как на старых субсчетах 68.01.1 и 68.01.2 его могло не быть. При слиянии проводок система пытается записать две суммы в одну «ячейку» итогов, что вызывает конфликт уникальности в таблицах базы данных (индексы _AccRgAT).
  2. Невыполнение отложенных обработчиков: Процедуры обновления, которые должны были «схлопнуть» движения документов, могли завершиться с ошибкой или вовсе не запуститься.
  3. Транзитные счета: В системе появляется вспомогательный счет Я68.01, на котором «зависают» остатки, если процесс перехода не завершен (в ручном режиме здесь может потребоваться перенос остатков между счетами).

Шаг 1. Диагностика проблемных документов

Проанализируем базу данных на наличие проводок, которые вызывают сбой. Чаще всего это документы, где аналитика (субконто) заполнена частично или некорректно после удаления субсчетов. Чтобы увидеть полную картину по месяцам и регистраторам, можно использовать специализированные отчеты, например, остатки и обороты по счетам с субконто, но для быстрого поиска ошибок подойдет следующий запрос:


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

Этот код позволяет найти регистраторы, у которых после обновления «слетело» субконто РегистрацияВНалоговомОргане или КБК. Именно эти документы блокируют нормальный расчет итогов.

Шаг 2. Проверка и запуск обработчиков обновления

Выясним, все ли регламентные процедуры выполнены успешно. Перейдем в раздел Администрирование — Обслуживание — Результаты обновления программы. Нам нужно убедиться, что следующие обработчики имеют статус «Выполнен»:

Если какой-то из них завис, попробуем запустить его повторно. Если стандартные средства не помогают, рассмотрим программный способ принудительного выполнения замены в регистре ЕНС:


ИмяПроцедуры = "РегистрыСведений.РасчетНачисленияНалоговНаЕНС.ЗаменитьСчетУчетаНДФЛ";
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Регистратор ИЗ РегистрСведений.РасчетНачисленияНалоговНаЕНС ГДЕ Период = ДАТАВРЕМЯ(1,1,1)";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
    Набор = РегистрыСведений.РасчетНачисленияНалоговНаЕНС.СоздатьНаборЗаписей();
    Набор.Отбор.Регистратор.Установить(Выборка.Регистратор);
    Набор.Прочитать();
    Для каждого Запись Из Набор Цикл
        Запись.Период = Выборка.Регистратор.Дата;
    КонецЦикла;
    Набор.Записать();
КонецЦикла;

Шаг 3. Устранение ошибки «Дублирование ключей» (Метод временного отключения итогов)

Разберем наиболее эффективный метод исправления ошибки уникальности индекса. Проблема в том, что 1С не дает записать документ, пока индекс итогов активен и видит дублирующие записи. Выполним следующие действия:

  1. Перейдем в Администрирование — Обслуживание — Управление итогами.
  2. Нажмем на ссылку Полные возможности.
  3. Найдем в списке Журнал проводок (бухгалтерский и налоговый учет).
  4. Выберем команду Итоги — Выключить использование итогов.
  5. Временно снимем дату запрета редактирования (если документы находятся в прошлом периоде).
  6. Перепроведем проблемные документы (например, Сведения об удержанном НДФЛ или Отражение зарплаты в бухучете). Теперь они проведутся без ошибки, так как контроль уникальности в таблице итогов отключен.
  7. Вернемся в управление итогами и выберем Включить использование итогов. При включении система сама пересчитает и «схлопнет» записи корректно.

Шаг 4. Использование официальных патчей и встроенных инструментов

Разработчики 1С выпустили исправления для этой ситуации. Проанализируем, установлены ли они у вас:

Если вы уже обновились до версии 168 или 169, попробуйте запустить эту обработку вручную (альтернативно может использоваться внешняя корректировка данных налогового учета). Для этого воспользуйтесь меню «Функции для технического специалиста» (ранее «Все функции»), введите в поиске Корректировка счетов НДФЛ и запустите ее. В открывшемся окне нажмите кнопку Исправить сейчас. Это программно объединит движения по ставкам 13% и 15%, которые после удаления субсчетов стали идентичными.

Особенности счета Я68.01

Посмотрим на состояние счета Я68.01. Это вспомогательный объект (префикс «Я» означает «Якорный» или транзитный для обновления). Если после всех процедур на нем остаются суммы, значит, какие-то документы не смогли изменить свои движения автоматически. После успешного применения методов из Шага 3 или Шага 4 остатки со счета Я68.01 должны уйти на счет 68.01 автоматически. Если этого не произошло, необходимо вручную перепровести документы, которые делают движения по этому «Я-счету».

Резюме для системного администратора и бухгалтера

Проблема носит массовый характер и связана с изменением структуры метаданных. Краткий план действий:

  1. Сделать архивную копию базы.
  2. Установить патч EF_30180711.
  3. Если база КОРП — проверить наличие субконто Регистрация в налоговом органе на счете 68.01 и убедиться, что учет по подразделениям включен корректно в функциональности.
  4. Применить обработку Корректировка счетов НДФЛ из свежего релиза.
  5. Если итоги в ОСВ все еще не сходятся — выполнить процедуру с отключением и включением итогов регистра бухгалтерии.

Помните, что стандартное Тестирование и исправление с галочкой «Пересчет итогов» может не помочь, пока не будут исправлены сами записи в регистре, так как пересчет просто наткнется на ту же ошибку уникальности индекса SQL-таблицы. А после восстановления учета рекомендуем проверить отчетность, возможно потребуется автоматическое исправление 170 строки в 6-НДФЛ.

← На главную