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

Ошибка Запись с такими ключевыми полями существует.

Автор djvjv, 07 июн 2012, 21:42

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

djvjv

Есть справочник номенклатура из которого в регистр сведений должны проходить записи.
Если строка табличной части справочника одна, то работает. Если больше то вылетает Ошибка:
Запись с такими ключевыми полями существует.
Регистр сведений изначально имеет записи, хотя когда пустой та же самая ошибка.

Да и самое странное вручную запись в регистр сведений то же не позволяет почему-то?

Регистр сведений: измерение основная номенклатура
ресурсы неосновная номенклатура.

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

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

   НаборЗаписей = РегистрыСведений.СвязаннаяНоменклатура.СоздатьНаборЗаписей();
   НаборЗаписей.Отбор.ОсновнаяНоменклатура.Установить(Объект.Ссылка);
   НаборЗаписей.Прочитать();
   НаборЗаписей.Очистить();
   НаборЗаписей.Записать();
   Для каждого ТекСтрокаСвязаннаяНоменклатура Из Объект.СвязаннаяНоменклатура Цикл
      НаборЗаписей.Отбор.ОсновнаяНоменклатура.Установить(Объект.Ссылка);
      НоваяЗапись = НаборЗаписей.Добавить();
      НоваяЗапись.ОсновнаяНоменклатура = Объект.Ссылка;
      НоваяЗапись.НеосновнаяНоменклатура = ТекСтрокаСвязаннаяНоменклатура.Номенклатура;
      НаборЗаписей.Записать(Ложь);
   КонецЦикла;
   
КонецПроцедуры

sadovod

Вы где-нибудь почитайте про регистры, а то так и будете наступать на грабли...
По теме - у вашего регистра одно измерение с типом 'СправочникСсылка.Номенклатура', и, как я понял, он - непериодический. Фокус в том, что вы в него сможете записать только ОДНУ запись для ОДНОГО элемента номенклатуры, а вы пытаетесь записать целый набор этих записей.
Решение тут может быть такое - добавьте ещё одно измерение, например число и помещайте туда при записи набора ну, скажем, счетчик, или номер строки табличной части...

djvjv

Да у меня регистр непериодический и не подчинен регистратору. А как не будет не добавляя измерений можно исправить ошибку.
Единственное что я могу измерение сделать ресурсом. Мне так начальник сказали делать. Или без измерений нельзя?

sadovod

Ну, по идее, вы, как разработчик, должны сами объяснить начальнику, чего можно сделать, а чего нельзя...
Записи в регистре должны иметь так называемые уникальные ключи. Этот ключ состоит из комбинации 'Регистратор'+'Период'+'Измерение1'+...'ИзмерениеN'. Хотя бы одно из этих полей должно различаться для разных записей (строк). У вас 'Регистратора' и 'Периода' нет, а 'Измерение' только одно, следовательно нельзя создать две записи с одинаковыми значениями 'Измерения', даже если "... старший приказал!" (к/ф "Место встречи изменить нельзя").
Не знаю, какую задачу вы решаете этим алгоритмом, поэтому предложить оптимальный вариант не смогу. А решение "в лоб" - сделайте 'НеосновнаяНоменклатура' тоже измерением, тогда и ресурсы не нужны... Или можно сделать булевский ресурс 'Используется' = Да или Нет...

djvjv

Я спросил конкретный вопрос вас! Регистр сведений если без измерений сделать, только ресурсы так будет работать или хотя бы один ресурс нужен?

нельзя создать две записи с одинаковыми значениями  - поясните как обойти эту проблему!

sadovod


cska-fanat-kz

Решение - надо не измерение переводить в ресурс, а ресурс в измерение.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

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

Рейтинг@Mail.ru

Поиск