К статье
Практический материал

Разработка и Конфигурация · 11 мин

Как добавить записи в регистр сведений в 1С

Как добавить записи в регистр сведений 1С: вручную через форму списка, обработкой, программно на встроенном языке и загрузкой из таблицы. Примеры кода и проверка результата.

Регистр сведений в 1С хранит данные в разрезе измерений: курсы валют, цены номенклатуры, адреса контрагентов, настройки пользователей. Добавить записи в него можно несколькими способами — вручную через интерфейс, обработкой загрузки, программно на встроенном языке или через документ-регистратор, если регистр подчинён регистратору. Выбор зависит от режима записи регистра, объёма данных и того, кто выполняет работу — пользователь или разработчик.

Ключевое ограничение, о котором часто забывают: если регистр сведений подчинён регистратору (режим записи «Подчинение регистратору»), добавить в него записи напрямую нельзя — их создаёт только документ при проведении. Независимый регистр, наоборот, доступен для ручного и программного заполнения. Прежде чем что-либо делать, откройте свойства регистра в конфигураторе и посмотрите поле «Режим записи».

Как определить режим записи регистра и выбрать способ

Откройте конфигуратор, найдите нужный регистр в ветке «Регистры сведений» и вызовите палитру свойств. Поле «Режим записи» принимает два значения: «Независимый» и «Подчинение регистратору». Второй важный параметр — «Периодичность»: непериодический, в пределах секунды, дня, месяца и т.д. Периодичность определяет, входит ли дата в ключ записи.

Для периодического регистра уникальность записи определяется комбинацией «Период + все измерения». Для непериодического — только измерениями. Это значит, что попытка добавить вторую запись с тем же набором измерений (и периодом) вызовет ошибку нарушения уникальности индекса. Учитывайте это при массовой загрузке: дубли в источнике данных приведут к отказу записи.

Маршрут решения

Как выбрать способ добавления записей

Регистр независимый, записей мало (до нескольких десятков)Добавляйте вручную через форму списка в режиме предприятия
Регистр независимый, нужно загрузить сотни или тысячи строкИспользуйте типовую обработку загрузки из табличного документа или напишите код с НаборомЗаписей
Регистр подчинён регистраторуСоздайте и проведите документ-регистратор; прямая запись невозможна
Нужно разово исправить несколько записей в файловой базеПодойдёт ручное редактирование или групповая обработка через консоль кода

Ручное добавление записей через форму списка

Самый простой сценарий доступен пользователю без прав разработчика. В режиме «1С:Предприятие» откройте регистр через главное меню: «Все функции» → «Регистры сведений» → нужный регистр. Если пункт «Все функции» не отображается, включите его: «Сервис» → «Параметры» → флажок «Отображать команду "Все функции"». В типовых конфигурациях часто есть и прикладной путь — например, курсы валют открываются из карточки валюты.

В форме списка нажмите «Создать» (клавиша Insert), заполните поля измерений и ресурсов и нажмите «Записать и закрыть». Для периодического регистра обязательно укажите дату — от неё зависит, какое значение будет актуальным на конкретный момент. Если регистр периодический, проверить результат удобно кнопкой «Перейти» → «История» из карточки связанного объекта.

Ручное добавление записи
  1. 1
    Откройте «Все функции» → «Регистры сведений» → нужный регистр
  2. 2
    Нажмите «Создать» или Insert
  3. 3
    Заполните измерения, ресурсы и при необходимости период
  4. 4
    Нажмите «Записать и закрыть»
  5. 5
    Проверьте, что запись появилась в списке и корректно отбирается отчётом или срезом последних

Программное добавление: МенеджерЗаписи и НаборЗаписей

Для разработчика основной инструмент — объектная модель. Одну запись добавляют через МенеджерЗаписи: создают объект, заполняют поля и вызывают метод Записать(). Параметр метода Записать(Истина) означает замещение существующей записи с тем же ключом; Записать(Ложь) вызовет ошибку при дубле. Это удобно для точечных операций, но медленно при массовой загрузке — каждая запись пишется отдельной транзакцией.

Для пакетной вставки используют НаборЗаписей: устанавливают отбор (или оставляют пустым для полной перезаписи), добавляют строки методом Добавить() и записывают весь набор одним вызовом. Так работает заметно быстрее, но есть риск: набор, записанный с отбором, полностью замещает все записи, попадающие под этот отбор. Если забыть установить отбор, метод Записать() перезапишет регистр целиком — все старые данные будут удалены.

// Одна запись через МенеджерЗаписи

Запись = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи();

Запись.Период = ТекущаяДатаСеанса();

Запись.Валюта = Справочники.Валюты.НайтиПоКоду("840");

Запись.Курс = 90.5;

Запись.Записать(Истина);

// Пакетная запись через НаборЗаписей

Набор = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();

Набор.Отбор.ВидЦены.Установить(ВидЦены);

Для Каждого Строка Из ТаблицаДанных Цикл

НоваяЗапись = Набор.Добавить();

НоваяЗапись.Номенклатура = Строка.Номенклатура;

НоваяЗапись.Цена = Строка.Цена;

КонецЦикла;

Набор.Записать(Истина);

Загрузка записей из таблицы Excel или CSV

Когда данные уже есть в электронной таблице, ручной ввод нерационален. В типовых конфигурациях (Бухгалтерия, Управление торговлей, ERP) есть встроенная обработка «Загрузка данных из табличного документа» — она умеет заполнять и регистры сведений. Откройте её через «Все функции» → «Обработки», выберите режим загрузки в регистр сведений, укажите сам регистр и сопоставьте колонки таблицы с измерениями и ресурсами.

Подготовьте файл заранее: значения ссылочных полей (номенклатура, контрагенты, валюты) должны однозначно находиться в базе — по наименованию, коду или артикулу. Смешанные форматы дат и чисел с разными разделителями — частая причина ошибок при распознавании. Загружайте небольшой тестовый пакет из 5–10 строк, проверьте результат и только потом запускайте полный объём.

Записи в регистр, подчинённый регистратору

Если в свойствах регистра установлено «Подчинение регистратору», у каждой записи есть поле «Регистратор» — ссылка на документ. Такие записи создаются только движениями документа: в модуле объекта документа в обработчике ОбработкаПроведения заполняется коллекция Движения.<ИмяРегистра>, и при проведении платформа записывает её в регистр.

Чтобы добавить записи в такой регистр, нужен документ, у которого в свойствах на вкладке «Движения» отмечен этот регистр. Создайте документ, заполните табличную часть (или реквизиты, откуда берутся данные движений) и проведите его. Отмена проведения или пометка документа на удаление автоматически удалит его записи из регистра — это нормальное поведение, а не ошибка.

bsl
// В модуле объекта документа, ОбработкаПроведения
Движения.СтатусыЗаказов.Записывать = Истина;
Движение = Движения.СтатусыЗаказов.Добавить();
Движение.Период = Дата;
Движение.Заказ = ЗаказПокупателя;
Движение.Статус = Перечисления.СтатусыЗаказа.ВРаботе;

Проверка результата и типичные ошибки

После добавления записей убедитесь, что данные легли правильно. Откройте форму списка регистра и установите отбор по измерениям. Для периодических регистров проверьте срез последних: откройте настройку списка и убедитесь, что актуальные значения соответствуют ожиданиям. Программно результат проверяют запросом с виртуальной таблицей СрезПоследних или выборкой с отбором.

Обратите внимание на количество записей до и после загрузки — расхождение с числом строк в источнике указывает на дубли ключей (перезаписанные записи) или отказы при записи. Если загружали через набор записей с отбором, проверьте также, что записи за пределами отбора не пострадали.

Контрольные точки

Как проверить результат

Количество записей в регистре
Норма

Совпадает с числом уникальных строк источника

Тревожный признак

Меньше ожидаемого — были дубли ключей или ошибки записи

Срез последних по периодическому регистру
Норма

Актуальное значение соответствует последней загруженной дате

Тревожный признак

Показывается старое значение — даты в файле были неверны

Записи вне области загрузки
Норма

Сохранились без изменений

Тревожный признак

Исчезли — набор записей был записан без отбора

Значения ссылочных полей
Норма

Заполнены существующими объектами базы

Тревожный признак

Пустые или «битые» ссылки — объект не найден при загрузке

Типичные ошибки
01
Запись набора без отбора — полная перезапись регистра и потеря существующих данных
02
Попытка добавить запись в подчинённый регистр напрямую — платформа не даст этого сделать, нужен документ-регистратор
03
Дубли ключей измерений в источнике — часть строк молча перезаписывает друг друга
04
Неверный формат дат и чисел в файле — обработка подставляет нулевые или текущие значения
05
Загрузка в рабочую базу без копии — при ошибке откатить изменения будет нечем
06
Запись по одной строке через МенеджерЗаписи для тысяч записей — долго и нагружает базу; используйте НаборЗаписей

Ограничения, права и безопасная работа

Доступ к регистру сведений регулируется правами роли: «Чтение», «Добавление», «Изменение». Если кнопка «Создать» недоступна или запись не сохраняется без сообщения об ошибке, проверьте права пользователя и настройки RLS (ограничение доступа на уровне записей) — в типовых конфигурациях часть регистров скрыта от рядовых пользователей. Работа через «Все функции» обычно требует прав администратора.

Массовые изменения выполняйте в монопольном или малонагруженном режиме: большая транзакция записи набора может вызвать блокировки у других пользователей. Для клиент-серверной базы согласуйте окно загрузки с администратором. И главное правило: любая операция, которая меняет больше нескольких записей, начинается с резервной копии и прогона на тестовой базе.

Итог

Что важно запомнить

Сначала проверьте режим записи регистра: независимый заполняется вручную, обработкой или кодом, подчинённый — только проведением документа. Для массовой загрузки используйте НаборЗаписей с обязательным отбором. Перед изменениями делайте резервную копию и проверяйте результат по количеству записей и срезу последних.

Частые вопросы

Почему кнопка «Создать» в регистре сведений неактивна?

Чаще всего регистр подчинён регистратору — в такие регистры записи добавляет только документ при проведении. Вторая причина — нехватка прав: проверьте у своей роли права «Добавление» и «Изменение» для этого регистра.

Чем отличается Записать(Истина) от Записать(Ложь) у менеджера записи?

Параметр управляет замещением. Записать(Истина) перезапишет существующую запись с таким же ключом измерений (и периодом). Записать(Ложь) при совпадении ключа вызовет исключение о нарушении уникальности — это защищает от случайной перезаписи.

Можно ли загрузить записи в регистр сведений через COM или внешнее соединение?

Да, через COM-соединение, веб-сервисы, HTTP-сервисы или планы обмена записи добавляются теми же объектами (МенеджерЗаписи, НаборЗаписей) — меняется только способ передачи данных. Ограничения по режиму записи регистра при этом действуют так же.

Как удалить ошибочно загруженные записи?

Для независимого регистра — вручную из формы списка или программно: создайте НаборЗаписей, установите отбор по ошибочным данным и вызовите Записать() с пустым набором — записи под отбором будут удалены. Если ошибочная загрузка затронула чужие данные, надёжнее восстановить регистр из резервной копии.

Почему после загрузки срез последних показывает старое значение?

У периодического регистра актуальность определяется датой записи. Если в файле даты были старше уже существующих, загруженные значения не попадут в срез последних. Проверьте период загруженных записей и при необходимости загрузите данные с корректными датами.

Есть ли ограничение на количество записей в регистре сведений?

Жёсткого лимита платформа не устанавливает; регистры с миллионами записей встречаются на практике. Реальные ограничения — производительность запросов и размер базы: для больших регистров важны правильные индексы по измерениям и отборы в запросах.