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