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