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