- •7.1. Назначение
- •Регистры остатки и регистры оборотов
- •Регистры остатков
- •Регистры оборотов
- •Активность записей
- •7.2. Приемы программирования
- •Менеджер регистров накопления
- •Менеджер регистра накопления
- •Набор записей регистра накопления
- •Модуль набора записей
- •Выборка из регистра накопления
- •7.3. Формы регистра накопления
Набор записей регистра накопления
Набор записей позволяет оперировать сразу несколькими записями регистра. Набор записей можно целиком прочитать из базы данных, добавить в него записи или изменить их, целиком записать в базу данных. Важно понять, что это единственно возможный способ добавления и изменения записей регистра накопления.
У документов есть атрибут Движения, который предоставляет доступ к наборам записей этого документа по каждому регистру, поэтому при проведении документов сначала добавляются записи в набор, а затем набор записывается в базу данных.
Можно создать новый набор записей из объекта РегистрНакопленияМенеджер, если вызвать его метод СоздатьНаборЗаписей, например:
Набор = РегистрыНакопления.Продажи.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Значение = ВыбДок;
Движ = Набор.Добавить();
Движ.Регистратор = ВыбДок;
Движ.Номенклатура = ВыбТовар;
Движ.Контрагент = ВыбКонтрагент;
Движ.Период = РабочаяДата;
Движ.Количество = Количество;
Движ.Сумма = Сумма;
Набор.Записать{Ложь); //добавить к набору записей по документу
Замечание. При записи набора методом Записать с параметром Истина сначала удаляются все записи с заданным отбором, а затем на их место записываются новые. Если передать параметр Ложь, то запись будет добавлена к уже существующим. Напомним, что, в отличие от регистра сведений, для регистра накопления две записи с одинаковыми полями - вполне нормальная ситуация.
Через набор записей можно обращаться к уже существующим записям регистра накопления. Для этого нужно установить свойство Отбор и прочитать записи из базы данных. Свойство Отбор является объектом типа Отбор, свойства которого совпадают с именами измерений регистра и являются объектами типа ЭлементОтбора.
Например:
Набор = РегистрыНакопления.Продажи.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Значение = ВыбДок;
Набор.Прочитать();
Для Каждого движ Из Набор Цикл
Сообщить(движ.Сумма);
КонецЦикла;
Записи набора можно выгружать в таблицу значений с помощью метода Выгрузить или, наоборот, загружать записи в набор из таблицы значений с помощью метода Загрузить. При выгрузке структура таблицы значений полностью соответствует структуре набора. При загрузке загружаются только те колонки, имена которых в наборе и таблице значений совпадают:
Набор.Прочитать();
тзЗаписи = Набор.Выгрузить();
…
Набор.3агрузить(тз3аписи);
Набор.3аписать() ;
Можно выгружать в массив и загружать из массива только одну колонку набора записей, для чего предназначены методы ВыгрузитьКолонку и ЗагрузитъКолонку:
МассивОстатков = Набор.ВыгрузитьКолонку("Количество");
…
Набор.ЗагрузитьКолонку(МассивОстатков, "Количество");
Выгружаются и загружаются записи, имеющие тот же индекс, что и элементы массива (индексация записей набора и элементов массива начинается с 0).
Для удаления записей из набора существует два метода Удалить и Очистить. Первый метод удаляет запись с заданным индексом, но в качестве параметра можно передавать и саму запись (Объект типа РегистрНакопленияЗапись). Второй метод полностью очищает набор, удаляя все записи. Обратите внимание, что записи удаляются из набора, а не из регистра накопления.
Для чтения записей или итогов регистра, кроме методов Выбрать, Остатки и Обороты, могут быть использованы запросы.
