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

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

Регистр сведений в 1С: как изменить запись

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

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

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

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

Что нужно знать о регистре перед изменением записи

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

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

Как изменить запись вручную в режиме 1С:Предприятие

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

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

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

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

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

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

МенеджерЗаписи.Период = Дата(2026, 1, 15);

МенеджерЗаписи.Валюта = СсылкаНаВалюту;

МенеджерЗаписи.Прочитать();

Если МенеджерЗаписи.Выбран() Тогда

МенеджерЗаписи.Курс = 95.5;

МенеджерЗаписи.Записать();

Иначе

Сообщить("Запись не найдена");

КонецЕсли;

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

Массовое изменение через набор записей

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

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

НаборЗаписей.Отбор.ТипЦен.Установить(СсылкаНаТипЦен);

НаборЗаписей.Прочитать();

Для Каждого Запись Из НаборЗаписей Цикл

Запись.Цена = Запись.Цена * 1.1;

КонецЦикла;

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

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

Для точечного обновления большого объёма данных иногда эффективнее использовать запрос с конструкцией ВЫБРАТЬ и последующей записью через менеджер записей в транзакции — так вы контролируете каждую изменённую строку и можете откатить всё при ошибке.

bsl
НаборЗаписей.Отбор.ТипЦен.Установить(ТипЦен); НаборЗаписей.Прочитать(); // обязательно перед изменением!

Особенности периодических регистров и регистров с регистратором

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

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

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

Как выбрать способ

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

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

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

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

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

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

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

Отображается новое значение, строка одна

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

Появилась вторая похожая строка — создан дубль

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

Количество совпадает

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

Записей стало меньше — набор записан без Прочитать()

Поведение прикладного механизма
Норма

Документ или отчёт использует новое значение

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

Подставляется старое значение — изменена не та запись или не тот период

Типичные ошибки и ограничения

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

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

Отдельно учитывайте права доступа: если у пользователя нет права «Изменение» на регистр, форма откроется только на просмотр, а программная запись вызовет исключение. В файловой базе массовые изменения лучше выполнять в монопольном режиме или при минимальной нагрузке, чтобы избежать конфликтов блокировок.

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

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

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

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

Как изменить запись, если регистр не виден в меню?

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

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

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

Чем отличается изменение записи в периодическом регистре от непериодического?

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

Что делать, если после программной записи данные пропали?

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

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

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

Как изменить записи регистра сведений во всех узлах распределённой базы?

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