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

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

Как создать запись в регистре накопления 1С

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

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

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

Что такое регистр накопления и как устроена запись

Регистр накопления хранит числовые показатели (ресурсы) в разрезе аналитик (измерений) с привязкой к моменту времени и документу-регистратору. Например, регистр «ТоварыНаСкладах» содержит измерения «Номенклатура» и «Склад», а ресурсом является количество. Каждая запись — это одно движение: приход или расход на конкретную дату.

Ключевые поля записи, которые всегда должны быть заполнены:

  • Период — дата и время движения, влияет на попадание в отчёты и расчёт итогов;
  • Вид движения — приход или расход (для регистров вида «Остатки»);
  • Регистратор — документ, создавший запись; заполняется автоматически;
  • Измерения — аналитические разрезы (склад, товар, контрагент);
  • Ресурсы — числовые значения (количество, сумма).

Реквизиты регистра заполняются опционально и не участвуют в итогах — это справочная информация к движению, например номер накладной поставщика.

Создание записи при проведении документа

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

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

Проверка движений документа
  1. 1
    Проведите документ в пользовательском режиме
  2. 2
    Откройте меню «Ещё» → «Движения документа»
  3. 3
    Найдите нужный регистр накопления в списке
  4. 4
    Проверьте вид движения, измерения и ресурсы в записях
  5. 5
    Сверьте результат с отчётом по регистру (например, «Остатки товаров»)

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

Программное создание записи на встроенном языке

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

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

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

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

НоваяЗапись.ВидДвижения = ВидДвиженияНакопления.Приход;

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

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

НоваяЗапись.Склад = СкладОтгрузки;

НоваяЗапись.Количество = 10;

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

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

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

Движение = Движения.ТоварыНаСкладах.Добавить();

Движение.ВидДвижения = ВидДвиженияНакопления.Приход;

Движение.Период = Дата;

Движение.Номенклатура = СтрокаТовары.Номенклатура;

Движение.Склад = Склад;

Движение.Количество = СтрокаТовары.Количество;

Ручная корректировка записей без программирования

Когда нужно разово исправить остатки без доработки конфигурации, в типовых решениях предусмотрены специальные документы. В «1С:Бухгалтерии» это «Операция, введённая вручную» с возможностью добавить движения по регистрам. В управленческих конфигурациях («Управление торговлей», «ERP») используются документы «Корректировка регистров», «Оприходование излишков товаров», «Списание недостач товаров».

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

Способы создать запись

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

Основной способ. Движения согласованы с логикой конфигурации, корректно удаляются при отмене проведения.

Документ корректировки регистров

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

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

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

Проверка результата

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

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

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

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

Наличие записи в движениях документа
Норма

Запись есть, вид движения и ресурсы заполнены

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

Список движений пуст — обработчик не сработал или регистр не указан в движениях документа

Влияние на отчёт по остаткам
Норма

Остаток изменился на сумму движения

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

Остаток не изменился — проверьте период записи и отборы отчёта

Вид движения
Норма

Приход увеличивает остаток, расход уменьшает

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

Остаток ушёл в минус или изменился в обратную сторону — перепутан вид движения

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

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

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

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

Границы самостоятельной работы

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

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

Итог

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

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

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

Можно ли добавить запись в регистр накопления напрямую, без документа?

В пользовательском режиме — нет: у каждой записи обязательно должен быть регистратор. Если документ-источник отсутствует, используйте документ «Корректировка регистров» или аналог — он станет регистратором для ручных записей.

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

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

Чем регистр накопления «Остатки» отличается от «Обороты» при создании записей?

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

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

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

Можно ли загрузить записи в регистр из внешнего файла?

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

Почему в отчёте появились остатки с пустым складом или пустой номенклатурой?

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