Ошибка при создании номенклатуры 1с

   Юлианна_Н

31.08.20 — 12:20

Всем привет.

Помогите советом.

«нельзя изменять поле содержащее объект данных формы»

Вот такая ошибка появляется при попытке создать Номенклатуру методом Скопировать.

Это какой то косяк? Или так должно быть?

   Ёпрст

1 — 31.08.20 — 12:23

(0) на клиенте поди делаешь, да?

   Юлианна_Н

2 — 31.08.20 — 12:24

(1) Да

   ДенисЧ

3 — 31.08.20 — 12:25

11.4.8.92 — не наблюдается.

Значит у тебя поправленная конфигурация

   Юлианна_Н

4 — 31.08.20 — 12:26

(3) 11.4.11.88 — в Справочнике Номенклатура доработок нету

   Ёпрст

5 — 31.08.20 — 12:30

(2) ну так то, создавать новые объекты бд можно только на сервере, Перенеси свой код в серверную процу &НаСервере и наслаждайся

   Юлианна_Н

6 — 31.08.20 — 12:38

(5) У меня нет своего кода, по крайней мере в справочнике Номенклатура.

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

вся процедура  — Типовая.

   Юлианна_Н

7 — 31.08.20 — 12:38

(1) Не так поняла вопрос…

   Ёпрст

8 — 31.08.20 — 12:42

ок.. по шагам тогда, как ты делаешь это и где ?

>>при попытке создать Номенклатуру методом Скопировать

   Юлианна_Н

9 — 31.08.20 — 12:45

(8) в режие пользователя:

1. Выбираю номенклатуру из списка — потом либо F9, либо через кликания мышкой на «Скопировать».

2. В карточке номенклатура — Еше — Скопировать.

   Ёпрст

10 — 31.08.20 — 12:46

(9) так и точное место ошибки указывает на какой код ?

   Юлианна_Н

11 — 31.08.20 — 12:49

(10) Отладкой не искала… пока только тестирую с другими справочниками, Валюты и пользователи — все работает.

Может дело в прикрепляемом файле, фото номенклатуры?

   Юлианна_Н

12 — 31.08.20 — 12:53

Отладкой ругнулся в процедуре

&НаСервере

Процедура ЗаполнитьПоПараметрам()

а точнее

ЗаполнитьЗначенияСвойств(Объект, ИсточникКопирования, , «ГруппаДоступа, ФайлКартинки, ФайлОписанияДляСайта,

            |ДополнительныеРеквизиты, ДрагоценныеМатериалы, Код, ПометкаУдаления»);

   ДенисЧ

13 — 31.08.20 — 13:24

Обновил до 11.4.12.81

Опять не наблюдается.

   Галахад

14 — 31.08.20 — 13:26

(0) У коллег такое тоже наблюдается?

   Юлианна_Н

15 — 31.08.20 — 13:34

(14) У меня нет коллег.

   Галахад

16 — 31.08.20 — 13:36

(15) Хм. А если базу скопировать, такое тоже наблюдается?

   Юлианна_Н

17 — 31.08.20 — 13:37

После того как закоментировала

ЗаполнитьЗначенияСвойств(Объект, ИсточникКопирования, , «ГруппаДоступа, ФайлКартинки, ФайлОписанияДляСайта,

            |ДополнительныеРеквизиты, ДрагоценныеМатериалы, Код, ПометкаУдаления»);

Все заработало

   Юлианна_Н

18 — 31.08.20 — 13:39

(16) Да, у меня куча бекапов и на многих — одно и то же

   Юлианна_Н

19 — 31.08.20 — 13:45

(17) Можно ли считать, что это правильное решение задачи, в синтакспомощнике почитала про ЗаполнитьЗначенияСвойст — ничего не поняла.

   Галахад

20 — 31.08.20 — 13:52

(19) Если исходить из того, что нужно просто скопировать, то правильное решение.

А если исходить, что все-таки не все нужно копировать, то не очень.

   grumpi

21 — 31.08.20 — 13:56

(19) Подскажи а ты расширения конфигурации не используешь?

   grumpi

22 — 31.08.20 — 13:57

У меня такое было когда я в расширении добавил реквизит номенклатуры.

   Юлианна_Н

23 — 31.08.20 — 13:58

(21) Расширения есть, но работаем с основной.

и да… Номенклатура есть в одном из них…

   Юлианна_Н

24 — 31.08.20 — 14:00

&После(«ПриЗаписи»)

Процедура Б24_Синхр_ПриЗаписи(Отказ)

    Б24_Синхр_РегистрацияИзмененийВызовСервера.ЗарегистрироватьИзменения(ЭтотОбъект);

КонецПроцедуры

Это единственное, что есть в модулях.

  

Юлианна_Н

25 — 31.08.20 — 14:12

В общем… вопрос решен, более правильным путем (мне так кажется). Сразу прошу особо не пинать, я не виновата, меня подставили…

В «типовой» Номенклатуре, реально были доработки, добавлена новая ТЧ   :(

Она, ТЧ, мешала…

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

Спасибо вам всем, с вашей помощью думать легче ))

  1. Всем доброго времени суток!

    Платформа: 1С:Предприятие 8.3 (8.3.6.2390)
    Конфигурация: Управление торговлей, редакция 11.2 (11.2.2.106)

    Пытаюсь создать новую номенклатуру:

                   
    НоваяНоменклатураСпр = Справочники.Номенклатура.СоздатьЭлемент();
    НоваяНоменклатураСпр.Родитель  = ГруппаНоменклатуры;
    НоваяНоменклатураСпр.ВидНоменклатуры = ВидТовараМассив[Число(ТоварСтрока.ВидНоменклатуры)];
    НоваяНоменклатураСпр.СтавкаНДС = СтавкиНДССоответствие.Получить(ТоварСтрока.КоэффициентСтавкиНДС);
    НоваяНоменклатураСпр.Наименование  = СокрЛП(ТоварСтрока.Наименование);
    НоваяНоменклатураСпр.НаименованиеПолное  = СокрЛП(ТоварСтрока.Наименование);
           Если НоваяНоменклатураСпр.ВидНоменклатуры = АлкогольТовар Тогда
                    НоваяНоменклатураСпр.ВидАлкогольнойПродукции = Справочники.ВидыАлкогольнойПродукции.НайтиПоНаименованию("АлкогольЗагруженный");
                        НоваяНоменклатураСпр.ОбъемДАЛ  = Число(1);
            КонецЕсли;
            Попытка
                СозданоНовыхЭлементов = СозданоНовыхЭлементов+1;
            НоваяНоменклатураСпр.Записать()
    

    А в ответ получаю:

    {Форма.Форма.Форма(244)}: Ошибка при вызове метода контекста (Записать)
                    НоваяНоменклатураСпр.Записать();
    по причине:
    Ошибка при выполнении обработчика - 'ПередЗаписью'
    по причине:
    {Справочник.Номенклатура.МодульМенеджера(991)}: Преобразование значения к типу Булево не может быть выполнено
            И Не ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Номенклатура.ВидНоменклатуры, "СодержитДрагоценныеМатериалы") Тогда

    Мне как-то, при создании номенклатуры, надо указать ДрагМатериал это или нет, так?
    Если да то как?


  2. nomad_irk

    Online

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.590
    Симпатии:
    998
    Баллы:
    204

    Не стесняйтесь пользоваться отладкой.
    Проверяется значение реквизита элемента справочника «ВидНоменклатуры», возвращает значение НЕ типа Булево о чем вам сообщается в тексте ошибки.

  3. Вы всё «полезнее» и «полезнее» даёте ответы. И не лень писать бесполезный (пустой ответ)? Или вам за это какие-то балы дают, на форуме?
    Я просто не очень понимаю, если неохота отвечать или вопрос считаете через чур «банальным», зачем тратить своё время на пустой и бесполезный ответ и моё время, на прочтение этого ответа?

    P.S.
    Отладчиком я пользоваться умею и прежде чем сюда писать, я им уже воспользовался.
    В отладчике, упав в функцию :

    ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Номенклатура.ВидНоменклатуры, "СодержитДрагоценныеМатериалы") Тогда

    увидел следующее: Результат Null


  4. nomad_irk

    Online

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.590
    Симпатии:
    998
    Баллы:
    204

    Из ваших слов, отладчиком вы пользуетесь как-то странно на мой взгляд.

    результат = NULL и что дальше? по какой причине такой результат? что нужно сделать, чтобы результат был отличный от NULL? вас эти вопросы не беспокоят вообще или вы не задавались этими вопросами?

    Можете, конечно, дальше сидеть и удивлятся тому факту, что результат работы функции — NULL……


  5. Dem0lisher

    Offline

    Dem0lisher
    Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.261
    Симпатии:
    101
    Баллы:
    104

    На самом деле ответ про отладку действительно полезный.
    А вы ожидали, что вам скажут — «в строке 14387 замени букву ‘а’ на букву ‘б’ «?
    За вас в код никто разбираться не полезет, а если вы сами в нем разберетесь с помощью отладчика, то завтра вместо того, чтобы потратить 4 часа ожидая ответа на форуме найдете ответ сами за 15 минут.

    Функция вам вернула Null, вы провалились отладчиком в функцию и поняли, почему она вернула NULL?
    Или просто всплеснули руками и опубликовали очередное сообщение на форуме?

    Запустите глобальный поиск по конфигурации и посмотрите где еще вызывается эта функция, с какими параметрами и что возвращает в других случаях.

    — Объединение сообщений, 4 мар 2016

    Другое дело, если у вас отладчик туда не заходит — такое каждый день тут спрашивают :)


  6. bajiepka

    Offline

    bajiepka
    Профессионал в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    460
    Симпатии:
    31
    Баллы:
    54

    у вас запись идёт в попытке. выведите в какое-то поле на форме или в сообщение на клиенте результат функции ОписаниеОшибки() в исключении попытки. там вам и напишет про поле, которое не удаётся записать (изменить)

  7. Всё оказалось просто — ВидНоменклатуры я получал через НайтиПоНаименованию, а в моём случае имя группы совпадало с наименованием, в итоге Вид Номенклатуры ЭтоГруппа,
    что и приводило к ошибке.
    Всем спасибо


  8. LordMaverick

    Offline

    LordMaverick
    Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.975
    Симпатии:
    465
    Баллы:
    104

    ну на признак группы тоже надо проверять :) хотя лучше не делать совпадающих названий


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

Такая ошибка возникает при добавлении нового элемента справочника, система автоматически присваивает элементу новый “Код”, но не дает сохранить объект.

Причиной является неправильная нумерация в справочнике. Происходит это когда пользователи вручную редактирует поле “Код” в элементах справочника.

Принцип нумерации справочника в 1С такой:

Код = Префикс+числовой код предыдущего элемента + 1.

Допустим код справочника состоит из 4-х символов, есть префикс “А” — он ставиться во всех элементах, остальные 3 знака используются под числовую составляющую кода. Если пользователь изменит код любого элемента справочника на “А999”, то при создании следующего элемента возникнет ошибка Значение поля “Код” не уникально, потому что система пытается прибавить к числовой составляющей кода единица, но разрядов для создания элемента с кодом А1000 не хватает. Такого рода ошибки могут всплыть не сразу, например если пользователь изменить код какого нибудь элемента на А990, то не уникальный код появится на десятом созданном впоследствии элементе.

Решить проблему можно, либо найдя неверно пронумерованный элемент и исправив его “Код” на корректный(а также перенумеровав все созданные после него элементы), либо если вручную эту работу проделать невозможно, то можно воспользоваться обработкой УниверсальныеПодборИОбработкаОбъектов (скачать можно по ссылке), при помощи нее перенумеровав все элементы справочника

Чаще всего эта ошибка возникает при работе непосредственно со справочниками договоров, контрагентов, номенклатуры и т. д. Пользователь добавляет в любой из справочников новую запись, при этом система 1С: Предприятие 8 автоматически присваивает ему код, но при сохранении записи выдает ошибку «Код не уникален!», а, следовательно, сохранить объект не удается.

Ошибка не уникального кода при создании новой записи в справочнике 1С

В чем причина появления данной ошибки?

А причина может быть в некорректной нумерации объектов справочника. Как это происходит? Обычно при создании новой записи в каком-то из справочников программа сама генерирует код записи. Если в предыдущих записях пользователь редактировал код вручную, то в последствии есть вероятность того, что при создании последующих записей разрядность кода увеличится на один знак и перестает помещаться в поле, а значит генерация кодов начнется сначала. Только вот хранить объекты с одинаковыми кодами в справочниках 1С нельзя, а, значит, пользователь в такой ситуации будет получать на экран сообщение об ошибке.

Как исправить ошибку «Код не уникален»?

Безусловно, решение этой проблемы предусмотрено разработчиками 1С. Заключается оно в полной перенумерации элементов справочника. Для этого на диске информационно-технологического сопровождения 1С (1с итс) есть специальная обработка, которая называется «УниверсальныеПодборИОбработкаОбъектов.epf». Она располагается в каталоге 1CITSEXEExtRepsUNIREPS81UniversalSelection.

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

Как предотвратить появление ошибки «Код не уникален»?

Чтобы предотвратить появление данной ошибки при работе со справочниками 1С, в первую очередь не рекомендуется производить ручное редактирование кодов записей. Именно вмешательство в программную нумерацию и приводит чаще всего в ее возникновению. Если же без редактирования кодов не обойтись, то продумайте ситуацию наперед.

Рекомендуем также еще статьи по программам 1С:

  • Выбор режима проведения документов в 1С
  • Настройка доступа к подсистемам программ 1С 8.2
  • Установка 1С: Предприятие 8.0

Вы можете получать новые материалы сайта по RSS-каналу или можете подписаться на новости 1С от Информ Актив и получать их еженедельно на Ваш e-mail .

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

Но есть особые случаи, когда такой способ решения проблемы не поможет: например, когда диапазон номеров, выделенных для данного справочника, закончился. В этом случае текст ошибки будет выглядеть так: «Значение 999 поля код не уникально». В этом случае рекомендуется выполнить следующие действия:

  1. Попытаться высвободить свободные коды, удалив помеченные на удаление объекты;
  2. Затем, выполнить процедуру перенумерации объектов (справочника, плана видов характеристик и т.п.) и вызвать программно метод ОбновитьНумерациюОбъектов() для проблемного объекта метаданных;
  3. Если не помогло, увеличить в конфигураторе длину кода объекта метаданных (справочника, плана видов характеристик и т.п.) и также программно вызвать метод ОбновитьНумерациюОбъектов() для проблемного объекта метаданных;

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

Причиной этой ошибки чаще всего служит ручное исправление номеров документов.

Программа 1С сообщает пользователю, что номер 0000-0006 уже существует.

Нумерация документов в программе осуществляется автоматически. При этом, каждому новому документу присваивается номер в хронологическом порядке, который состоит из определенного количества цифр.

В 1С:Бухгалтерия предприятия 3.0, номер состоит из двух частей:

  • префикс информационной базы — может быть задан, если есть обмен с другими базами 1С;
  • сам номер документа.

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

  • 4 позиции для префикса;
  • 6 позиций под номер.

Таким образом, сам номер может принимать значение от 0000-000001 до 0000-999999. Если пользователь вручную сокращает длину номера, то она продолжает нумерацию от нового значения. При внесении изменения в префикс, нумерация все равно продолжается от последнего номера, содержащего наименьшее количество знаков. В нашем примере при сбое в нумерации она продолжилась, используя под номер 4 знака: 0000-0005, 0000-0006 и т.д.

В базе уже есть номер 0000-0006, поэтому при попытке ввести его повторно, программа выдаст сообщение о том, что значение поля номер 0000-0006 не уникально.

Рассмотрим ситуацию далее.

Что произойдет, если пользователь сократит числовой резерв для номера до двух или, куда хуже, до одного знака?

Программа 1С будет присваивать номера до тех пор, пока не будет пройден последний максимальный номер. Например, изменив вручную в документе номер на 0000-01, программа сможет автоматически присвоить всего 99 номеров. После номера 0000-99 возможность автоматической нумерации документов закончится и придется каждый раз исправлять номер вручную

После номера 0000-99 при вводе каждого нового документа будет выдаваться сообщение, что значение номера 0000-99 не уникально.

Когда пользователь сокращает длину номера документа (договора и т.п.) — это приводит к сбою нумерации. Поэтому, если возникает необходимость изменить номер документа вручную, надо использовать максимально допустимое число символов.

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

  • Продолжить редактирование Да.

После этого добавляем нули перед значением номера.

После приведения в порядок нумерации, ошибка появляться не будет.

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

См. также:

  • Нарушение целостности системы 1С
  • Конфигурация базы данных не соответствует сохраненной конфигурации 1С
  • Регистрация конфигурации в центре лицензирования не выполнена: как убрать
  • Внутренняя ошибка компоненты dbeng8: как исправить
  • Конфликт блокировок при выполнении транзакции 1С 8.3: как исправить

Если Вы еще не являетесь подписчиком системы БухЭксперт8:

Активировать демо-доступ бесплатно →

или

Оформить подписку на Рубрикатор →

После оформления подписки вам станут доступны все материалы по 1С Бухгалтерия, записи поддерживающих эфиров и вы сможете задавать любые вопросы по 1С.

Подписывайтесь на наши YouTube и Telegram чтобы не пропустить
важные изменения 1С и законодательства

Помогла статья?

Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно

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

Причиной этой ошибки чаще всего служит ручное исправление номеров документов.

Содержание

  • Значение поля «Номер» не уникально 1с 8.3
  • В чем причина появления данной ошибки?
  • Как исправить ошибку «Код не уникален»?
  • Как предотвратить появление ошибки «Код не уникален»?
    • Нам доверяют:
  • Новые записи:

Значение поля «Номер» не уникально 1с 8.3

Программа 1С сообщает пользователю, что номер 0000-0006 уже существует.

Нумерация документов в программе осуществляется автоматически. При этом, каждому новому документу присваивается номер в хронологическом порядке, который состоит из определенного количества цифр.

В 1С:Бухгалтерия предприятия 3.0, номер состоит из двух частей:

  • префикс информационной базы — может быть задан, если есть обмен с другими базами 1С;
  • сам номер документа.

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

  • 4 позиции для префикса;
  • 6 позиций под номер.

Таким образом, сам номер может принимать значение от 0000-000001 до 0000-999999. Если пользователь вручную сокращает длину номера, то она продолжает нумерацию от нового значения. При внесении изменения в префикс, нумерация все равно продолжается от последнего номера, содержащего наименьшее количество знаков. В нашем примере при сбое в нумерации она продолжилась, используя под номер 4 знака: 0000-0005, 0000-0006 и т.д.

В базе уже есть номер 0000-0006, поэтому при попытке ввести его повторно, программа выдаст сообщение о том, что значение поля номер 0000-0006 не уникально.

Рассмотрим ситуацию далее.

Что произойдет, если пользователь сократит числовой резерв для номера до двух или, куда хуже, до одного знака?

Программа 1С будет присваивать номера до тех пор, пока не будет пройден последний максимальный номер. Например, изменив вручную в документе номер на 0000-01, программа сможет автоматически присвоить всего 99 номеров. После номера 0000-99 возможность автоматической нумерации документов закончится и придется каждый раз исправлять номер вручную

После номера 0000-99 при вводе каждого нового документа будет выдаваться сообщение, что значение номера 0000-99 не уникально.

Когда пользователь сокращает длину номера документа (договора и т.п.) — это приводит к сбою нумерации. Поэтому, если возникает необходимость изменить номер документа вручную, надо использовать максимально допустимое число символов.

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

  • Продолжить редактирование — Да.

После этого добавляем нули перед значением номера.

После приведения в порядок нумерации, ошибка появляться не будет.

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

См. также:

  • Нарушение целостности системы 1С
  • Конфигурация базы данных не соответствует сохраненной конфигурации 1С
  • Регистрация конфигурации в центре лицензирования не выполнена: как убрать
  • Внутренняя ошибка компоненты dbeng8: как исправить
  • Конфликт блокировок при выполнении транзакции 1С 8.3: как исправить

Если Вы еще не являетесь подписчиком системы БухЭксперт8:

Активировать демо-доступ бесплатно →

или

Оформить подписку на Рубрикатор →

После оформления подписки вам станут доступны все материалы по 1С Бухгалтерия, записи поддерживающих эфиров и вы сможете задавать любые вопросы по 1С.

Помогла статья?

Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно

Чаще всего эта ошибка возникает при работе непосредственно со справочниками договоров, контрагентов, номенклатуры и т. д. Пользователь добавляет в любой из справочников новую запись, при этом система 1С: Предприятие 8 автоматически присваивает ему код, но при сохранении записи выдает ошибку «Код не уникален!», а, следовательно, сохранить объект не удается.

В чем причина появления данной ошибки?

А причина может быть в некорректной нумерации объектов справочника. Как это происходит? Обычно при создании новой записи в каком-то из справочников программа сама генерирует код записи. Если в предыдущих записях пользователь редактировал код вручную, то в последствии есть вероятность того, что при создании последующих записей разрядность кода увеличится на один знак и перестает помещаться в поле, а значит генерация кодов начнется сначала. Только вот хранить объекты с одинаковыми кодами в справочниках 1С нельзя, а, значит, пользователь в такой ситуации будет получать на экран сообщение об ошибке.

Как исправить ошибку «Код не уникален»?

Безусловно, решение этой проблемы предусмотрено разработчиками 1С. Заключается оно в полной перенумерации элементов справочника. Для этого на диске информационно-технологического сопровождения 1С (1с итс) есть специальная обработка, которая называется «УниверсальныеПодборИОбработкаОбъектов.epf». Она располагается в каталоге 1CITSEXEExtRepsUNIREPS81UniversalSelection.

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

Как предотвратить появление ошибки «Код не уникален»?

Чтобы предотвратить появление данной ошибки при работе со справочниками 1С, в первую очередь не рекомендуется производить ручное редактирование кодов записей. Именно вмешательство в программную нумерацию и приводит чаще всего в ее возникновению. Если же без редактирования кодов не обойтись, то продумайте ситуацию наперед.

Рекомендуем также еще статьи по программам 1С:

  • Выбор режима проведения документов в 1С
  • Настройка доступа к подсистемам программ 1С 8.2
  • Установка 1С: Предприятие 8.0

Вы можете получать новые материалы сайта по RSS-каналу или можете подписаться на новости 1С от Информ Актив и получать их еженедельно на Ваш e-mail .

Попробуем разобраться, почему появляется ошибка в 1С – значение поля Код не уникально (разновидности ошибки могут быть со значениями 002024, 002071 либо другими). В процессе добавления в справочник нового элемента, бывают случаи возникновения ошибки «поле код не уникально в 1C».

Системой, в автоматическом режиме, происходит процесс присвоения нового кода элементу.

При этом, она не позволяет произвести сохранение объекта. Причина кроется в ошибочной нумерации в справочнике. Такая ситуация возникает в момент, когда пользователь, в ручном режиме, пытается отредактировать поле «Код» в элементах справочника.

Закажите устранение ошибки 1С в IT RUSH!

Стоимость работ – 1600 руб./час, абонемент от 50 часов в месяц – 1500 руб. в час, от 100 часов в месяц – 1400 руб. в час

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

В случае, если вручную элементу справочника будет присвоен код «А999», при попытке создания следующего элемента отобразится ошибка «поле код не уникально в 1с».

Причина заключается в том, что систем пытается прибавить единицу к числу 999, но для, получающегося в результате прибавления, кода «А1000» не достает разрядов.

Данный вид ошибки может проявиться не сразу. Например, пользователь создал код «А985». В таком случае, сообщение об не уникальном коде появиться на пятнадцатом по счету элементе, после упомянутого.

Решение проблемы «значение поля Код не уникально” заключается в поиске ошибочно пронумерованного элемента и исправления его кода на адекватный. Этот способ подразумевает смену нумерации кода и у всех последующих за ним элементов.

Упростить задачу, можно используя автоматическую обработку справочника, исправляющую коды нужных элементов.

  • Стоимость работ специалистов IT Rush – 2000 руб./час
  • Абонемент от 50 часов в месяц – 1900 руб./час
  • Абонемент от 100 часов в месяц – 1800 руб./час

Нам доверяют:

  • ООО Компит

Значение поля Код не уникально

Я

  

R0mbes

31.05.12 — 13:03

Кто может подсказать в чем может быть проблема?

Есть справочник номенклатура, в нем 211 000 позиций , длина кода  = 8 знаков, т.е. еще 2 свободных разряда, но при записи элемента справочника программа ругается что значение поля «Код» не уникально!

  

Buster007

1 — 31.05.12 — 13:04

значит кто-то поменял код вручную )

  

Kavar

2 — 31.05.12 — 13:04

(1)+1

Делать перенумерацию кодов.

  

ale-sarin

3 — 31.05.12 — 13:05

(0) Ищите номенклатуру с длиной кода не 8, а меньше.

  

Александр_Тверь

4 — 31.05.12 — 13:05

(2) хороший совет. Особенно если есть обмен с 10 базами (1С не 1С), и синхронизация по коду.

  

R0mbes

5 — 31.05.12 — 13:06

(1) а как отследить неверный код ? я делаю сортировку у меня последний элемент 00211….

По идеи должен браться последний и прибавляться 1

  

rbcvg

6 — 31.05.12 — 13:06

ПоискИЗаменаДублирующихсяЭлементов.epf

  

Kavar

7 — 31.05.12 — 13:10

(4) Можешь что-то другое предложить? в любом случае перенумеровывать надо, хотя бы начиная с «кривого» элемента.

  

R0mbes

8 — 31.05.12 — 13:10

(6) дублей нету, только что запустил ее

  

R0mbes

9 — 31.05.12 — 13:11

(7) так как найти этот кривой элемент ?

  

inka

10 — 31.05.12 — 13:11

(8) его и не должно было быть. объект же не записывается

  

Александр_Тверь

11 — 31.05.12 — 13:12

(7) а ты из (0) понял в какой это момент происходит?

Может у него обработка, которая по своему алгоритму выдает номер?

Может у него при обмене в каких-то базах коды совпали…

и т.д. и т.п.

  

inka

12 — 31.05.12 — 13:12

А если поискать объект с кодов который хотите записать?

  

inka

13 — 31.05.12 — 13:13

(9) — отсортируйте по коду и поищите коды с длиной меньше 8

  

Kavar

14 — 31.05.12 — 13:16

(9) При создании нового элемента какой-то код же присваивается? вот его и ищи.

  

R0mbes

15 — 31.05.12 — 13:19

(14) в отладчике на событии «Перед записью» значение поля код = »   «,

(9) я отсортировал по коду но не могу никак найти код с длиной меньше 8 =(

  

R0mbes

16 — 31.05.12 — 13:19

(14) как узнать какой код присваивается ?

  

inka

17 — 31.05.12 — 13:20

(15) — поищите код оканчивающийся на букву

  

inka

18 — 31.05.12 — 13:20

(16) — Посмотреть :)

  

R0mbes

19 — 31.05.12 — 13:23

(18) событие «ПриУстановкеНовогоКода» там посмотреть ?

  

Vitamax3

20 — 31.05.12 — 13:26

Как вариант. Если при создании спр.Номенклатура создается ещё

зависимый справочник — например ЕдиницаИзмерения, и там кто-то пошуровал ручками по коду, то ошибка может иметь отношение ко второму справочнику. ИМХО.

  

R0mbes

21 — 31.05.12 — 13:27

(20) спасибо за наводку, сейчас гляну )

  

R0mbes

22 — 31.05.12 — 13:48

(20) не там все чисто (

  

Irek-kazan

23 — 31.05.12 — 13:50

база случаем не на сиквеле?

  

R0mbes

24 — 31.05.12 — 13:52

(23) на чем ?))) клиент — серверный вариант работы (база на MSSQL)

  

Irek-kazan

25 — 31.05.12 — 13:54

ну тогда прямой запрос к базе на предмет задвоения
Select count(code), code

from table

group by code

having count(code)>1

  

Случайный прохожий

26 — 31.05.12 — 13:56

(25) не проканает. В данный момент в базе нет задвоения. Задвоение создается при попытки записи нового элемента.

  

Vitamax3

27 — 31.05.12 — 13:56

(25) так он и не может записать дубль

  

Vitamax3

28 — 31.05.12 — 13:57

(0) какая конфигурация?

  

inka

29 — 31.05.12 — 13:57

(27) — Все таки поищите код оканчивающийся на букву

  

Irek-kazan

30 — 31.05.12 — 13:58

Может тады профайлерем посмотреть что пытается записать в базу в момент создания элемента?

  

Случайный прохожий

31 — 31.05.12 — 13:59

После сортировки как выглядит код последнего элемента? Полностью напиши (с пробелами и т.п)

  

Vitamax3

32 — 31.05.12 — 13:59

+(31) и первого

  

hhhh

33 — 31.05.12 — 14:01

(22) отсортируйте справочник по коду, тогда самый нижный элемент и будет то, что вы ищете.

  

R0mbes

34 — 31.05.12 — 14:21

Последний элемент : "00211746  "
Первый элемент:     "00000001  "

(29) запустил такую обработку:

<code>

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

</code>

В результате не выдало ошибок. Т.е. все коды можно перевести в число

(30) А как это сделать ?

  

R0mbes

35 — 31.05.12 — 14:24

(28) конфигурация комплексная автоматизация

  

Vitamax3

36 — 31.05.12 — 14:24

Попробуй ручками в карточке с последним кодом поставить

00211747 и записать.

  

R0mbes

37 — 31.05.12 — 14:25

Может и правда дело не в этом справочнике, а в каком то другом ?

  

R0mbes

38 — 31.05.12 — 14:25

(36) секунду

  

Vitamax3

39 — 31.05.12 — 14:26

(37) если запишет, то в другом 99% ;)

  

R0mbes

40 — 31.05.12 — 14:28

записал, потом при следующем создании выдал другую уже ошибку , ура что-то становится яснее:

В данной транзакции уже происходили ошибки

«Не удалось записать единицу хранения остатков: {Справочник.Номенклатура.Форма.ФормаЭлемента.Форма(1396)}: Ошибка при вызове метода контекста (Записать): Значение поля «Код» не уникально»

  

Vitamax3

41 — 31.05.12 — 14:36

А в (0), что без открытия формы создавал?

  

R0mbes

42 — 31.05.12 — 14:37

(41) с открытие но ошибка только сейчас выдалась ..

не понимаю где теперь искать концы

  

Случайный прохожий

43 — 31.05.12 — 14:40

Ищи подвох в единицах хранения остатков :)

  

Vitamax3

44 — 31.05.12 — 14:44

+(43) повтори свою обработку для справочника ЕдиницыИзмерения
и выдай первый код и последний

  

R0mbes

45 — 31.05.12 — 14:50

(44) я сделал как ты и сказал  в (36) — присвоил последнему элементу справочника «ЕдиницыИзмерения» код на единицу больше и все заработало, спасибо тебе !!!! Но причину я так и не могу понять, мистика ))

Спасибо всем ! я уже 2 часа вожусь с этой проблемой !!!! если бы не вы… было бы гораздо дольше =)

  

Vitamax3

46 — 31.05.12 — 14:57

(45) )))  «2 часа вожусь» ветка с 13:03 по 14:50 — быстро ты сдался однако.

  

R0mbes

47 — 31.05.12 — 15:15

(46) ну мои знания через 30 минут иссякли ! я перепробывал все что знал ) а на этом форуме обитают профи =)) мне это очень нравится !

  

Vitamax3

48 — 31.05.12 — 15:29

(47) заходи ещё. Набирайся опыта сидя на мисте. Если шефа убедишь )))

P.S. А коды не выложил по ЕдиницыИзмерения ((.

Мистика как то напрягает, может вылезти боком.

  

R0mbes

49 — 01.06.12 — 00:40

(48) Да босс одобрил это дело, мистика это точно. а коды там ничего подозрительного не было цифры и вначале и в конце…

Попробуем разобраться, почему появляется и как исправить ошибку: значение поля Код не уникально при обновлении 1С 8.3 (разновидности ошибки могут быть со значениями 002024, 002071 либо другими).

Она появляется когда мы создадим новый документ в 1с 8.3. Cистема присваивает новое значение элементу в автоматически, то есть в режиме автонумерации.

При этом, она не позволяет произвести сохранение объекта. Причина кроется в ошибочной нумерации в справочнике. Такая ситуация возникает в момент, когда пользователь, в ручном режиме, пытается отредактировать поле «Код» в элементах справочника.

Ошибка в 1С: значение поля Код не уникально

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

В случае, если вручную элементу справочника будет присвоено значение «А999», при попытке создания следующего элемента отобразится ошибка «значение 999 поля код не является уникальным».

Причина заключается в том, что система пытается прибавить единицу к числу 999, но для получающегося в результате прибавления значения «А1000» не достает разрядов.

Данный вид ошибки может проявиться не сразу. Например, пользователь создал значение «А985». В таком случае, сообщение об не уникальном коде появиться на пятнадцатом по счету элементе, после упомянутого.

Решение проблемы заключается в поиске ошибочно пронумерованного элемента и исправления его на адекватный. Этот способ подразумевает смену нумерации кода и у всех последующих за ним элементов.

Упростить задачу, можно используя автоматическую обработку справочника, исправляющую коды нужных элементов, об этом ниже.

Наши постоянные клиенты по 1С:

Корона Лифт

Гознак

Накфф

Рембаза

Rozara

Как починить?

Для устранения используем обработку вида «УниверсальныеПодборкиИОбработкаОбъектов» (нужен диск ИТС).

Выберем вкладку «Перенумерация объектов». Нужно указывается наименование настройки и стартовое значени, с которого нужно нумеровать. Нажать «Выполнить» и запустить обработки нумерации. Все должно работать!

Исправление ошибки - значение поля код не уникально с помощью перенумерации

Если все же ошибку устранить не получается — звоните мы поможем!

  • Стоимость работ специалистов IT Rush — 2000 руб./час
  • Абонемент от 50 часов в месяц – 1900 руб./час
  • Абонемент от 100 часов в месяц – 1800 руб./час

Нам доверяют:

 +3 

Распечатать

Значение поля Код не уникально или Значение поля Номер не уникально

При работе в 1С, особенно когда много документов или номера редактируются ручками, можно получить ошибки вида:

Значение поля «Код» не уникально или Значение поля «Номер» не уникально 

Что делать? Перенумеровывать )

Нужно восстановить нумерацию документов или элементов справочника:

Пользователю

Посмотрите: Перенумерация документов, справочников, и сама Обработка Универсальные подбор и обработка объектов

 Сбилась автонумерация у документа или справочника с текстовым кодом, что делать?

Программисту:

Посмотрите примеры выше и дополнительно: Как сбросить счётчик нумерации документов или справочников

В модуле ПередЗаписью() дописать функционал проверки:

Код 1C v 8.х


//Проверим текущий номер документа и установим новый если он занят
Если НомерЗанят(Номер) Тогда
УстановитьНовыйНомер();
КонецЕсли;

//функция НомерЗанят() по функционалу очень проста
// в вашей ситуации возможно ее придется изменить
Функция НомерЗанят(НомерДока)
Результат = Ложь;
Попытка
Запрос = Новый Запрос;
Запрос.Текст = «ВЫБРАТЬ
| Документ_.Номер
|ИЗ
| Документ.Документ КАК Документ_
|ГДЕ
| Документ_.Номер =НомерДока
| И Не Документ_.Ссылка =ТекДок»;
Запрос.УстановитьПараметр(«НомерДока», НомерДока);
Запрос.УстановитьПараметр(«ТекДок», Ссылка);
Результат = не Запрос.Выполнить().Пустой();
Исключение
КонецПопытки;
возврат Результат;
КонецФункции //НомерЗанят()

Привет, Гость! Выйти?

Не могу ввести услуги 1с БП 3.0

Отправлять новые сообщения на мою почту

0 — 15.11.2018 10:56:15

Чистая база, введены только организационная структура. Завожу номенклатуру. Надо внести так же и услуги по доставке, аренде и т.п. Делаю это в справочнике номенклатуры, нажимаю создать, в списке выбор видов номенклатуры услуг нет, создаю, ставлю галку на Услуги и называю так же, записываю, но не записываетсяи выходит ошибка Не соответствует условиям выбора.! Что не так?

1С Программист Эксперт
Алёна
1 — 15.11.2018 15:56:35

Записать у вас получилось новый вид номенклатуры, загляните в этот справочник, скорее всего там уже несколько видов под названием услуги. А вот выбрать этот вид для создания позиции справочника номенклатуры у вас не выходит.
Вы видимо создаете номенклатуру сразу с привязкой к группе. Попробуйте сначала в группе указать вид номенклатуры, для этого надо выбрать ее изменения, а потом уже создавайте услугу в этой группе.

Отправить быстрое сообщение

Ваше Имя Заполните поле

Сообщение Заполните поле

Цитировать

Показывать по
10
20
40
сообщений

Новая тема

Ответить

Дмитриев Е.С.

Дата регистрации: 05.11.2009
Сообщений: 6

«Пишу обработку, кот загружает номенклатуру из dbf:<br>Код: <br>      <br>      Группа = НоменклатураСправ.НайтиПоНаименованию(Строчка.MLN_TYPE);<br>      НовыйЭлСправ                         = НоменклатураСправ.СоздатьЭлемент();<br>       НовыйЭлСправ.Код                        = Строчка.MLN_N;<br>      НовыйЭлСправ.Наименование             = Строчка.MLN_NAME;<br>      НовыйЭлСправ.ВидНоменклатуры            = Справочники.ВидыНоменклатуры.НайтиПоНаименованию(«Учет товара», 1);<br>      НовыйЭлСправ.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(«шт»,1);<br>      НовыйЭлСправ.ЕдиницаИзмеренияМест       = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(«шт»,1);<br>      НовыйЭлСправ.ВестиУчетПоХарактеристикам = Истина;<br>      НовыйЭлСправ.ВестиУчетПоСериям       = Ложь;<br>      НовыйЭлСправ.СтавкаНДС                  = Перечисления.СтавкиНДС.БезНДС;<br>      НовыйЭлСправ.Родитель                   = Группа.Ссылка;<br>      НовыйЭлСправ.Записать();<br>      НовыйЭлСправ.ОбменДанными.Загрузка = Истина;<br>      <br>      НовЕдИзмерения                   = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();<br>      НовЕдизмерения.ОбменДанными.Загрузка = Истина;<br>      НовЕдИзмерения.Владелец             = НовыйЭлСправ.Ссылка;<br>      НовЕдИзмерения.Коэффициент       = «1»;<br>      НовЕдИзмерения.Наименование       = «шт»;<br>      НовЕдИзмерения.ЕдиницаПоКлассификатору = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(«шт»,1);      <br>      НовЕдизмерения.Записать();<br>      <br>      НовыйЭлсправ.ЕдиницаДляОтчетов       = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию(«шт»,1);<br>      НовыйЭлсправ.ЕдиницаХраненияОстатков = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию(«шт»,1);<br>      НовыйЭлСправ.Записать();<br><br><br>По итогу получается, что элемент номенклатуры записался, но при попытке вручную что-нибудь в нем поменять пишет:»Не удалось записать элемент номенклатуры», «у единиц хранения остатков и у единиц для отчетов номенклатуры неверно указан владелец». Хотя, если открыть форму элемента и вручную выбрать Единицу хранения остатков и Единицу для отчетов, то элемент благополучно записывается… Помогите разобраться в чем дело?<br><br>»

Wee

Дата регистрации: 24.11.2007
Сообщений: 464

«Вы в единицу остатков и отчетов пишите первую попавшуюся единицу с названием «шт», а ведь не факт, что она принадлежит текущей номенклатуре :) Пишите только что созданную.<br> <br>НовыйЭлсправ.ЕдиницаДляОтчетов       = НовЕдИзмерения.Ссылка;<br>НовыйЭлсправ.ЕдиницаХраненияОстатков = НовЕдИзмерения.Ссылка;<br><br>~~~ Красноярск, http://x-frame.ru ~~~»

Дмитриев Е.С.

Дата регистрации: 05.11.2009
Сообщений: 6

Wee

Дата регистрации: 24.11.2007
Сообщений: 464

100$ :)

Показывать по
10
20
40
сообщений

Читают тему:

Понравилась статья? Поделить с друзьями:
  • Ошибка при создании нового тома диска
  • Ошибка при создании дескриптора окна sql
  • Ошибка при создании нового раздела
  • Ошибка при создании дела на пфмс что это
  • Ошибка при создании начального образа