|
Запись в регистр сведений | ☑ | ||
---|---|---|---|---|
0
Shalun
10.02.22
✎
12:56
|
Всем привет! Видел аналогичную тему, но из массы ответов ни одного дельного и не нашел. По этому прошу ответить по существу.
ИМЕЕМ: Не периодический регистр сведений, с измерением "Номенклатура" и ресурс "Поставщик" Пишем КОД в документе: НаборЗаписи = РегистрыСведений.ОсновныеПоставщики.СоздатьНаборЗаписей(); Для каждого Строка Из Товары Цикл СтрЗаписи = НаборЗаписи.Добавить(); СтрЗаписи.Номенклатура = Строка.Номенклатура; СтрЗаписи.Поставщик = Контрагент; КонецЦикла; НаборЗаписи.Записать(); НУЖНО:Записи с новыми измерениями добавлял, с существующимим - замещал. В данном случае, замещаются все записи в регистре новыми. Если установить параметр Записать(ЛОЖЬ), записи добавляются, но тогда и с имеющемся измерением выдает ошибку, не замещает. ВОПРОС: Как сделать что бы Записи с новыми измерениями добавлялись, а с существующими - замещались? Заранее благодарю за конкретные ответы. |
|||
1
НЕА123
10.02.22
✎
12:59
|
НаборЗаписи.Прочитать()
|
|||
2
Ёпрст
10.02.22
✎
13:00
|
(0) отбор
|
|||
3
fisher
10.02.22
✎
13:00
|
Нужно устанавливать отборы по измерениям. Запись без отборов - замещает ВСЕ содержимое регистра.
ЗЫ. Структура регистра плохая. В общем случае может быть больше одного поставщика одной номенклатуры. |
|||
4
NurSagen
10.02.22
✎
13:01
|
Чтоб совсем не боятся затереть - можно внутри цикла писать создать менеджер записи и в него писать, вместо набора записей.
|
|||
5
Повелитель
10.02.22
✎
13:01
|
(0)
Набор тут лишний, нужна запись мЗапись = РегистрыСведений.ОсновныеПоставщики.СоздатьМенеджерЗаписи(); Для каждого Строка Из Товары Цикл СтрЗаписи = мЗапись .Добавить(); СтрЗаписи.Номенклатура = Строка.Номенклатура; СтрЗаписи.Поставщик = Контрагент; КонецЦикла; мЗапись.Записать(); |
|||
6
Повелитель
10.02.22
✎
13:02
|
(5) Упс.
Для каждого Строка Из Товары Цикл мЗапись = РегистрыСведений.ОсновныеПоставщики.СоздатьМенеджерЗаписи(); СтрЗаписи = мЗапись .Добавить(); СтрЗаписи.Номенклатура = Строка.Номенклатура; СтрЗаписи.Поставщик = Контрагент; КонецЦикла; мЗапись.Записать(); |
|||
7
Повелитель
10.02.22
✎
13:02
|
(6) Не мой день ))
Для каждого Строка Из Товары Цикл мЗапись = РегистрыСведений.ОсновныеПоставщики.СоздатьМенеджерЗаписи(); СтрЗаписи = мЗапись .Добавить(); СтрЗаписи.Номенклатура = Строка.Номенклатура; СтрЗаписи.Поставщик = Контрагент; мЗапись.Записать(Истина); КонецЦикла; |
|||
8
fisher
10.02.22
✎
13:04
|
Если писать через менеджер записи - желательно транзакцией обрамить. Если сильно "жирная" будет - то бить на несколько.
|
|||
9
Shalun
10.02.22
✎
13:21
|
Парни, СПАСБО!
Не совсем разобрался с Отборм, и Прочитать, ку да их вставлять, внутрь цикла что ли? Но помогло через МенеджерЗаписи: Для каждого Строка Из Товары Цикл МенеджерЗаписи = РегистрыСведений.ОсновныеПоставщики.СоздатьМенеджерЗаписи(); МенеджерЗаписи.Номенклатура = Строка.Номенклатура; МенеджерЗаписи.Поставщик = Контрагент; МенеджерЗаписи.Записать(); КонецЦикла; (Повелитель) У МенеджераЗаписи нет метода "Добавить". |
|||
10
mistеr
10.02.22
✎
13:26
|
(0) Раз пишешь код в документе, значит регистр подчинен регистратору. А раз подчинен, то нужно всегда делать отбор по регистратору.
|
|||
11
unbred
10.02.22
✎
13:44
|
(10) может "товары" - это переменная, а не ТЧ))
|
|||
12
unbred
10.02.22
✎
13:45
|
(10) пардон. "КОД в документе"..
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |