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