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

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

Как изменить запись регистра сведений, подчинённого регистратору, в 1С

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

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

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

Как устроена подчинённость регистратору и почему это важно

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

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

Способ 1: изменить запись через документ-регистратор

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

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

Как найти регистратор по записи

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

Способ 2: ручная корректировка движений документа

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

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

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

Способ 3: программное изменение через набор записей

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

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

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

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

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

Если Запись.Номенклатура = ИскомаяНоменклатура Тогда

Запись.Цена = НоваяЦена;

КонецЕсли;

КонецЦикла;

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

Обратите внимание: отбор по регистратору обязателен — без него при записи с замещением можно удалить чужие данные. Параметр «Истина» метода Записать() означает замещение существующего набора; для подчинённого регистра набор всегда пишется целиком в рамках регистратора.

Добавление новой строки программно

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

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

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

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

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

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

НоваяЗапись.Цена = 1500;

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

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

bsl
НаборЗаписей = РегистрыСведений.МойРегистр.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(ДокументСсылка);
НаборЗаписей.Прочитать();
НаборЗаписей[0].Ресурс = НовоеЗначение;
НаборЗаписей.Записать(Истина);

Выбор способа под задачу

Сравнение вариантов

Перепроведение документа

Подходит, когда ошибка в данных самого документа. Ограничение: затрагивает все регистры документа и может быть запрещено в закрытом периоде.

Ручная корректировка движений

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

Программная запись набора

Подходит для массовых исправлений, обработок и конвертаций. Ограничение: требует аккуратности с отбором и тестирования на копии.

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

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

Как выбрать действие

Данные в документе неверныИсправьте документ и перепроведите его
Документ верен, неправильны только движенияВключите ручную корректировку и поправьте набор записей
Нужно исправить много документов сразуНапишите обработку с набором записей и отбором по регистратору
Период закрыт и правка запрещенаСогласуйте изменение и делайте правку документом корректировки текущей датой

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

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

Затем проверьте зависимые отчёты: если регистр используется в отчётах или регламентных расчётах, сформируйте их до и после правки и сравните итоги. Расхождения должны объясняться только вашей корректировкой.

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

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

Набор записей по регистратору
Норма

Строки соответствуют внесённым правкам

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

Строки пропали или дублируются

Поле «Период» у записей
Норма

Дата соответствует логике учёта

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

Пустая или случайная дата

Отчёты по данным регистра
Норма

Изменились только ожидаемые показатели

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

Изменились не связанные с правкой итоги

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

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

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

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

FAQ

Можно ли изменить запись подчинённого регистра прямо в форме списка регистра?

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

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

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

Как удалить одну запись из набора, а не весь набор?

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

Можно ли перенести записи от одного регистратора к другому?

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

Почему метод Записать() выдаёт ошибку о регистраторе?

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

Нужны ли особые права для ручной корректировки движений?

Да. В типовых конфигурациях ручная корректировка доступна пользователям с расширенными правами (как правило, полными или ролью администратора/настройщика). Если флаг недоступен, проверьте назначенные роли.

Итог

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

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