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

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

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

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

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

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

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

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

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

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

Из этого следует главное практическое правило: любая загрузка данных — это создание или изменение движений какого-либо документа. Даже «ручная корректировка» в типовых конфигурациях оформляется либо документом «Корректировка регистров» (операция), либо флагом ручной корректировки у самого документа.

Способ 1. Загрузка через документы

Самый безопасный путь — ввести данные штатными документами. Для остатков товаров это «Ввод начальных остатков» (в УТ, ERP, КА) или «Инвентаризация» / «Оприходование товаров», для взаиморасчётов — документы ввода остатков по расчётам, для денежных средств — ввод остатков по кассе и банку.

Порядок действий типовой: создать документ, заполнить табличную часть вручную или через кнопку «Заполнить» (многие документы умеют загружать из файла через «Загрузить из внешнего файла» — в типовых на БСП доступна обработка загрузки табличных частей из Excel/CSV), провести. После проведения платформа сама сформирует записи в регистрах, указанных в модуле документа.

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

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

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

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

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

НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.ВидДвижения = ВидДвиженияНакопления.Приход;
НоваяЗапись.Период = ДокументСсылка.Дата;
НоваяЗапись.Номенклатура = НоменклатураСсылка;
НоваяЗапись.Склад = СкладСсылка;
НоваяЗапись.Количество = 10;

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

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

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

Способ 3. Документ «Корректировка регистров» (операция)

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

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

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

Способ 4. Перенос данных обработками и обменом

При миграции между базами (например, из 1С 7.7 или из УТ 10 в УТ 11) данные в регистры накопления загружают механизмами конвертации: типовой «Универсальный обмен данными в формате XML», «Конвертация данных» с настроенными правилами либо обработки переноса, поставляемые вендором конфигурации. В этом случае правила конвертации создают в базе-приёмнике документы ввода остатков, которые и формируют записи регистров.

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

Сравнение способов загрузки

Штатный документ

Подходит для разового ввода и работы пользователя. Безопасно, но медленно при больших объёмах.

Корректировка регистров

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

Программный набор записей

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

Обработки переноса и обмен

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

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

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

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

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

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

Движения документа
Норма

Строки есть в нужном регистре, измерения заполнены

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

Регистр пуст или строки с пустыми измерениями

Отчёт по остаткам на дату загрузки
Норма

Итог совпадает с исходными данными

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

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

Остатки с детализацией по всем измерениям
Норма

Нет строк с пустым складом/номенклатурой

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

Остатки «висят» на пустых значениях

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

Движения не меняются, итоги стабильны

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

После проведения загруженные данные пропадают

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

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

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

Типичные ошибки
01
Запись набора без отбора по регистратору — ошибка выполнения или потерянные данные.
02
Пустые измерения — остатки не видны в отчётах с отборами и «висят» на пустых значениях.
03
Неверный вид движения при вводе остатков — отрицательные остатки и сбитая себестоимость.
04
Повторный запуск обработки без очистки — задвоение движений.
05
Загрузка в рабочую базу без копии — невозможность быстро откатить ошибку.
06
Игнорирование даты запрета редактирования — необъяснимые отказы записи.

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

Итог

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

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

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

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

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

Чем отличается загрузка в остаточный и оборотный регистр?

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

Как загрузить данные из Excel в регистр накопления?

Напрямую из Excel в регистр загрузить нельзя. Загрузите файл в табличную часть документа (в типовых есть «Загрузка данных из табличного документа») и проведите его, либо напишите обработку, которая читает файл и создаёт документы или набор записей с регистратором.

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

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

Как удалить ошибочно загруженные движения?

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

Можно ли загружать данные в регистр за закрытый период?

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