Разработка и Конфигурация · 11 мин
Как работает регистр в 1С: виды, движения и практика
Как работают регистры в 1С: накопления, сведений, расчёта и бухгалтерии. Движения документов, итоги, виртуальные таблицы, типичные ошибки и проверка результата.
Регистр — это основной механизм хранения и накопления оперативных данных в 1С. Если справочники отвечают на вопрос «что это за объект», а документы — «что произошло», то регистры отвечают на вопрос «сколько, где и на какую дату»: остатки товара на складе, задолженность клиента, курс валюты на конкретное число. Практически весь учёт в типовых конфигурациях построен именно на регистрах, поэтому понимание их работы обязательно и для пользователя, и для программиста.
Ключевая особенность регистра: он почти никогда не заполняется «вручную» напрямую. Записи в регистр создают документы при проведении — этот процесс называется движениями. Документ «Реализация товаров» при проведении списывает остатки из регистра накопления «Товары на складах» и добавляет запись в регистр взаиморасчётов. Отменили проведение документа — движения исчезли, итоги пересчитались автоматически.
Ниже разберём, какие виды регистров существуют, как устроены движения и итоги, почему отчёты иногда показывают не те цифры и как безопасно проверить и исправить ситуацию.
Что такое регистр и чем он отличается от справочника
Физически регистр — это таблица в базе данных с заранее определённой структурой: измерения, ресурсы и реквизиты. Измерения задают «разрезы» учёта (номенклатура, склад, контрагент), ресурсы — числовые или иные значения, которые хранятся в этих разрезах (количество, сумма), реквизиты — дополнительная информация о записи, не влияющая на итоги.
Принципиальное отличие от справочника в том, что регистр хранит не объекты, а факты и состояния. Справочник «Номенклатура» содержит одну карточку товара, а регистр накопления «Товары на складах» — множество записей о приходах и расходах этого товара, из которых платформа вычисляет текущий остаток. Удалить или изменить запись регистра напрямую обычно нельзя — она принадлежит документу-регистратору.
Виды регистров в 1С и когда какой применяется
Платформа 1С:Предприятие предоставляет четыре основных вида регистров, каждый под свою задачу. Выбор вида определяется тем, что именно нужно хранить: изменяющийся остаток, значение на дату, начисление сотруднику или бухгалтерскую проводку.
| Вид регистра | Что хранит | Типичный пример |
|---|---|---|
| Накопления (остатки) | Приход/расход и текущий остаток | Товары на складах, деньги на счетах |
| Накопления (обороты) | Только обороты за период, без остатка | Объёмы продаж, статистика заказов |
| Сведений | Значения в разрезе измерений, часто с периодичностью | Курсы валют, цены номенклатуры, ФИО физлица |
| Бухгалтерии | Проводки по плану счетов | Хозяйственные операции в бухучёте |
| Расчёта | Начисления и удержания с периодом действия | Оклад, премии, больничные в ЗУП |
Регистр накопления: остатки против оборотов
Регистр накопления вида «Остатки» хранит записи с типом «Приход» или «Расход», и платформа умеет быстро вычислять остаток на любую дату. Это самый частый вид в учётных задачах. Вид «Обороты» применяют, когда остаток бессмысленен — например, для суммы продаж за месяц: складывать «остаток продаж» не нужно, нужны только обороты за период.
Регистр сведений: периодичность и режим записи
Регистр сведений может быть периодическим (значение действует с указанной даты, как курс валюты) или непериодическим. Отдельный важный параметр — режим записи: «независимый» регистр заполняется вручную или обработкой, «подчинённый регистратору» — только документами. Курсы валют обычно независимы, а цены номенклатуры в типовых часто подчинены документу «Установка цен».
Как документы делают движения по регистрам
При проведении документа выполняется его обработчик проведения: программный код формирует наборы записей по каждому регистру, указанному в списке движений документа. Пользователь может посмотреть результат кнопкой «Движения документа» (в типовых формах — «Ещё → Движения документа» или по сочетанию клавиш). Там видно, какие записи и в какие регистры записал конкретный документ.
Проверка движений — первый шаг диагностики любого учётного расхождения. Если отчёт по остаткам показывает лишний товар, найдите документ, который должен был его списать, откройте движения и убедитесь: запись в регистре есть, склад и номенклатура указаны верно, количество соответствует табличной части. Расхождение между табличной частью и движениями указывает на ошибку в модуле проведения или на ручную корректировку регистра.
- 1Откройте документ в режиме просмотра
- 2Нажмите «Ещё» и выберите «Движения документа» (или Ctrl+Shift+D в ряде конфигураций)
- 3Выберите нужный регистр в списке слева
- 4Сверьте измерения и ресурсы записей с табличной частью документа
- 5Если движений нет — проверьте, проведён ли документ и входит ли регистр в его список движений
Итоги, виртуальные таблицы и скорость отчётов
Чтобы не перебирать миллионы записей при каждом запросе остатков, платформа хранит предрассчитанные итоги по регистрам накопления — помесячно. Благодаря этому отчёт «Остатки товаров» открывается за секунды даже на больших базах. Рассчитанные итоги доступны через виртуальные таблицы: «Остатки», «Обороты», «ОстаткиИОбороты» для регистров накопления и «СрезПоследних», «СрезПервых» для периодических регистров сведений.
При разработке запросов почти всегда следует обращаться к виртуальным таблицам, а не к физической таблице регистра: это и быстрее, и проще. Физическую таблицу имеет смысл читать, только когда нужны сами записи с детализацией до документа.
ВЫБРАТЬ
ТоварыОстатки.Номенклатура КАК Номенклатура,
ТоварыОстатки.Склад КАК Склад,
ТоварыОстатки.КоличествоОстаток КАК Остаток
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, ) КАК ТоварыОстаткиУ итогов есть важный административный аспект: хранение итогов можно отключать для редко используемых регистров, а при повреждении базы итоги пересчитывают через «Тестирование и исправление» или команду пересчёта. Если отчёт внезапно показывает данные, не совпадающие с детальными записями, — один из вероятных виновников именно некорректные итоги.
Типичные проблемы с регистрами и их диагностика
Большинство жалоб пользователей «отчёт врёт» сводится к нескольким повторяющимся причинам: непроведённые документы, документы проведены «задним числом» после закрытия периода, ручные операции с записями регистров, рассинхронизация итогов. Реже встречаются ошибки в коде проведения после доработок конфигурации.
Отдельный класс проблем — отрицательные остатки. Они возникают, когда расход проведён раньше прихода по времени или приход вообще не оформлен. В типовых конфигурациях есть механизм контроля остатков при проведении, но его иногда отключают ради скорости — тогда минуса копятся незаметно и всплывают при инвентаризации.
Как проверить корректность данных регистра
Базовая проверка — сопоставление трёх источников: движений конкретных документов, детального отчёта по регистру и отчёта по итогам. Если детальный отчёт (по записям) и итоговый отчёт (по остаткам) расходятся — вероятно повреждение итогов, помогает их пересчёт. Если оба отчёта согласованы, но цифра «не та, что ожидалось», — ищите ошибку в первичных документах.
Как проверить результат
Значения совпадают на одну и ту же дату и время
Расхождение — проверяйте итоги и время документов
Записи присутствуют, измерения и суммы равны табличной части
Движений нет или суммы отличаются — смотрите проведение и код
Отчёт по отрицательным остаткам пуст
Есть минуса — ищите расход раньше прихода по времени
На запрошенную дату возвращается актуальное значение
Возвращается устаревшее значение — не введены записи за период
Для программной проверки удобно использовать универсальный отчёт по регистру или консоль запросов: один и тот же запрос к виртуальной таблице «Остатки» и к физической таблице с группировкой по измерениям быстро покажет, где расхождение.
Практические рекомендации по работе с регистрами
При проектировании собственных регистров минимизируйте число измерений: каждое измерение входит в индексы итогов, и лишние разрезы замедляют проведение и увеличивают таблицы. Не пихайте в ресурсы данные, которые не участвуют в итогах, — для них есть реквизиты. Для регистров сведений с частыми запросами «на дату» включайте режим «Срез последних» осознанно и следите за периодичностью.
При эксплуатации полезны регламентные действия: периодический контроль отрицательных остатков, установка даты запрета редактирования после закрытия периода, регламентный пересчёт итогов на копии при подозрениях. Эти простые меры предотвращают большинство «внезапных» расхождений в отчётности.
Что важно запомнить
Регистры — основа учёта в 1С: их заполняют документы при проведении, а итоги хранятся предрассчитанными для быстрых отчётов. Диагностику начинайте с движений конкретного документа, запросы стройте на виртуальных таблицах, а любые массовые операции выполняйте только после резервного копирования.
Частые вопросы о регистрах 1С
Можно ли добавить запись в регистр вручную, без документа?
Для независимых регистров сведений — да, это штатный режим. Для регистров, подчинённых регистратору, запись без документа невозможна штатно: принято создавать специальный документ «Корректировка регистров» («Операция» в типовых), который вносит нужные движения прозрачно и обратимо.
Почему отчёт показывает остаток, а списания нет в документах?
Чаще всего документ расхода проведён временем раньше прихода в пределах одного дня или приходный документ отменён/не проведён. Отсортируйте движения по регистру с точностью до секунды и проверьте последовательность — минус образуется в момент, когда расход опережает приход.
Что делать, если движения документа не соответствуют его табличной части?
Сначала перепроведите документ — возможно, его проводили до изменения конфигурации. Если расхождение сохраняется, проблема в коде обработки проведения или в ручной корректировке регистра. Проверяйте на копии базы с участием разработчика.
Когда пересчитывать итоги регистров?
Когда итоговые отчёты расходятся с детальными данными при одинаковых отборах, после восстановления базы из архива или после массовых загрузок внешними обработками. Пересчёт выполняется в монопольном режиме, поэтому планируйте его на нерабочее время.
Чем регистр накопления «Обороты» лучше регистра «Остатки»?
Оборотный регистр не хранит таблицу итогов остатков, поэтому записи в него дешевле по производительности, а структура проще. Его выбирают, когда нужен только анализ за период — например, суммы продаж или количество отгрузок, где понятие «текущий остаток» не имеет смысла.
Влияет ли количество регистров в движениях документа на скорость проведения?
Да, заметно: каждый регистр — это отдельный набор записей и обновление итоговых таблиц. Документ, двигающий десяток регистров, проводится существенно дольше. Поэтому при доработках не стоит добавлять документу лишние движения «на всякий случай» — только те, данные которых реально используются в отчётах.