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

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

Как выбрать проводки документа в 1С

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

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

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

Что такое проводки документа и где они хранятся

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

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

Как посмотреть проводки документа вручную

Самый быстрый способ без программирования — открыть документ и нажать кнопку «Ещё → Движения документа» (в типовых конфигурациях сочетание Ctrl+Shift+Enter). Откроется форма со списком регистров, в которых документ сделал движения, и таблицей записей по каждому регистру.

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

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

Как выбрать проводки документа запросом

Основной программный способ — запрос к таблице регистра бухгалтерии с условием по регистратору. Таблица называется РегистрБухгалтерии.Хозрасчётный (имя регистра зависит от конфигурации).

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| Хозрасчётный.Период КАК Период,

| Хозрасчётный.СчётДт КАК СчётДт,

| Хозрасчётный.СчётКт КАК СчётКт,

| Хозрасчётный.Сумма КАК Сумма,

| Хозрасчётный.Содержание КАК Содержание

|ИЗ

| РегистрБухгалтерии.Хозрасчётный КАК Хозрасчётный

|ГДЕ

| Хозрасчётный.Регистратор = &Регистратор";

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

Результат = Запрос.Выполнить().Выбрать();

Параметр &Регистратор передаётся как ссылка на документ (ДокументСсылка). Перед выполнением убедитесь, что документ проведён: у непроведённого документа движений нет, и запрос вернёт пустую выборку — это норма, а не ошибка запроса.

Выборка движений из нескольких регистров

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

Выборка через объектную модель

Альтернатива запросу — метод ВыбратьПоРегистратору менеджера регистра. Он проще в коротких обработках, но медленнее при больших объёмах и не позволяет гибко выбирать поля:

НаборЗаписей = РегистрыБухгалтерии.Хозрасчётный.ВыбратьПоРегистратору(СсылкаНаДокумент);

Пока НаборЗаписей.Следующий() Цикл

Сообщить(НаборЗаписей.СчётДт.Код + " / " + НаборЗаписей.СчётКт.Код + " = " + НаборЗаписей.Сумма);

КонецЦикла;

Способы выборки проводок

Запрос с отбором по Регистратору

Быстро, гибкий состав полей, подходит для отчётов и СКД. Требует аккуратности с виртуальными таблицами.

ВыбратьПоРегистратору

Простой код для разовой обработки. Медленнее, выбирает все поля записи.

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

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

Отчёты (ОСВ, анализ проводок)

Готовая аналитика по счетам. Отбор по конкретному документу настраивается не во всех отчётах.

Выбор проводок через набор записей документа

Если вы работаете с объектом документа программно, его движения доступны через коллекцию Движения. Это удобно в обработчиках проведения и при отладке: наборы записей уже связаны с документом и читаются без запроса.

ДокументОбъект = СсылкаНаДокумент.ПолучитьОбъект();

ДвиженияХозрасчётный = ДокументОбъект.Движения.Хозрасчётный;

ДвиженияХозрасчётный.Прочитать();

Для Каждого Проводка Из ДвиженияХозрасчётный Цикл

Сообщить(Строка(Проводка.СчётДт) + " / " + Строка(Проводка.СчётКт));

КонецЦикла;

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

Типичные ошибки при выборке проводок

Первая группа ошибок связана с параметром отбора. Если передать в параметр не ссылку, а строку с представлением документа или его номер, запрос вернёт пустой результат либо ошибку несоответствия типов. Всегда передавайте именно ссылку, полученную, например, через Документы.РеализацияТоваровУслуг.НайтиПоНомеру() с проверкой на пустую ссылку.

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

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

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

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

Дополнительно проверьте итоги по счёту через ОСВ: сальдо и обороты по документу в аналитике должны совпадать с суммой выбранных проводок. Если запрос возвращает дубли строк, проверьте, не используете ли вы соединение с таблицей субконто или виртуальной таблицей без корректных условий — это типичный источник задвоений.

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

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

Количество строк выборки
Норма

Совпадает с числом записей в «Движения документа»

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

Строк меньше или больше — проверяйте отбор и регистры

Суммы по проводкам
Норма

Итог совпадает с данными ОСВ по документу

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

Расхождение сумм — возможны дубли или неполный отбор

Состав счетов
Норма

Счета Дт/Кт соответствуют ожидаемой схеме проводок

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

Лишние или отсутствующие корреспонденции

Ограничения и нюансы

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

При больших объёмах избегайте выборки проводок «по всем документам за период» через цикл с запросом внутри — это резко снижает производительность. Правильнее один запрос к регистру с условием по периоду и группировкой по регистратору. Для отчётов предпочтительна СКД с набором данных по регистру бухгалтерии.

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

Почему запрос по регистратору возвращает пустой результат?

Чаще всего документ не проведён, помечен на удаление или в параметр передана не ссылка, а строка или номер. Также проверьте, что вы обращаетесь к тому регистру, в котором документ реально делает движения — список виден в окне «Движения документа».

Как выбрать проводки сразу нескольких документов?

Передайте в параметр массив или список ссылок и используйте условие «Регистратор В (&СписокДокументов)». Для больших списков эффективнее поместить ссылки во временную таблицу и соединить её с таблицей регистра.

Можно ли выбрать проводки по номеру документа?

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

Чем отличаются движения документа от проводок?

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

Как получить субконто проводки в запросе?

Используйте поля СубконтоДт1–СубконтоДт3 и СубконтоКт1–СубконтоКт3 (нумерация зависит от максимального числа субконто в плане счетов) либо обращайтесь к субконто через точку с указанием вида, если запрос строится в консоли с автоподстановкой.

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

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

Итог

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

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