Разработка и Конфигурация · 12 мин
Как заполняется регистр сведений в 1С
Как заполняется регистр сведений в 1С: ручной ввод, проведение документов, программная запись через наборы записей, типичные ошибки и проверка результата.
Регистр сведений в 1С — это объект конфигурации, предназначенный для хранения информации в разрезе заданных измерений: например, цен по номенклатуре, курсов валют по датам, данных сотрудников по организациям. В отличие от справочника, регистр сведений хранит не объекты, а значения (ресурсы), привязанные к комбинации ключей, и при необходимости — к моменту времени.
Способ заполнения регистра зависит от его режима подчинения. Независимый регистр сведений заполняется напрямую: вручную через форму списка, обработкой или программным кодом. Регистр, подчинённый регистратору, изменяется только движениями документов — записи в него создаются при проведении и удаляются при отмене проведения документа-регистратора.
Понимание этой разницы — ключ к правильной работе: попытка вручную отредактировать подчинённый регистр невозможна, а очистка независимого регистра через удаление записей не нарушит документы, но может оборвать связи данных в отчётах. Ниже разобраны все основные сценарии заполнения с пошаговыми действиями и проверкой результата.
Как определить, каким способом заполняется ваш регистр
Прежде чем заполнять регистр, откройте его свойства в конфигураторе или посмотрите поведение в режиме предприятия. Два параметра определяют всё: режим подчинения и периодичность.
Независимый регистр доступен для прямого редактирования: в меню раздела, где он размещён, открывается форма списка с кнопкой «Создать». Регистр, подчинённый регистратору, в интерфейсе обычно виден как движения конкретного документа — отдельной формы для ручного ввода у него нет, а записи появляются только после проведения документа, указанного в свойствах как регистратор.
Периодичность определяет, есть ли у записей дата. Периодический регистр (в пределах секунды, дня, месяца и т.д.) хранит историю изменений значения, и при заполнении обязательно указывается период. Непериодический регистр хранит только актуальное состояние — одна комбинация измерений соответствует одной записи.
Можно заполнять вручную или программно
Заполняется только проведением документов
При заполнении обязательно указывайте дату
Проверьте существующие записи по тем же ключам
Ручное заполнение независимого регистра сведений
Самый простой сценарий — ввод данных пользователем в режиме 1С:Предприятие. Найдите регистр в интерфейсе: обычно он размещён в разделе, указанном разработчиком в командном интерфейсе (например, «Цены номенклатуры» в разделе «Продажи» или «НСИ»).
Нажмите «Создать», заполните измерения (ключевые поля), ресурсы (хранимые значения) и, если регистр периодический, дату. Сохраните запись кнопкой «Записать и закрыть». Программа проверит уникальность: если запись с такой же комбинацией измерений и периодом уже существует, появится сообщение об ошибке.
Для массового ручного ввода используйте копирование строк (F9 или команда «Скопировать» в меню «Ещё» формы списка) — это ускоряет ввод однотипных записей, где меняется одно-два поля. В некоторых конфигурациях предусмотрены специальные обработки для группового ввода, например «Установка цен номенклатуры» — ищите их в том же разделе, что и сам регистр.
- 1Откройте форму списка регистра через командный интерфейс раздела
- 2Нажмите «Создать» и заполните все измерения — они обязательны
- 3Укажите значения ресурсов и дату, если регистр периодический
- 4Нажмите «Записать и закрыть» и убедитесь, что запись появилась в списке
- 5Проверьте отсутствие дублей по той же комбинации ключей
Заполнение регистра, подчинённого регистратору
Подчинённый регистр сведений нельзя редактировать напрямую — это принципиальное ограничение платформы. Записи создаются документом-регистратором в момент проведения и принадлежат ему: при отмене проведения или пометке документа на удаление движения исчезают автоматически.
Чтобы заполнить такой регистр, создайте и проведите соответствующий документ. Например, если регистр «Штатное расписание» подчинён документу «Изменение штатного расписания», то данные появятся только после проведения этого документа. Посмотреть результат можно через кнопку «Движения» (или «Перейти → Движения») в форме документа.
Если записей нет после проведения, проверьте: заполнены ли в документе табличные части, из которых формируются движения; не отключён ли регистр в настройках документа; нет ли ошибок в модуле проведения (для доработанных конфигураций). В типовых конфигурациях состав движений документа виден в свойствах документа в конфигураторе на закладке «Движения».
Программное заполнение через менеджер записи
Для независимых регистров сведений разработчики используют два объекта: менеджер записи и набор записей. Менеджер записи подходит для добавления или изменения одной строки и встроенным языком выглядит так:
Запись = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи();
Запись.Период = ТекущаяДатаСеанса();
Запись.Валюта = ВалютаСсылка;
Запись.Курс = 90.5;
Запись.Записать();
Метод Записать() по умолчанию работает с замещением: если запись с такими же измерениями и периодом уже существует, она будет перезаписана. Чтобы запретить замещение и получить исключение при дубле, вызовите Записать(Ложь).
Важная особенность: менеджер записи всегда выполняет отдельное обращение к базе на каждую строку. При загрузке тысяч записей это работает медленно — для массовых операций используйте набор записей.
Массовая загрузка через набор записей
Набор записей позволяет прочитать, изменить и записать группу строк одной транзакцией. Типовой шаблон массового заполнения:
НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.ТипЦен.Установить(ТипЦенСсылка);
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Период = ДатаУстановки;
НоваяЗапись.Номенклатура = СтрокаТовара.Номенклатура;
НоваяЗапись.ТипЦен = ТипЦенСсылка;
НоваяЗапись.Цена = СтрокаТовара.Цена;
КонецЦикла;
НаборЗаписей.Записать();
Критический момент — отбор. При записи набор полностью замещает все записи, попадающие под установленный отбор. Если вы забыли установить отбор и вызвали Записать(), будут удалены и замещены записи по всей таблице регистра — это одна из самых разрушительных ошибок при работе с регистрами сведений.
Если нужно добавить записи, не трогая существующие по тому же отбору, используйте НаборЗаписей.Записать(Ложь) — тогда новые строки добавятся без замещения, а при конфликте ключей возникнет ошибка уникальности.
Загрузка из файла и через обработки
Когда данные приходят извне — из Excel, CSV или другой учётной системы — ручной ввод непрактичен. В типовых конфигурациях (БСП) есть универсальная обработка «Загрузка данных из табличного документа»: она сопоставляет колонки файла с измерениями и ресурсами регистра и создаёт записи пакетно.
Порядок работы: откройте обработку, выберите объект загрузки (ваш регистр сведений), вставьте или откройте табличный документ с данными, на закладке «Настройка» свяжите колонки с полями регистра, затем нажмите «Загрузить». Перед загрузкой в рабочую базу выполните пробный прогон на копии и проверьте несколько записей вручную.
Для регулярных обменов правильнее настроить регламентное задание или обмен через форматы EnterpriseData/CSV с собственной обработкой. Убедитесь, что загрузка выполняется в транзакции: при ошибке в середине файла часть записей не должна остаться в базе без остальных.
Проверка результата после заполнения
После любого способа заполнения убедитесь, что данные легли корректно. Откройте форму списка регистра и отфильтруйте записи по измерениям, которые загружали. Для периодических регистров проверьте срез: в форме списка есть режимы «Срез первых» и «Срез последних» — они показывают, какое значение действует на выбранную дату.
Дополнительно сверьте данные через отчёт: универсальный отчёт или консоль запросов позволяют выбрать записи регистра с группировками. Для подчинённых регистров контрольный признак — совпадение количества записей в движениях документа с ожидаемым числом строк его табличных частей.
Как проверить результат
Видна с нужными измерениями, ресурсами и датой
Запись отсутствует или дата пустая
Возвращает загруженное значение
Срез пуст или показывает старое значение
Одна запись на комбинацию измерений и периода
Повторные загрузки создали конфликты или ошибки уникальности
Число строк совпадает с табличной частью
Проведённый документ не создал записей
Если регистр заполняется регулярно по расписанию (курсы валют, остатки из внешней системы), не храните логику загрузки в кнопке на форме — вынесите её в регламентное задание с журналированием ошибок. Это снимает зависимость от того, запустил ли кто-то обработку вручную.
Что важно запомнить
Способ заполнения определяется режимом подчинения: независимый регистр заполняется вручную, обработкой или кодом, подчинённый — только проведением документов. При программной записи всегда устанавливайте отбор набора записей и помните о замещении по умолчанию. Массовую загрузку проверяйте на копии базы и контролируйте результат через срез последних.
Частые вопросы
Почему в регистре сведений нет кнопки «Создать»?
Скорее всего, регистр подчинён регистратору — такие регистры заполняются только движениями документов. Проверить это можно в конфигураторе в свойствах регистра (поле «Режим записи») или косвенно: записи в списке содержат ссылку на документ-регистратор. Создайте и проведите соответствующий документ.
Чем периодический регистр отличается от непериодического при заполнении?
В периодическом регистре у каждой записи есть дата, и одна комбинация измерений может встречаться многократно на разные даты — так хранится история. В непериодическом комбинация измерений уникальна, повторная запись по тем же ключам замещает старую. Актуальное значение в периодическом регистре получают через срез последних.
Как удалить все записи независимого регистра сведений?
Создайте набор записей без установки отбора и вызовите Записать() — пустой набор заместит всё содержимое. Выполняйте это только при полной уверенности, что данные не нужны, и после резервного копирования: операция необратима. Для подчинённого регистра так делать нельзя — очищайте через отмену проведения регистраторов.
Можно ли заполнить регистр сведений без прав администратора?
Да, если у вашей роли есть права на добавление и изменение записей этого регистра и он доступен в интерфейсе. Ручной ввод в независимый регистр обычно доступен пользователям с соответствующими правами. Программная загрузка и обработки могут требовать дополнительных прав — это настраивается в ролях конфигурации.
Почему после загрузки записи не видно в отчёте?
Частые причины: запись попала на пустую или неверную дату (для периодического регистра), отчёт строится по виртуальной таблице среза на дату раньше даты записи, либо загрузка завершилась с ошибкой и транзакция откатилась. Проверьте записи напрямую в форме списка регистра и сравните период с датой, на которую строится отчёт.
Что быстрее для больших объёмов: менеджер записи или набор записей?
Набор записей: он записывает всю порцию одной операцией, тогда как менеджер записи обращается к базе на каждую строку. На тысячах записей разница во времени становится многократной. Менеджер записи уместен для точечного изменения одной строки, например при интерактивной правке.