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

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

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

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

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

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

Ниже разобраны все рабочие способы с примерами кода, проверкой результата и разбором типичных ошибок. Инструкции подходят для типовых конфигураций на управляемых формах (БП, УТ, ERP, ЗУП) и для самописных решений.

Что проверить перед добавлением записи

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

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

Если регистр входит в типовые механизмы (например, «Курсы валют» или «Сведения о сотрудниках»), проверьте, не перезаписывается ли он автоматически при проведении документов или обменах. Ручная запись в таком регистре может быть затёрта следующим обменом.

Способ 1. Добавление записи через форму списка

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

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

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

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

Способ 2. Запись через менеджер записи

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

НоваяЗапись = РегистрыСведений.ОтветственныеЛица.СоздатьМенеджерЗаписи();

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

НоваяЗапись.Организация = СсылкаНаОрганизацию;

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

НоваяЗапись.Записать();

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

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

bsl
Менеджер = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи();
Менеджер.Период = ДатаКурса;
Менеджер.Валюта = ВалютаСсылка;
Менеджер.Прочитать();
Если Не Менеджер.Выбран() Тогда
    Менеджер.Период = ДатаКурса;
    Менеджер.Валюта = ВалютаСсылка;
КонецЕсли;
Менеджер.Курс = 92.5;
Менеджер.Записать();

Способ 3. Запись через набор записей

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

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

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

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

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

НоваяСтрока.ВидЦены = ВидЦеныСсылка;

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

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

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

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

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

Массовая загрузка через обработку

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

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

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

Сравнение способов

Форма списка

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

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

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

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

Для пакетной записи и замещения среза по отбору. Требует аккуратности с отбором — легко удалить лишнее

Загрузка из файла

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

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

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

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

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

Типичные ошибки
01
Запись набора с отбором без предварительного чтения — удаляются все остальные записи под отбором
02
Игнорирование поля «Период» в периодическом регистре — запись создаётся с пустой датой и не попадает в срезы
03
Изменение измерения у существующей записи — старая запись остаётся, возникает дубль
04
Запись в регистр, который перезаполняется обменом — данные затираются следующей синхронизацией
05
Отсутствие транзакции при массовой загрузке — база остаётся частично заполненной при сбое
Контрольные точки

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

Запись в списке регистра
Норма

Видна при отборе по измерениям, ресурсы заполнены

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

Запись не находится или ресурсы пустые

Период записи
Норма

Совпадает с ожидаемой датой, включая время

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

Пустая дата или смещение по времени

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

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

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

Меньше — есть дубли ключей или пропуски

Журнал регистрации
Норма

Нет ошибок доступа и уникальности

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

Ошибки «Нарушение прав доступа» или конфликт ключей

FAQ

Чем независимый регистр сведений отличается от подчинённого регистратору?

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

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

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

Можно ли добавить запись в регистр сведений без прав администратора?

Да, если в роли пользователя на этот регистр установлены права «Добавление» и «Изменение». Прав администратора не требуется — достаточно соответствующего профиля группы доступа.

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

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

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

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

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

Да. Через COM-connector используется тот же объектный API: СоздатьМенеджерЗаписи() в контексте внешнего соединения. Также применяют HTTP-сервисы, web-сервисы и стандартный OData-интерфейс, если он включён в публикации базы.

Итог

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

Запись в независимый регистр сведений добавляется через форму списка, менеджер записи или набор записей. Уникальность определяется измерениями и периодом. Набор записей с отбором замещает все записи под отбором — используйте его осторожно и делайте резервные копии перед массовыми операциями.