Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 ноя 2024, 16:58

Невозможно добавить новый элемент в справочник Номенклатура. Код не уникален

Автор ПростоАлександр, 11 янв 2011, 12:29

0 Пользователей и 2 гостей просматривают эту тему.

ПростоАлександр

Здравствуйте. Такая проблема: при добавлении нового элемента в справочник Номенклатура выскакивает ошибка:

Ошибка при вызове метода контекста (Записать): Код не уникален!

Такая ошибка возникает, когда добавляешь вид номенклатуры товар, если же вид номенклатуры услуги, то нормально добавляет. Кто-нибудь сталкивался с такой ошибкой?

progmikon

А вопрос? Код в новом элементе какой должен быть?(можно в отладчике посмотреть). Какой у вас максимальный код?

ПростоАлександр

Проблема в том, что когда в номенклатуре создаешь новый элемент для него необходимо задать базовую единицу измерения. А на основе нее выбирается единица хранения остатков из справочника ЕдиницыИзмерения, который подчинен справочнику Номенклатура. Так вот при записи выполняется такой код:

ВыборкаЕдиниц = Справочники.ЕдиницыИзмерения.Выбрать(, Ссылка);
   Если ВыборкаЕдиниц.Следующий() Тогда
      НайденнаяЕдиница = ВыборкаЕдиниц.Ссылка;
   Иначе
      НайденнаяЕдиницаОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
      НайденнаяЕдиницаОбъект.Наименование            = СокрЛП(БазоваяЕдиницаИзмерения);
      НайденнаяЕдиницаОбъект.ЕдиницаПоКлассификатору = БазоваяЕдиницаИзмерения;
      НайденнаяЕдиницаОбъект.Коэффициент             = 1;
      НайденнаяЕдиницаОбъект.Владелец                = Ссылка;
            
      Попытка
         НайденнаяЕдиницаОбъект.Записать();
      Исключение
         Сообщить("Не удалось записать единицу хранения остатков: " + ОписаниеОшибки(), СтатусСообщения.Важное);
         Отказ = Истина;
         Возврат;
      КонецПопытки;

      НайденнаяЕдиница = НайденнаяЕдиницаОбъект.Ссылка;
   КонецЕсли;

   ЕдиницаХраненияОстатков = НайденнаяЕдиница;

   Попытка
      ЗаписатьВФорме();
   Исключение
      Отказ = Истина;
   КонецПопытки;


И каждый раз при добавлении нового элемента в справочник Номенклатура добавляется новый элемент в справочник ЕдиницыИзмерения, так как судя по коду каждый элемент справочника ЕдиницыИзмерения должен иметь владельцем нового добавляемого элемента в справочник Номенклатура. Вопрос заключается в том, как этого избежать, ведь неправильно то, что каждый раз при создании элемнта Номенклатуры добавляется новый элемент в справочник ЕдиницыИзмерения? Ошибка же происходила потому, что элементы в справочнике ЕдиницыИзмерения достигли кода 999 и почему-то дальше не инкрементировались... 

progmikon

1. Используйте лидирующие нули в коде.
2. Какая у вас конфигурация? Почему неправильно, "ведь неправильно то, что каждый раз при создании элемнта Номенклатуры добавляется новый элемент в справочник ЕдиницыИзмерения"?
Смотря для какой типовой конфигурации.

ПростоАлександр

конфигурация Управление Торговлей...просто вроде бы как раньше в справочник ЕдиницыИзмерения не добавлялись новые объекты каждый раз при создании...
Странным на мой взгляд является то, что выборка из справочника происходит по владельцу, которым является создаваемый объект справочника Номенклатура. И если выборка ничего не обнаружила (а обнаружит она только при изменении, при создании нового еще нечему подчиняться), то создается новый элемент...

Lexius

Возможно, у Вас косяк с нумерацией проблемного справочника.
Не желательно иметь в одном справочнике номера с префиксами типа(!Пример!) "ГР00001" и "000001" если нумерация идет автоматом.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск