Имя: Пароль:
1C
1С v8
Запись в РС (непериод., незав.) набора записей
0 Nikoss
 
27.07.12
10:10
Есть РС. Измерения: Номенклатура, Поставщик, Характеристика. Ресурс: цена.
Он заполнен так:
Н1 П1 Х1 100
Н1 П2 Х1 200
Н2 П1 Х1 300
Н2 П2 Х2 400
Н2 П3 Х1 500

У меня есть ТЗ, допустим заполнен так(с такими же полями, что и РС):
Н1 П2 Х1 999
Н2 П3 Х1 888

Соответственно хочу загрузить это. Через обход ТЗ и запись менеджеромЗаписи все понятно.

Можно ли сделать набором записей?

Сначала сделал так:

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

Но оказалось что нельзя в отбор передавать список, вид сравнения только равно можно.
1 Maxus43
 
27.07.12
10:19
правильно оказалось,
для такого типа регистра менеджер записи юзай
2 Nikoss
 
27.07.12
12:08
Просто если из ТЗ 10к записей нужно записать, это же каждый раз обращение к БД будет. А набором как бы один раз все.
3 hhhh
 
27.07.12
12:12
(2) ну сделай

НачатьТранзакцию()

....

Зафиксировать транзакцию()

тоже будет один раз обращение.
4 Галахад
 
гуру
27.07.12
12:16
НД=РегистрыСведений.ТвойРегистр.СоздатьНаборЗаписей();

ТЗ=НД.Выгрузить();
Для каждой Стр из ТЗ
  тут правим
КонецЦикла
НД.Загрузить(ТЗ);
НД.Записать()
AdBlock убивает бесплатный контент. 1Сергей