Как исправить ошибку «Запись с такими ключевыми полями существует» при проведении документов по основным средствам?

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

При работе в программе 1С:Бухгалтерия предприятия 3.0 пользователи и программисты часто сталкиваются с неприятной ситуацией: при попытке провести документ «Передача ОС», «Принятие к учету ОС» или «Модернизация ОС» система выдает критическую ошибку: «Запись с такими ключевыми полями существует!». Чаще всего проблема указывает на регистры сведений НачислениеАмортизацииОСНалоговыйУчет или ПараметрыАмортизацииОСНалоговыйУчет. Особенно остро эта проблема проявляется в базах, которые были перенесены из редакции 2.0.

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

Причина 1: Сбой в истории настроек системы налогообложения

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

Рассмотрим решение:

  1. Перейдем в раздел Главное — Налоги и отчеты.
  2. Выберем пункт Система налогообложения.
  3. Нажмем на ссылку История изменений.
  4. Проанализируем записи. Часто помогает простое «переутверждение»: создадим новую запись с текущего (или начала текущего) года, даже если режим не менялся. Это заставит систему пересчитать функциональные опции.
  5. Если организация является ИП на ОСНО, важно убедиться, что настройки соответствуют текущему статусу плательщика НДФЛ.

Причина 2: Программное дублирование движений в типовом коде

Иногда корень проблемы кроется в самой логике проведения документа, которая дает сбой при определенных условиях (например, у ИП на ОСНО). Проанализируем ситуацию: программа последовательно вызывает несколько процедур формирования движений, и каждая из них пытается добавить строку в один и тот же набор записей регистра сведений.

Разберем фрагмент кода, где может происходить дублирование. В модуле УчетОС вызываются процедуры:


УчетОС.СформироватьДвиженияИзменениеПараметровАмортизацииОСНУ(...);
УчетОС.СформироватьДвиженияИзменениеПризнакаНачисленияАмортизацииОСНУ(...);

Внутри этих процедур выполняется проверка ОтражатьВНалоговомУчете. Если функциональная опция ПлательщикНалогаНаПрибыль возвращает Истина, выполняется добавление записи:


Движение = Движения.НачислениеАмортизацииОСНалоговыйУчет.Добавить;
Движение.Период = Реквизиты.Период;
Движение.ОсновноеСредство = СтрокаТаблицы.ОсновноеСредство;
Движение.Организация = Реквизиты.Организация;
Движение.НачислятьАмортизацию = Реквизиты.НачислятьАмортизацию;

Проблема в том, что далее по стеку вызовов может сработать процедура УчетДоходовИРасходовПредпринимателя.СформироватьДвиженияПринятиеКУчетуОС, которая снова пытается добавить запись в этот же регистр для того же самого ОС. Поскольку ключ регистра сведений (обычно это Период + ОС + Организация) совпадает, возникает конфликт при записи в базу данных.

Причина 3: Использование амортизационной премии

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

В некоторых релизах конфигурации наблюдался баг: если ОС принимается к учету с премией, система генерирует движения по параметрам амортизации в основном блоке и повторно — в блоке обработки премии. Чтобы проверить эту версию, попробуйте временно снять флаг амортизационной премии. Если документ проведется — значит, вы столкнулись именно с этой ошибкой релиза.

Как исправить:

  1. Обновите конфигурацию до самого актуального релиза (разработчики 1С регулярно выпускают патчи для подобных ошибок).
  2. Если обновление невозможно, потребуется вмешательство программиста в расширение конфигурации для добавления проверки Если ... Тогда Возврат; КонецЕсли; перед повторным добавлением записи в процедурах УчетОС.

Причина 4: Ошибки в справочнике ОС и некорректные счета

Иногда ошибка вызвана человеческим фактором или некорректными данными, перенесенными из 2.0. Рассмотрим по шагам, что нужно проверить в данных:

1. Проверка дублей в табличной части. Убедитесь, что в документе одно и то же ОС не выбрано дважды в разных строках. Программа попытается создать две записи в регистр на одну секунду времени для одного объекта, что недопустимо.

2. Счета учета. Проанализируем счета начисления амортизации (например, 02.01). Если в документе принятия к учету ошибочно указан счет, который не соответствует виду актива, или выбрана некорректная аналитика, механизмы проведения могут «зациклиться» на формировании движений по налоговому учету.

3. Время документа. Регистры сведений по ОС имеют периодичность «В пределах секунды». Если в одну и ту же секунду (например, 09:00:00) введены два разных документа по одному ОС (например, «Принятие к учету» и «Модернизация»), возникнет ошибка ключевых полей. Попробуйте изменить время одного из документов на одну секунду.

Техническая диагностика и очистка «хвостов»

Если вышеперечисленные методы не помогают, выполним глубокую техническую очистку базы. Выясним, не остались ли в базе «призрачные» записи, которые не видны в интерфейсе, но мешают проведению.

Рекомендуемый алгоритм действий:

  1. Очистка кэша. Удалите базу из списка и добавьте её заново, либо очистите папки %AppData%\1C\1Cv8. Часто платформа «помнит» старую структуру регистров, что вызывает конфликты.
  2. Использование консоли запросов. Выполним запрос к регистру НачислениеАмортизацииОСНалоговыйУчет с отбором по конкретному «проблемному» ОС. Если запрос находит записи, датированные тем же числом, что и новый документ, их необходимо удалить (через «Групповое изменение реквизитов» или специальную обработку), так как они блокируют проведение.
  3. Тестирование и исправление (ТиИ). Обязательно выполните ТиИ с флагами «Реиндексация таблиц» и «Проверка логической целостности». Если база файловая, предварительно запустите утилиту chdbfl.exe из каталога установки платформы.
  4. Функциональная опция. Как упоминалось в обсуждении, иногда помогает временная установка ресурса ПлательщикНалогаНаПрибыль в значение Ложь в регистре настроек через обработку «Редактирование регистров сведений», проведение документа и возврат настройки обратно.

Подведем итог: ошибка «Запись с такими ключевыми полями существует» в учете ОС — это почти всегда конфликт между настройками налогообложения и жесткими требованиями уникальности записей в регистрах сведений. Начните с перевыбора системы налогообложения в настройках — в 90% случаев это решает проблему без правки кода.

← На главную