Ошибка записи в непереодический регистр сведений
Добрый вечер, отважные 1с-ники!
Имеется обработка с табличной частью, в которой проставляются статусы договорам. Задача сохранить проставленные статусы в регистре сведений. Для этой цели использую непериодический независимый регистр сведений. Запись произвожу вот таким образом:
Но возникает ошибочка:
{Форма.Форма.Форма(126)}: Ошибка при вызове метода контекста (Записать)
НаборЗаписей.Записать();
по причине:
Запись с такими ключевыми полями существует! : МойРС: (Регистр сведений: МойРС; Номер строки: 2)
Сам регистр пустой. Намекните пожалуйста, что тут не так?
Имеется обработка с табличной частью, в которой проставляются статусы договорам. Задача сохранить проставленные статусы в регистре сведений. Для этой цели использую непериодический независимый регистр сведений. Запись произвожу вот таким образом:
Процедура КнопкаВыполнитьНажатие (Элемент)
НаборЗаписей = РегистрыСведений.МойРС.СоздатьНаборЗаписей();
Для Каждого Строка Из ТабличноеПоле Цикл
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Договор = Строка.НаименованиеДоговора;
НоваяЗапись.Статус = Строка.Статус;
НоваяЗапись.Дата = Строка.ДатаСтатуса;
НоваяЗапись.Комментарий = Строка.Комментарий;
КонецЦикла;
НаборЗаписей.Записать();
КонецПроцедуры
ПоказатьНо возникает ошибочка:
{Форма.Форма.Форма(126)}: Ошибка при вызове метода контекста (Записать)
НаборЗаписей.Записать();
по причине:
Запись с такими ключевыми полями существует! : МойРС: (Регистр сведений: МойРС; Номер строки: 2)
Сам регистр пустой. Намекните пожалуйста, что тут не так?
По теме из базы знаний
- Выгонялка пользователей.
- Генератор номеров для PSI WMS
- Интеллектуальная загрузка в 1С счетов, накладных из файлов электронных таблиц (типа XLS), не требующая настроек, с указанием номеров строк и колонок. Для примера обработка загрузки в документ "Поступление товаров и услуг" для "Управление Торговлей 10.3"
Найденные решения
(8) Если у договора может быть несколько статусов - вынести статус в измерение и свернуть таблицу по статусам и договорам, чтобы не было дублей. Как вариант.
Если различается дата всегда - можно сделать или периодический регистр или дату в измерение вынести. Тогда статус можно в ресурсы. Даже наверное этот вариант лучше. У вас же не может быть в одно и то же время несколько статусов у договора?
Если различается дата всегда - можно сделать или периодический регистр или дату в измерение вынести. Тогда статус можно в ресурсы. Даже наверное этот вариант лучше. У вас же не может быть в одно и то же время несколько статусов у договора?
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(8) Если у договора может быть несколько статусов - вынести статус в измерение и свернуть таблицу по статусам и договорам, чтобы не было дублей. Как вариант.
Если различается дата всегда - можно сделать или периодический регистр или дату в измерение вынести. Тогда статус можно в ресурсы. Даже наверное этот вариант лучше. У вас же не может быть в одно и то же время несколько статусов у договора?
Если различается дата всегда - можно сделать или периодический регистр или дату в измерение вынести. Тогда статус можно в ресурсы. Даже наверное этот вариант лучше. У вас же не может быть в одно и то же время несколько статусов у договора?
если у вас только одно измерение - Договор
то надо устанавливать отбор
примерно так, ди и запись только по одному договору, если/когда что-то дописывать или менять будете
Процедура КнопкаВыполнитьНажатие (Элемент)
НаборЗаписей = РегистрыСведений.МойРС.СоздатьНаборЗаписей();
Для Каждого Строка Из ТабличноеПоле Цикл
НаборЗаписей.Очистить();
НаборЗаписей.Отбор.Договор.Установить(Строка.Договор); //Отбор
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Договор = Строка.Договор;//здесь должна быть ссылка на Договор
НоваяЗапись.Статус = Строка.Статус;
НоваяЗапись.Дата = Строка.ДатаСтатуса;
НоваяЗапись.Комментарий = Строка.Комментарий;
НаборЗаписей.Записать();
КонецЦикла;
КонецПроцедуры
то надо устанавливать отбор
примерно так, ди и запись только по одному договору, если/когда что-то дописывать или менять будете
Процедура КнопкаВыполнитьНажатие (Элемент)
НаборЗаписей = РегистрыСведений.МойРС.СоздатьНаборЗаписей();
Для Каждого Строка Из ТабличноеПоле Цикл
НаборЗаписей.Очистить();
НаборЗаписей.Отбор.Договор.Установить(Строка.Договор); //Отбор
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Договор = Строка.Договор;//здесь должна быть ссылка на Договор
НоваяЗапись.Статус = Строка.Статус;
НоваяЗапись.Дата = Строка.ДатаСтатуса;
НоваяЗапись.Комментарий = Строка.Комментарий;
НаборЗаписей.Записать();
КонецЦикла;
КонецПроцедуры
увидел что вы записываете набор в цикле. Поправлюсь. Возможно все записи запишутся, но так крайне не правильно делать. В этом случае лучше использовать менеджер записи регистра сведений. Смысл набора записей, чтобы обрабатывать записи пакетом. Создаем набор записей, устанавливаем отборы, работаем с записями в цикле
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот