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