
Как в 1С программно изменить записи регистра накопления?
В 1С 8 все регистры, кроме регистров сведений, всегда связаны с регистраторами. Регистры сведений могут быть независимыми или также подчиненными регистратору. В этом разделе мы опишем работу с регистрами, подчиненными регистраторам.
Практически всегда записи регистров, подчиненных регистраторам, создаются при проведении документов. Это обычный способ создания записей. В процессе проведения документа формируется набор записей регистра, и происходит отражение в учете события, которое описывает документ.
Однако в 1С можно программно изменять записи регистров без помощи документа. Но следует учитывать, что каждая запись регистра всегда подчинена одному и только одному регистратору. Однако, записи могут изменяться без участия самого документа. Главное, чтобы в них имелась ссылка на него.
Для изменения записей, подчиненных регистраторам, используются специальные сущности - наборы записей. При этом всегда используется отбор по регистратору. Нельзя добавлять или удалять отдельные записи. Можно только считывать и записывать все записи по регистратору.
При изменении записей регистра можно использовать набор записей, входящий в коллекцию движений документа (свойство Движения объекта ДокументОбъект). Однако это не обязательно. Для изменения записей регистра можно использовать и набор записей созданный с помощью менеджера регистра.
Практически всегда записи регистров, подчиненных регистраторам, создаются при проведении документов. Это обычный способ создания записей. В процессе проведения документа формируется набор записей регистра, и происходит отражение в учете события, которое описывает документ.
Однако в 1С можно программно изменять записи регистров без помощи документа. Но следует учитывать, что каждая запись регистра всегда подчинена одному и только одному регистратору. Однако, записи могут изменяться без участия самого документа. Главное, чтобы в них имелась ссылка на него.
Для изменения записей, подчиненных регистраторам, используются специальные сущности - наборы записей. При этом всегда используется отбор по регистратору. Нельзя добавлять или удалять отдельные записи. Можно только считывать и записывать все записи по регистратору.
При изменении записей регистра можно использовать набор записей, входящий в коллекцию движений документа (свойство Движения объекта ДокументОбъект). Однако это не обязательно. Для изменения записей регистра можно использовать и набор записей созданный с помощью менеджера регистра.
Чтобы изменить записи регистра нужно выполнить следующие этапы:
- создать набор записей;
- установить отбор по конкретному регистратору;
- прочитать этот набор;
- изменить записи набора;
- записать набор.
Например, чтобы изменить значение реквизита во всех записях регистра можно использовать следующий код:
//Выберем всех регистраторов
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
| УчетНоменклатуры.Регистратор
|ИЗ
| РегистрНакопления.ОстаткиНаСкладах КАК ОстаткиНаСкладах";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
//пройдем циклом по всем регистраторам
Пока Выборка.Следующий() Цикл
//для каждого регистратора выполним изменение набора записей
НаборЗаписей = РегистрыНакопления.ОстаткиНаСкладах.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Значение = Выборка.Регистратор;
НаборЗаписей.Прочитать();
Для каждого Запись Из НаборЗаписей Цикл
Запись.Реквизит1 = "Новое значение";
КонецЦикла;
НаборЗаписей.Записать();
КонецЦикла;