Ошибка в 1С: Значение поля Код не уникально
Такая ошибка возникает при добавлении нового элемента справочника, система автоматически присваивает элементу новый “Код”, но не дает сохранить объект.
Причиной является неправильная нумерация в справочнике. Происходит это когда пользователи вручную редактирует поле “Код” в элементах справочника.
Принцип нумерации справочника в 1С такой:
Код = Префикс+числовой код предыдущего элемента + 1.
Допустим код справочника состоит из 4-х символов, есть префикс “А” — он ставиться во всех элементах, остальные 3 знака используются под числовую составляющую кода. Если пользователь изменит код любого элемента справочника на “А999”, то при создании следующего элемента возникнет ошибка Значение поля “Код” не уникально, потому что система пытается прибавить к числовой составляющей кода единица, но разрядов для создания элемента с кодом А1000 не хватает. Такого рода ошибки могут всплыть не сразу, например если пользователь изменить код какого нибудь элемента на А990, то не уникальный код появится на десятом созданном впоследствии элементе.
Решить проблему можно, либо найдя неверно пронумерованный элемент и исправив его “Код” на корректный(а также перенумеровав все созданные после него элементы), либо если вручную эту работу проделать невозможно, то можно воспользоваться обработкой УниверсальныеПодборИОбработкаОбъектов (скачать можно по ссылке), при помощи нее перенумеровав все элементы справочника
Программная запись нового элемента справочника падает с ошибкой: Значение «00-00000680» поля «Код» не уникально
УТ 11.4.
Ситуация: копия базы, тест нового функционала.
В новом функционале есть программное создание партнера (Справочник Партнеры)
При выполнении кода
вылетает исключение: Значение «00-00000680» поля «Код» не уникально.
С интерактивной записью нового партнера такая же проблема.
Ранее такое бывало на копиях баз, при записи новых документов (не уникален номер). Решал простым кодом:
Пока писал вопрос, проблема стала не актуальной. Решил не удалять, мб кому поможет
Пока писал вопрос, проблема стала не актуальной. Решил не удалять, мб кому поможет
У меня именно такая ситуация.
Глобальный контекст (Global context)
ОбновитьНумерациюОбъектов (RefreshObjectsNumbering)
Синтаксис:
ОбновитьНумерациюОбъектов( )
Параметры:
(необязательный)
Видимо не совсем корректно копируется нумерация.
Думаю, что выданные номера лежат где нибудь в кэше и периодически записываются в БД.
и так до номера 101
А проблема в том что последний выданный номер (перед записью документа) 1с ищет в кэше/ таблице_1 БД, а проверка уникальности выданного номера идет по таблица_2 БД.
Грубо говоря, таблица_1 БД это СрезПоследних по таблице_2 БД. И Таблица_1 БД иногда получает рассинхрон с таблицей_2 БД (из за того что не сразу в нее пишется инфа, а в кэш).
Код договора не уникален!
Столкнулся с такой проблемой: при загрузке из екселя в 1С буху договоров контрагентов при записи нового договора вылетает на ошибке «Код не уникален!», сам код не ставлю система ведь должна присваивать его автоматически! пытался в ручную создать новый договор та же самая ошибка! код я в ручную не редактирую. Подскажите, плиз, в чем косяк.
В написании обработки по переносу.
«в чем ошибка может быть? вот код:
================================
Если ВыборкаДоговор.Следующий() Тогда
НайденныйДоговор = ВыборкаДоговор.Договор;
Иначе
//создадим новый
НовыйДоговор = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
НовыйДоговор.Наименование = Договор;
НовыйДоговор.Владелец = Контрагент;
НовыйДоговор.Организация = Организация;
НовыйДоговор.ВалютаВзаиморасчетов = Валюта;
НовыйДоговор.ВидДоговора = ВидДоговора;
НовыйДоговор.ВедениеВзаиморасчетов = Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоДоговоруВЦелом;
НовыйДоговор.Комментарий = «*загружено автоматически*»;
НовыйДоговор.Записать();
НайденныйДоговор = НовыйДоговор.Ссылка;
КонецЕсли;
Ошибка “значение поля Код не уникально”
Попробуем разобраться, почему появляется и как исправить ошибку: значение поля Код не уникально при обновлении 1С 8.3 (разновидности ошибки могут быть со значениями 002024, 002071 либо другими).
Она появляется когда мы создадим новый документ в 1с 8.3. Cистема присваивает новое значение элементу в автоматически, то есть в режиме автонумерации.
При этом, она не позволяет произвести сохранение объекта. Причина кроется в ошибочной нумерации в справочнике. Такая ситуация возникает в момент, когда пользователь, в ручном режиме, пытается отредактировать поле «Код» в элементах справочника.
Справочник в 1С имеет определенный принцип собственной нумерации. Код состоит из числового префикса предшествующего элемента на единицу больше. Представим, что код справочника представляет собой четыре цифры. Во всех элементах ставится префикс «А». Оставшиеся три символа отданы под числа, являющиеся составной частью кода.
В случае, если вручную элементу справочника будет присвоено значение «А999», при попытке создания следующего элемента отобразится ошибка «значение 999 поля код не является уникальным».
Причина заключается в том, что система пытается прибавить единицу к числу 999, но для получающегося в результате прибавления значения «А1000» не достает разрядов.
Данный вид ошибки может проявиться не сразу. Например, пользователь создал значение «А985». В таком случае, сообщение об не уникальном коде появиться на пятнадцатом по счету элементе, после упомянутого.
Решение проблемы заключается в поиске ошибочно пронумерованного элемента и исправления его на адекватный. Этот способ подразумевает смену нумерации кода и у всех последующих за ним элементов.
Упростить задачу, можно используя автоматическую обработку справочника, исправляющую коды нужных элементов, об этом ниже.
Как починить?
Для устранения используем обработку вида «УниверсальныеПодборкиИОбработкаОбъектов» (нужен диск ИТС).
Выберем вкладку «Перенумерация объектов». Нужно указывается наименование настройки и стартовое значени, с которого нужно нумеровать. Нажать “Выполнить” и запустить обработки нумерации. Все должно работать!
Если все же ошибку устранить не получается – звоните мы поможем!
Значение поля Номер не уникально
Посмотрите что за номер 1с генерит перед записью документа, может станет ясно куда смотреть
Глобальный контекст (Global context)
ОбновитьНумерациюОбъектов (RefreshObjectsNumbering)
Синтаксис:
Тип: Массив; Объекты метаданных.
Объект метаданного или массив объектов метаданных, для объектов которого будет выполнено обновление. Если значение параметра не указано, то обновление будет выполнено для всех типов объектов.
Описание:
Выполняет обновление номеров в соответствии с номерами, записанными в базе данных. После вызова данного метода все выданные, но не записанные номера, становятся невалидными, т.к. не гарантируется их уникальность. Данный метод разрешено вызывать только администратору системы.
Сервер, толстый клиент, внешнее соединение.
(плюс заполнение всех необходимых реквизитов, не стал писать)
И до некоторых пор это работало без сбоев.
Да, и сбой проявлялся последовательно.
Сначала в одной из обработок создавалась пара Списание-Оприходование, Оприходование стало отказывать в записи с этой ошибкой.
Затем еще одна обработка, которая создавала Реализацию-Поступление, Реализация стала вылетать.
Закономерность не ясна.
Оприходование после подобного передергивания глючить перестало. Надо попробовать, может и реализацию тоже уже не нужно так дергать.
Коллеги, столкнулся с этим и нашел возможное решение.
У меня возникла ситуёвина, что существующий документ прошлого года программно перезаписывался в текущем. Номер ему не переприсваивался, а брался прошлогодний. Но в этом году уже такой номер в базе есть. В итоге в каждом году номер вроде бы уникальный, а ситуация вызывает ошибку. Скорее всего и у вас та же проблема, если, конечно она не вызвана платформой. Если вызвана платформой, то ОбновитьНумерациюОбъектов() и очистка кеша должна помочь.
ОбновитьНумерациюОбъектов() можно сделать из встроенной обработки редактирования стратегии нумерации объектов.