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