← Назад к вопросам

Может ли быть в регистре накопления запись без регистратора?

1.0 Junior🔥 121 комментариев
#Регистры

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Может ли быть запись в регистре без регистратора

Теоретическая основа: понятие регистратора

Регистратор — это метаобъект 1С:Предприятие, который ведёт записи в регистры накопления. Регистратором обычно являются:

  • Документы (Реализация, Поступление, Перемещение)
  • Журналы документов
  • Движения (через функцию для ручного ввода)

Каждая запись в регистре накопления обязательно содержит поле Регистратор — ссылку на объект, который эту запись создал.

Краткий ответ: НЕТ

В 1С платформе невозможно создать запись в регистре накопления без регистратора. Это одно из фундаментальных ограничений архитектуры:

// Попытка создать движение БЕЗ регистратора:
Движение = Регистры.РегистрНакопления.ТоварыНаСкладах.CreateMovement(False);
Движение.Склад = Склад;
Движение.Номенклатура = Товар;
Движение.Количество = 100;

// Запись БЕЗ явного указания Регистратора приведёт к ошибке:
Движение.Write(); // Ошибка: свойство "Регистратор" не заполнено

Почему так устроено

Три причины:

  1. Аудит и отслеживаемость — каждая запись должна иметь источник, чтобы разработчик и аудитор могли проследить, откуда она пришла

  2. Откат изменений — при удалении документа система должна удалить все его движения. Без ссылки на регистратор этого невозможно сделать

  3. Целостность данных — регистратор обеспечивает связь между первичным документом и его влиянием на регистры

Структура движения в коде

Движение = Регистры.РегистрНакопления.ТоварыНаСкладах.CreateMovement(Истина);
Движение.Регистратор = ЭтотДокумент;        // ← ОБЯЗАТЕЛЬНО
Движение.Период = ТекущаяДата();            // ← ОБЯЗАТЕЛЬНО
Движение.Склад = СклаД;                     // ← поле измерения
Движение.Номенклатура = Товар;              // ← поле измерения
Движение.Количество = 100;                  // ← поле ресурса
Движение.Сумма = 10000;                     // ← поле ресурса

Видно, что Регистратор — это первый класс в структуре данных движения.

Откат документа — зависимость от регистратора

Когда вы нажимаёте кнопку Удалить на документе, платформа:

  1. Находит все движения, где Регистратор = ЭтотДокумент
  2. Удаляет их из регистра накопления
  3. Удаляет сам документ
// При удалении документа платформа делает что-то вроде:
Запрос = Новый Запрос;
Запрос.Текст = 
  "ВЫБРАТЬ *
   ИЗ РегистрНакопления.ТоварыНаСкладах
   ГДЕ Регистратор = &Регистратор";
Запрос.УстановитьПараметр("Регистратор", ЭтотДокумент);
Результат = Запрос.Выполнить();
// Удалить все найденные движения

Исключение: ручной ввод движений

Возможно, вы имеете в виду ручной ввод движений через интерфейс. В этом случае:

  • Регистратор может быть Документом ввода движений специального типа
  • Или регистратором может быть сам Журнал движений
  • Но в любом случае регистратор всегда заполнен

Практическое значение

Это ограничение защищает базу данных от:

  • Появления "сиротских" движений, которые никто не создавал
  • Потери связи между документом и его влиянием
  • Ошибок при откате документов

Итог

Нет, в регистре накопления не может быть записи без регистратора. Это обязательное поле, и попытка его не заполнить приведёт к ошибке. Регистратор — это элемент, обеспечивающий целостность и отслеживаемость учётных данных в 1С.