1С СЕРВИС 24/7
Обычно ошибка «Запись с такими ключевыми полями существует» возникает при записи данных в периодический регистр сведений. Ошибка сигнализирует о том, что за один период (день, месяц) не может быть две одинаковых записи. Например это могут быть ошибки при записи в регистр сведений «Цены номенклатуры», «Документы учтенные при расчете НДФЛ». По самому комментарию часто сложно определить в чем именно ошибка, поэтому к решению вопроса часто привлекают специалистов 1С, программистов.
В целом же решение проблемы сводится к следующему. Нужно открыть регистр сведений, на который ругается программа, отфильтровать данные по объекту, указанный в сообщении об ошибке и решить, какая запись неправильная или лишняя. Как правило удаление строчки в документе или изменение операции документа обновляет записи в регистре и документ проводиться в базе данных без проблем.
Никаких дополнительных технических средств, обработок для решения вопроса не требуется. Просто необходимо найти две одинаковые или несовместимые записи в регистре.
Запись с такими ключевыми полями существует
Помогите исправить. Плохо в теме разбираюсь и наверняка ошибка тупая, но прочитанные темы мне не дали ответа.
Нетиповой документ при наступлении определенных условий, делает движение в независимый нетиповой РС:
Процедура СделатьДвижения(Знач ТЗЦенообразование, Ссылка)
ТЗ = ТЗЦенообразование.Выгрузить();
НаборЗаписей = РегистрыСведений.АБ_ЛистыСогласованияСебестоимость.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Объект.Ссылка);
// Добавить записи в созданный набор записей
ТЗ = ТЗЦенообразование.Выгрузить();
Для Каждого ТекСтрока Из ТЗ Цикл
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Регистратор = Ссылка;
НоваяЗапись.ДатаЗаписи = ТекущаяДата();
НоваяЗапись.Строка = ТекСтрока.НомерСтроки;
НоваяЗапись.Номенклатура = ТекСтрока.Номенклатура;
НоваяЗапись.Склад = ТекСтрока.Склад;
НоваяЗапись.Партнер = Объект.Клиент;
НоваяЗапись.Себестоимость = ТекСтрока.Себестоимость;
НоваяЗапись.СебестоимостьБезНДС = ТекСтрока.СебестоимостьБезНДС;
НоваяЗапись.Цена = ТекСтрока.Цена;
НоваяЗапись.Рентабельность = ТекСтрока.Рентабельность;
НоваяЗапись.Доход = ТекСтрока.Доход;
КонецЦикла;
// Записать набор записей с замещением старого, соответствующего той же грануле
НаборЗаписей.Записать(Истина);
только в половине случаев ошибка
по причине:
Запись с такими ключевыми полями существует! : <ИмяРС>: <Номенклатура>, <Склад>, 1 (Регистр сведений: (АБ) Листы согласования себестоимость; Номер строки: 2)
Проблема не в номере строки
А в полном совпадении измерений другого документа
Добавьте в свой нетиповой РС еще одно измерение "Документ" и пишите туда Регистратора
Ошибка 1С: Запись с такими ключевыми полями существует
При работе с 1С у пользователей часто выскакивает окно «Запись с такими ключевыми полями существует». Это значит, что при внесении данных в одном ресурсе два раза была установлена одна и та же информация. 1С идентифицирует новую запись в качестве «клона» — и выдаёт ошибку.
Если необходимо поместить в регистр одинаковые данные, для второго файла требуется создать новое измерение типа «УникальныйИдентификатор». Для этого нужно прописать следующее:
В результате повторные записи будут помещаться в это измерение, а окно ошибки не будет появляться.
Поиск проблемы
Возможно, ситуация не требует создания нового измерения, допустим, ранее была допущена ошибка. Чтобы проверить это, есть два пути:
- В консоли запросов найти всю информацию по этому документу (например, ввести в поиске ФИО физического лица, по которому возникает ошибка);
- Необходимо пошагово изучить код в отладчике.
Фильтр регистра
Можно выполнить поиск и в регистре, при помощи фильтра. Для этого нужно создать свою форму поиска, потому что в стандартной отбор будет некорректным. Например, вы применяете фильтр следующими действиями: «Операции — Регистр сведений — Контактная информация». В результате откроется незаполненная форма. Но если зайти на карточку этого физического лица, в поле адрес уже будет указана вся информация (то есть, в базе она есть).
Дело в том, что стандартный фильтр применяет определённый отбор, которые просто не учитывает нужные строки. Чтобы найти данные, нужно отключить все конкретизирующие параметры поиска и ввести в поиске ФИО физического лица, по которому не проводится документ.
Ошибка в конфигурации 1С: Управление торговлей
В данной конфигурации цена может устанавливаться раз в сутки. Если изменения вносятся чаще – будет появляться ошибка «Запись с такими ключевыми полями существует».
Примечание: это не касается последних версий платформы, где возможно изменение цены в течение дня (каждому следующему документу соответствует новый порядковый номер).
Чтобы убрать ошибку в более ранних версиях, есть три варианта:
- Удалить более ранние данные по номенклатуре за этот день;
- Не проводить новый документ в течение текущего дня (сделать это на следующий день);
- В настройках регистра указать периодичность обновления 1 секунда.
Последний вариант – самый действенный. Он позволяет сохранить оба документа и выполнить операцию сразу, но возможны сбои в работе платформы по другим документам.
Примечание: Ошибка «Запись с такими ключевыми полями существует» означает, что в номенклатуре совпадают не только наименование и цены, но и характеристики. То есть, если характеристик несколько, то изменить цену получится.
Обычно данная ошибка является следствием невнимательности, то есть когда человек разместил определённую информацию, а спустя какое-то время пытается сделать это вновь. Если же действительно нужно создать аналогичный документ, но с другими значениями, проще всего создать новое измерение.
Корректировка поступления (исправление собственной ошибки)
Здравствуйте. 31.12.19 формируем документ «Корректировка поступления» — Исправление собственной ошибки. Ошибка в одной позиции номенклатуры. В итоге изменилась сумма НДС. Установили галку «отнести на тот же счет что и услуги», Отражать корректировку во всех разделах. При проведении документа выходит сообщение об ошибке.
Обсуждение (9)
Добрый день, Олеся.
Приведите, пожалуйста скрин документа Корректировка поступления. Вы корректируете 2019 г.?
Посмотрите материал по теме: Корректировка поступления в 1С 8.3 пункт Исправление ошибок.
Здравствуйте. Да 2019 г. В материале пример, где ошибочные реквизиты сч/фактуры. В нашем случае, ошибка в табличной части документа.
Добрый день, уточните,пожалуйста, подключен ли сервис проверки контрагентов? В сообщении об ошибке идет отсылка к совсем другому счет-фактуре. Он получен от того же контрагента?
Здравствуйте, ответ на вопрос продолжу я Ольга Шерст и Ирина Шаврова.
Немного не понятно — вы пишите что исправление в одной позиции номенклатуры. Но если посмотреть на ваш скрин то у вас сумма меняется по нескольким строкам одной и той же номенклатуры, более того, в строках где исправлено идет у вас Без НДС — это так и должно быть? Ирина Шаврова посмотрит далее по коду что это может быть за ошибка. Но уточните почему так у вас идет корректировка?
Приложение
Олеся, добрый день!
Cейчас все разложим «по полочкам».)
Итак, что означает ошибка, что «запись с такими ключевыми полями существует«?
Это значит, что, скорее всего, вы для удобства, не создали свой документ «Корректировка поступления» на основании первичного «Поступления услуг», а скопировали с предыдущего документа «Корректировки поступления».
Или на вопрос программы о том, использовать ли последнюю корректировку, ответили «Нет».
И все измерения регистра сведений «Ошибочные реквизиты контрагентов» продублировались.
Чтобы вам лучше понять, я приведу структуру регистра «Ошибочные реквизиты контрагентов».
Регистр работает так, что данные в выделенном прямоугольнике не могут повторяться.
При копировании происходит задвоение этих данных и проведение документа, включающее запись данных в указанный регистр, выдает ошибку.
Приложение
Я предлагаю вам войти в этот регистр сведений «Ошибочные реквизиты контрагентов» через Главное меню — Все функции — Регистры сведений — Ошибочные реквизиты контрагентов.
При открытии регистра вы увидите все записи, что уже внесены вашими «Корректировочными поступлениями».
Если вы сравните данные строки 2, что в этом регистре, с теми, что у вас сейчас на вкладке «Главное» в ошибочном документе, что не проводится — все станет ясно.
Запись с такими ключевыми полями уже существует. И она никогда не даст провести ваш документ в этом случае!
Что же делать?
Приложение
Я смоделировала вашу ситуацию у себя в тестовой базе.
Смотрите, что получается.
Первую корректировку поступления я создала на основании исходного документа «Поступление услуг», заполнила, как вы написали, и провела. Все прошло корректно.
Вторую корректировку я выполнила также на основании исходного документа и на вопрос программы о том, что существуют более поздние корректировки и нужно ли использовать их — ответила «Да». В результате при проведении ошибок не возникло, поскольку регистратором выступил ПОСЛЕДНИЙ корректировочный документ.
А вот для третьей корректировки поступления я просто скопировала последний корректировочный документ «Корректировка поступления» и на вопрос программы о том, использовать ли последнюю корректировку — ответила «Нет».
После заполнения документа при проведении у меня программа выдала именно вашу ошибку.
Поэтому вам нужно просто встать на исходный документ «Поступления услуг» и по кнопке «Ввести на основании» создать новую «Корректировку поступления». На вопрос программы использовать ли последнюю корректировку обязательно ответить «Да«. Тогда программа не задвоит записи регистра и документ после заполнения нормально проведется.
PS: Вы всегда можете смотреть данные в указанном регистре и сравнивать с теми, что указаны в заполняемом документе и тогда вам будет понятна логика программы.
Главное, чтобы в данных регистра, которые в первом моем комментарии выделены в рамку, не было полностью одинаковых значений.