Как изменять записи в регистре сведений?

1. NicolasCage 16.05.24 18:44 Сейчас в теме
Здравствуйте. Жестко туплю. Такая ситуация: на форму видов расчета в плане видов расчета Начисления добавил несколько реквизитов с перечислениями. Эти реквизиты формы, которые после того как были выбраны какие-то элементы перечисления (скрин приложил), записываются в созданный мной регистр сведений Соответствие. Так как это реквизиты формы то при открытии этой формы эти реквизиты пустые. Поэтому в обработчике события ПриОткрытии я прочитываю регистр сведений и заполняю реквизиты формы. Ок.

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


В выше приведенном коде я создаю записи в РС. А если они уже есть и кокретную запись нужно изменить я не могу сообразить как сделать это сделать.
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
11. scarl1n 16.05.24 20:57 Сейчас в теме
(10)По-моему здесь бы хватило:
НаборЗаписей.Отбор.Соответ_Начисления.Установить(Объект.Ссылка);
Запись = НаборЗаписей.Добавить();
Запись.Соответ_Начисления = Объект.Ссылка;
Запись .ОснованиеПФ = ОснованияНеОблагаемыеПФ;
Запись .ОснованиеСПБ = ОснованияНеОблагаемыеСПБ;
Запись .ОснованиеОМС = ОснованияНеОблогаетсяОМС;
НаборЗаписей.Записать();
Показать
NicolasCage; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 16.05.24 18:58 Сейчас в теме
(1)
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Соответ_Начисления = Объект.Ссылка;

НоваяЗапись.Отбор.Соответ_Начисления.Установить(Объект.Ссылка);
НоваяЗапись.Прочитать();
3. NicolasCage 16.05.24 19:06 Сейчас в теме
(2) Я забыл дописать, что прочитал данные. Но ошибка таже самая если в Записать передать Ложь. Если Истина то данные записываются не все, а последнее выбранное перечисление.

Код
4. spacecraft 16.05.24 19:18 Сейчас в теме
(3)
НаборЗаписей.Прочитать();

Если НаборЗаписей.Количество() Тогда

Для Каждого Запись Из НаборЗаписей Цикл
Запись.Соответ_Начисления = Объект.Ссылка;
Запись.ОснованиеОМС = ЭтаФорма.ОснованияНеОблагаемыеПФ;
Запись.ОснованиеСПБ = ЭтаФорма.ОснованияНеОблагаемыеСПБ;
Запись.ОснованиеПФ = ЭтаФорма.ОснованияНеОблогаетсяОМС;
КонецЦикла;

НаборЗаписей.Записать(Ложь);

Это в корне не правильно.
Прочитали все записи из регистра. У всех записей заменили значение измерения и ресурсов. И пытаетесь записать в режиме не заменять, а добавить.
Вот сколько записей было в РС, столько раз пытаетесь добавить одинаковых записей.
Измерение в РС одно?
Выше указа, что нужно указать отбор по нему. Прочитать. Добавить одну запись с нужными значениями и соответствующим отбору. Записать.
NicolasCage; +1 Ответить
5. NicolasCage 16.05.24 19:29 Сейчас в теме
(4) Так и есть. Исправил. Теперь только по конкретной записи. Но ошибка таже самая "Запись с такими ключевыми полями существует" если в Записать передать Ложь. Если Истина то данные записываются не все, а последнее выбранное перечисление.

Код
6. NicolasCage 16.05.24 19:32 Сейчас в теме
Переписал код. Но теперь ругается, что поле объекта не обнаружено в отборе (Соответ_Начисления):
Код
7. user1880116 16.05.24 20:10 Сейчас в теме
(6)
НаборЗаписей.Отбор.Соответ_Начисления.Установить(РегистрыСведений.Расш_2_Соответствие.Соответ_Начисления);

Этачо? Какой смысл хотя бы подразумевался-то?
8. NicolasCage 16.05.24 20:28 Сейчас в теме
(7) Соответ_Начисления это измерение. Если просто пишу НаборЗаписей.Отбор.Соответ_Начисления.Установить(Соответ_Начисления) ошибка компиляции переменная неопределена.
9. user1880116 16.05.24 20:45 Сейчас в теме
(8)
Соответ_Начисления это измерение
Не, я пожалуй пас. Тебе столько всего объяснять надо...
10. NicolasCage 16.05.24 20:51 Сейчас в теме
(9) А в какую сторону копать? Хочется знать в чем нужно восполнить пробелы.

PS
Вот этот код заработал мне как было нужно:
11. scarl1n 16.05.24 20:57 Сейчас в теме
(10)По-моему здесь бы хватило:
НаборЗаписей.Отбор.Соответ_Начисления.Установить(Объект.Ссылка);
Запись = НаборЗаписей.Добавить();
Запись.Соответ_Начисления = Объект.Ссылка;
Запись .ОснованиеПФ = ОснованияНеОблагаемыеПФ;
Запись .ОснованиеСПБ = ОснованияНеОблагаемыеСПБ;
Запись .ОснованиеОМС = ОснованияНеОблогаетсяОМС;
НаборЗаписей.Записать();
Показать
NicolasCage; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот