при обновлении версии программы возникла ошибка запись с такими ключевыми полями существует
Исправление ошибки «Запись с такими ключевыми полями существует» в обработке «Поиск и замена значений»
Обработка ПоискИЗаменаЗначений.epf — роскошная и поистине незаменимая вещь. И я очень рад, что своими скромными усилиями помогу сделать её ещё чуть-чуть лучше.
В обработке есть небольшой косячок, проявляющийся при заменах в регистре сведений.
Допустим, у нас в наборе есть две записи, одна с заменяемым значением, вторая с заменяющим. В остальном эти две записи идентичны по всем измерениям и ресурсам.
Обработка пытается выполнить замену. В результате эти две записи становятся полностью идентичными, и возникает ошибка «Запись с такими ключевыми полями существует».
Например, в БП есть регистр сведений «Калькуляция себестоимости», туда пишется аналитика затрат по номенклатурным позициям, при проведении регламентной операции закрытия месяца. В том числе туда пишется статья затрат.
При замене статьи затрат, можем получить картину маслом:
Можно ли это исправить? Можно!
Вот допиленная обработка. При выполнении замен в записях регистра сведений, обработка дополнительно проверяет уникальность изменённой записи по ключевым полям. И если запись с такими ключевыми полями уже существует, мы удаляем изменённую запись из набора (ну а куда её девать?).
Изменения внесены только в модуль формы, весь добавленный код отмечен тегом «EarlyBird».
Тема: 1С 8.3 Ошибка обновления
Опции темы
Поиск по теме
1С 8.3 Ошибка обновления
Давно не обновлялся. Тут решил в связи с тем, что произошли изменения в реквизитах платежей в бюджет. Поэтому три дня обновлял БП с версии 3.0.69.х до 3.0.87.28. Где-то в районе 3.0.75 выдало предупреждение о каком-то неуникальном имени. Я не обратил внимание на это и продолжил обновление. По завершению зашел в базу. При входе выдало ошибку:
Запись с такими ключевыми полями существует! : ОбработчикиОбновления: РасчетЗарплатыДляНебольшихОрганизаций.ЗаполнитьУдержаноОтпусковИБольничных (Регистр сведений: Обработчики обновления; Номер строки: 236)
<ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(3418)>: НаборРазделенныхОбработчиков.Записать();
<ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(1901)>: ДобавитьОтложенныеОбработчики(ИмяБиблиотеки, ОбработчикиПоВерсиям.Строки, ГруппаОбновления, ТекстОшибок);
<ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(1686)>: ОбновитьСписокВыполняемыхОбработчиковОбновления(ИтерацииОбновления);
<ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(93)>: ВыполнитьДействияПриОбновленииИнформационнойБазы(ПараметрыОбновления, ДополнительныеПараметры);
<ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(2289)>: Результат = ВыполнитьОбновлениеИнформационнойБазы(ПараметрыОбновления);
<(1)>:ОбновлениеИнформационнойБазыСлужебный.ВыполнитьОбновлениеИнформационнойБазыВФоне(Параметры[0],Параметры[1])
<ОбщийМодуль.ОбщегоНазначения.Модуль(5113)>: Выполнить ИмяМетода + «(» + ПараметрыСтрока + «)»;
<ОбщийМодуль.ДлительныеОперации.Модуль(1036)>: ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
<ОбщийМодуль.ДлительныеОперации.Модуль(1026)>: ВызватьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры);
по причине:
Запись с такими ключевыми полями существует! : ОбработчикиОбновления: РасчетЗарплатыДляНебольшихОрганизаций.ЗаполнитьУдержаноОтпусковИБольничных (Регистр сведений: Обработчики обновления; Номер строки: 236)
Можете посоветовать, что сделать, как исправить? Я никогда ничего не делал в конфигураторе кроме обновления базы, которое всегда происходило без проблем.
Бэкап остался от 8.3.69, но так не хочется терять труды двух-трехдневных ожиданий.
ERP: Постоянно возникает ошибка Запись с такими ключевыми полями существует.
Есть ERP 2.4. Немного дописанная. Постоянно возникают ошибки «Запись с такими ключевыми полями существует»
Подробней ошибки выглядят так::
<ОбщийМодуль.МеждународныйУчетПроведениеСервер.Модуль(54)>: Ошибка при вызове метода контекста (Записать)
по причине:
Запись с такими ключевыми полями существует! : ОтражениеДокументовВМеждународномУчете: 14.06.2019 23:59:59, Списание безналичных ДС ТЮ00-000402 от 17.06.2019 10:58:43, УСТ-Т ООО, 14.06.2019 0:00:00 (Регистр сведений: Отражение документов в международном учете; Номер строки: 2)
Проблема в основном с регистрами отражения документов в международном и регламентном учётах и в замерах времени при оценке производительности.
В чем может быть причина и как лечить проблему?
(8) >> Гадают же)))
Я могу предположить, что регламентные задания по отражению в учётах сломаны кривыми руками. Но тогда объясните, почему аналогичная ошибка возникает в штатном замере производительности, который никто никакими руками не трогал. Совершенно типовой.
Будешь тут гадать, если трассировка отладчиком на отдельных документах никаких проблем не выявляет, а при текущей работе ошибки стабильно возникают.
Возможно связанный вопрос. При проведении некоторых документов, пока не могу понять каких, в очередь на отражение в международном и регламентированном учёте попадает не только этот документ. Но и большое количество других. В пике видел до 4 тысяч документов.
Обучение программированию на 1С
Ошибка 1С: Запись с такими ключевыми полями существует
При работе с 1С у пользователей часто выскакивает окно «Запись с такими ключевыми полями существует». Это значит, что при внесении данных в одном ресурсе два раза была установлена одна и та же информация. 1С идентифицирует новую запись в качестве «клона» – и выдаёт ошибку.
Если необходимо поместить в регистр одинаковые данные, для второго файла требуется создать новое измерение типа «УникальныйИдентификатор». Для этого нужно прописать следующее:
В результате повторные записи будут помещаться в это измерение, а окно ошибки не будет появляться.
Поиск проблемы
Возможно, ситуация не требует создания нового измерения, допустим, ранее была допущена ошибка. Чтобы проверить это, есть два пути:
Фильтр регистра
Можно выполнить поиск и в регистре, при помощи фильтра. Для этого нужно создать свою форму поиска, потому что в стандартной отбор будет некорректным. Например, вы применяете фильтр следующими действиями: «Операции – Регистр сведений – Контактная информация». В результате откроется незаполненная форма. Но если зайти на карточку этого физического лица, в поле адрес уже будет указана вся информация (то есть, в базе она есть).
Дело в том, что стандартный фильтр применяет определённый отбор, которые просто не учитывает нужные строки. Чтобы найти данные, нужно отключить все конкретизирующие параметры поиска и ввести в поиске ФИО физического лица, по которому не проводится документ.
Ошибка в конфигурации 1С: Управление торговлей
В данной конфигурации цена может устанавливаться раз в сутки. Если изменения вносятся чаще – будет появляться ошибка «Запись с такими ключевыми полями существует».
Примечание: это не касается последних версий платформы, где возможно изменение цены в течение дня (каждому следующему документу соответствует новый порядковый номер).
Чтобы убрать ошибку в более ранних версиях, есть три варианта:
Последний вариант – самый действенный. Он позволяет сохранить оба документа и выполнить операцию сразу, но возможны сбои в работе платформы по другим документам.
Примечание: Ошибка «Запись с такими ключевыми полями существует» означает, что в номенклатуре совпадают не только наименование и цены, но и характеристики. То есть, если характеристик несколько, то изменить цену получится.
Обычно данная ошибка является следствием невнимательности, то есть когда человек разместил определённую информацию, а спустя какое-то время пытается сделать это вновь. Если же действительно нужно создать аналогичный документ, но с другими значениями, проще всего создать новое измерение.
Запись с такими ключевыми полями существует! 1С8.3
«Запись с такими ключевыми полями существует! : ДолиСписанияКосвенныхРасходов: 31.12.2011 0:00:00, ООО (Регистр сведений: Доли списания косвенных расходов; Номер строки: 2)
Подробная информация об ошибке записана в журнал регистрации.»
Хотели перепровести закрытия месяца и стала появляться вот такая ошибка.
1С:Предприятие 8.3 (8.3.17.1549)
Помогите не специалисту.
Запись с такими ключевыми полями существует! : ДолиСписанияКосвенныхРасходов: 31.12.2011 0:00:00, ООО (Регистр сведений: Доли списания косвенных расходов; Номер строки: 2)
<Документ.РегламентнаяОперация.МодульОбъекта(1038)>: Движения.Записать();
<Документ.РегламентнаяОперация.МодульОбъекта(90)>: СформироватьДвиженияИлиСообщенияОбОшибках(Отказ); // Добавит в ДополнительныеСвойства свойство Ошибки
<Обработка.ЗакрытиеМесяца.МодульМенеджера(435)>: Результат.Отказ = Не Объект.ВыполнитьОперацию();
<Обработка.ЗакрытиеМесяца.МодульМенеджера(38)>: Результат = ВыполнитьРегламентнуюОперацию(
<(1)>:Обработки.ЗакрытиеМесяца.ВыполнитьОперацию(Параметры[0],Параметры[1])
<ОбщийМодуль.ОбщегоНазначения.Модуль(4883)>: Выполнить ИмяМетода + «(» + ПараметрыСтрока + «)»;
<ОбщийМодуль.ДлительныеОперации.Модуль(1026)>: ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
<ОбщийМодуль.ДлительныеОперации.Модуль(1016)>: ВызватьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры);
по причине:
Запись с такими ключевыми полями существует! : ДолиСписанияКосвенныхРасходов: 31.12.2011 0:00:00, ООО (Регистр сведений: Доли списания косвенных расходов; Номер строки: 2)
перепровести закрытия месяца
вы не далеко забрались 🙂
не практикуйте проведение задним числом
никогда. возьмите за правило и будет вам мир-дружба-жвачка 🙂