Работа с регистрами накопления

Регистр накопления предназначены для хранения числовых показателей в разрезе нескольких измерений и, при необходимости, в разрезе времени.

Добавление записей в регистр накопления

Для добавления движения в регистр накопления необходимо создать набор записей, установить отбор по регистратору, добавить запись и заполнить значениями. Если требуется добавить несколько записей – добавление производится в цикле.

// ДокументСсылка - в этом примере это ссылка на документ Требование-накладная
// Требование-накладная выполняет движение с видом "Приход"

ТабличнаяЧасть = ДокументСсылка.Материалы;

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

Для Каждого Строка Из ТабличнаяЧасть Цикл
  Запись = НаборЗаписей.ДобавитьПриход();
  
  // Наименования измерений, ресурсов и реквизитов совпадают с
  // наименованиями колонок табличной части, поэтому воспользуемся
  // функцией ЗаполнитьЗначенияСвойств()

  ЗаполнитьЗначенияСвойств(Запись, Строка);
  Запись.Период = ДокументСсылка.Дата; // период записи равен дате документа
КонецЦикла;

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

Удаление записей из регистра накопления

Удаление всех записей по регистратору

Для удаления всех записей из регистра накоплений по регистратору необходимо создать пустой набор записей, установить отбор по регистратору и записать его.

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

Удаление части записей по регистратору

Очень часто нужно удалить не все записи по регистратору, а только часть из них. Для этого необходимо создать пустой набор записей, установить отбор по регистратору и считать отобранные записи из базы. После чего нужно обойти отобранные записи и удалить из набора .

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

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

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

Изменение записи в регистре накопления

Изменение записи по регистратору аналогично удалению части записей, только запись не удаляется, а изменяется.

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

// Изменим запись, где наименование измерения Склад равно "Основной"
Для Каждого Запись Из НаборЗаписей Цикл
  Склад = Запись.Склад;
  Если Склад.Наименование = "Основной" Тогда
    Запись.Количество = 10; // изменим количество на 10
  КонецЕсли;
КонецЦикла;

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *