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

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

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

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

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

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

Проверка режима регистра перед добавлением данных

Первый шаг — определить, можно ли вообще записывать в регистр напрямую. Откройте конфигуратор, найдите регистр в ветке «Регистры сведений» и посмотрите свойство «Режим записи». Значение «Независимый» означает, что записи создаются вручную или кодом. Значение «Подчинение регистратору» означает, что каждая запись привязана к документу-регистратору, и попытка добавить запись без него вызовет ошибку.

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

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

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

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

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

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

Программное добавление через менеджер записи

Менеджер записи подходит, когда нужно добавить одну запись. Объект создаётся методом СоздатьМенеджерЗаписи(), поля заполняются по именам, затем вызывается метод Записать(). Этот способ работает только с независимыми регистрами.

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

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

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

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

Запись.Кратность = 1;

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

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

Менеджер записи перед записью читает существующую запись, поэтому при массовом добавлении он работает медленнее набора записей. Для загрузки сотен и тысяч строк используйте набор записей или обработку.

Программное добавление через набор записей

Набор записей эффективнее при добавлении нескольких строк за одну транзакцию. Набор создаётся методом СоздатьНаборЗаписей(), строки добавляются методом Добавить(), после чего весь пакет записывается одним вызовом Записать().

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

НоваяСтрока = Набор.Добавить();

НоваяСтрока.Период = Дата(2026, 1, 1);

НоваяСтрока.Номенклатура = Товар;

НоваяСтрока.ВидЦены = РозничнаяЦена;

НоваяСтрока.Цена = 1500;

Набор.Записать(Ложь);

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

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

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

Если нужно сформировать движения программно, создайте документ, заполните его, а движения добавьте в обработке проведения или через набор записей с отбором по регистратору:

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

Набор.Отбор.Регистратор.Установить(ДокументСсылка);

Строка = Набор.Добавить();

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

Строка.Заказ = ЗаказСсылка;

Строка.Статус = Перечисления.Статусы.ВРаботе;

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

Здесь замещение уместно: набор с отбором по регистратору полностью заменяет движения конкретного документа, что соответствует логике перепроведения. Записи без регистратора в таком регистре создать нельзя ни вручную, ни кодом.

Массовая загрузка данных через обработку

Когда записей много и они приходят из Excel или CSV, ручной ввод и поштучный код непрактичны. В типовых конфигурациях на управляемых формах есть встроенная обработка «Загрузка данных из файла» (раздел «Администрирование» или «НСИ и администрирование»), которая умеет заполнять табличные части и некоторые регистры сведений.

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

Перед загрузкой нормализуйте источник: проверьте, что ссылочные значения (номенклатура, валюты, контрагенты) существуют в базе и находятся по однозначному ключу — коду или наименованию без дублей. Поиск по наименованию с дублями приведёт к привязке записей не к тем элементам.

Сравнение способов добавления

Вручную через форму

Подходит для единичных записей пользователем без программирования. Не масштабируется на сотни строк.

Менеджер записи

Одна запись за раз, простой код. Медленнее при массовой загрузке из-за чтения перед записью.

Набор записей

Пакетная запись за одну транзакцию, максимальная скорость. Требует аккуратности с отборами и замещением.

Обработка загрузки

Для данных из Excel/CSV. Требует подготовки файла и проверки ссылочных значений.

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

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

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

Типичные ошибки
01
Запись набора без отбора с замещением — полная очистка регистра
02
Попытка записать в подчинённый регистр без регистратора — ошибка выполнения
03
Незаполненный период в периодическом регистре — запись попадает на пустую дату и искажает срез последних
04
Поиск ссылок по наименованию при наличии дублей — записи привязываются не к тем объектам
05
Игнорирование параметра Записать(Ложь) — молчаливое перезаписывание существующих данных
Контрольные точки

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

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

Запись видна с корректными измерениями и ресурсами

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

Записи нет или поля пустые

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

Актуальным считается значение с последней датой

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

Возвращается устаревшее или пустое значение

Количество загруженных строк
Норма

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

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

Часть строк потеряна без сообщений об ошибках

Итог

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

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

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

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

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

Можно ли изменить существующую запись, не создавая новую?

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

Что произойдёт, если добавить запись с уже существующим ключом измерений?

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

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

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

Как удалить ошибочно добавленную запись?

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

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

Да, через COMConnector подключитесь к базе-приёмнику и выполните тот же код записи через объектную модель COM. Учитывайте, что ссылки на справочники нужно передавать как найденные в базе-приёмнике объекты — обычно поиском по GUID или коду. Работа через COM медленнее прямого кода, поэтому для больших объёмов предпочтительнее выгрузка в файл и загрузка обработкой.