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