Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Записи в периодический независимый регистр

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

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

НаборЗаписей = РегистрыСведений.Десяточки.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Период.использование = истина; 
НаборЗаписей.Отбор.Период.значение= ВремяСтарта+Счетчик;
// помимо Периода надо определить и другие измерения

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


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

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

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

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

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

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

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

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

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

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

  НаборЗаписей.Записать(Истина);
  НаборЗаписей.Очистить();
КонецЦикла;

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.