Имя: Пароль:
1C
1С v8
Записи в периодический независимый регистр
,
0 letovd
 
17.07.19
20:06
Добрый вечер. Подскажите, что я делаю не так?
Ибо массив заполняется таким способом, а в регистр заносится лишь последнее значение цикла

Для Счетчик = 0 По 160 Цикл
            
    Если Счетчик > 0 И Счетчик % 10 = 0 Тогда
        НаборЗаписей = РегистрыСведений.Десяточки.СоздатьНаборЗаписей();
        НоваяЗапись = НаборЗаписей.Добавить();
        НоваяЗапись.Цифра = Счетчик;
                
        НаборЗаписей.Записать();
        НаборЗаписей.Очистить();
                
        КонецЕсли;
            
КонецЦикла;
1 lodger
 
17.07.19
20:09
(0) измерения регистра какие?
2 lodger
 
17.07.19
20:11
ну как минимум
ВремяСтарта=началодня(ТекущаяДата())
Для Счетчик = 0 По 160 Цикл
Если Счетчик > 0 И Счетчик % 10 = 0 Тогда

НаборЗаписей = РегистрыСведений.Десяточки.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Период.использование = истина;
НаборЗаписей.Отбор.Период.значение= ВремяСтарта+Счетчик;
// помимо Периода надо определить и другие измерения
        НоваяЗапись = НаборЗаписей.Добавить();
        НоваяЗапись.Цифра = Счетчик;
                
        НаборЗаписей.Записать();
КонецЕсли;
КонецЦикла;
3 letovd
 
17.07.19
20:17
(2) Спасибо, сработало
Я не использовал эти две строки и мучался.
НаборЗаписей = РегистрыСведений.Десяточки.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Период.использование = истина;
НаборЗаписей.Отбор.Период.значение= ВремяСтарта+Счетчик;
// помимо Периода надо определить и другие измерения

        НоваяЗапись = НаборЗаписей.Добавить();
        НоваяЗапись.Цифра = Счетчик;
                
        НаборЗаписей.Записать();

Причем нужно ведь еще добавлять
НоваяЗапись.Период = ВремяСтарта+Счетчик;
4 lodger
 
17.07.19
20:42
(3) а ты думал я тебе полностью готовый код дам?
5 letovd
 
18.07.19
14:41
Для чего в данном примере использовать эти две строчки?

НаборЗаписей.Отбор.Период.использование = истина;
НаборЗаписей.Отбор.Период.значение= ВремяСтарта+Счетчик;
6 hhhh
 
18.07.19
15:28
(5) чтобы оно работало только для данного периода. А то если в регистре миллион записей, у вас без отбора этот весь миллион попадет в оперативную память.
7 letovd
 
18.07.19
16:06
(6) Так я ведь не читаю его, а просто создаю и записываю с замещением старых записей
8 hhhh
 
18.07.19
16:10
(7) ну чтобы сделать замещение старых записей она должна прочитать их? поэтому она читает миллион записей, потом записывает миллион обратно.
9 hhhh
 
18.07.19
16:12
(7) и не забывайте, что в 1с замещения записей не существует такой операции. Тут делается тупо, старые записи удаляются, новые возникают. Это мы для удобства говорим "замещение".
10 hhhh
 
18.07.19
16:13
(7) набор записей всегда пишется целиком. Не по одной записи.
11 letovd
 
18.07.19
16:14
(10) Да, я уже понял, спасибо.
Для того что писать по одной используют менеджер
12 letovd
 
18.07.19
16:14
(8) А если у меня конструкция по типу
НаборЗаписей = РегистрыСведений.МойРегистр.СоздатьНаборЗаписей();
Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий();
  НоваяЗапись = НаборЗаписей.Добавить();
  Запрос.Период =   Выборка.Период;
  Запрос.Измерение= Выборка.Измерение;
КонецЦикла;

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

То в какой момент делать отбор?
13 letovd
 
18.07.19
16:16
(8) А если у меня конструкция по типу
НаборЗаписей = РегистрыСведений.МойРегистр.СоздатьНаборЗаписей();
Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий();
  НоваяЗапись = НаборЗаписей.Добавить();
  НоваяЗапись .Период =   Выборка.Период;
  НоваяЗапись .Измерение= Выборка.Измерение;
КонецЦикла;

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

То в какой момент делать отбор?
14 letovd
 
18.07.19
17:04
Или в данном случае отбор нужно делать перед записью в цикле(так как дата изменяется), типа того?

НаборЗаписей = РегистрыСведений.МойРегистр.СоздатьНаборЗаписей();
Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий();
  НаборЗаписей.Отбор.Период.Установить = (Выборка.Период);
  НоваяЗапись = НаборЗаписей.Добавить();
  НоваяЗапись .Период =   Выборка.Период;
  НоваяЗапись .Измерение= Выборка.Измерение;

  НаборЗаписей.Записать(Истина);
  НаборЗаписей.Очистить();
КонецЦикла;
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс