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

Быстрый старт · 11 мин

Как найти последний документ в 1С

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

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

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

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

Что считать «последним» документом

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

На практике чаще всего требуется последний проведённый документ определённого вида, иногда — с отбором по организации, контрагенту или складу. Для регистров (например, остатков) «последний документ» обычно означает последний документ, сделавший движение, — это уже задача для запроса к регистру.

Как найти последний документ через журнал документов

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

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

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

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

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

Если нужен последний документ не вообще, а по конкретному условию — по контрагенту, организации, складу или ответственному, — используйте отбор. В управляемых формах нажмите «Ещё → Настроить список» и добавьте условие, например «Контрагент Равно ООО Ромашка». После применения отбора отсортируйте по дате — первая строка покажет последний документ по этому контрагенту.

Для поиска по номеру используйте строку поиска в списке (Ctrl+F или поле «Найти» над таблицей). Поиск по номеру полезен, когда известен фрагмент номера из бумажного документа. Помните, что номера могут содержать префиксы базы и буквенные части — ищите по значащей части.

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

Как найти последний документ через «Все функции» и стандартные отчёты

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

Для анализа последних документов по движениям удобны стандартные отчёты. Например, отчёт «Оборотно-сальдовая ведомость по счёту» с группировкой по субконто покажет документы-основания, а в карточке счёта видны последние проводки с ссылками на документы. Из отчёта можно перейти в сам документ и проверить его содержимое.

Как найти последний документ программно: запрос

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

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

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

"ВЫБРАТЬ ПЕРВЫЕ 1

| РеализацияТоваровУслуг.Ссылка КАК Документ,

| РеализацияТоваровУслуг.Дата КАК Дата,

| РеализацияТоваровУслуг.Номер КАК Номер

|ИЗ

| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг

|ГДЕ

| РеализацияТоваровУслуг.Проведен

| И РеализацияТоваровУслуг.Контрагент = &Контрагент

|

|УПОРЯДОЧИТЬ ПО

| Дата УБЫВ";

Запрос.УстановитьПараметр("Контрагент", Контрагент);

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

Если Результат.Следующий() Тогда

ПоследнийДокумент = Результат.Документ;

КонецЕсли;

Ключевые моменты этого кода: конструкция «ВЫБРАТЬ ПЕРВЫЕ 1» ограничивает выборку, «УПОРЯДОЧИТЬ ПО Дата УБЫВ» ставит самый поздний документ первым, а условие «Проведен» отсекает непроведённые и помеченные на удаление документы. Если нужен последний документ независимо от проведения, условие уберите, но учтите, что помеченные на удаление тоже попадут в выборку — добавьте проверку «ПометкаУдаления = ЛОЖЬ».

Для строгого упорядочивания при совпадающих датах добавьте в сортировку ссылку: «УПОРЯДОЧИТЬ ПО Дата УБЫВ, Ссылка УБЫВ». Это гарантирует детерминированный результат, когда несколько документов имеют одинаковое время.

bsl
// Последний проведённый документ по контрагенту
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 Ссылка ИЗ Документ.РеализацияТоваровУслуг ГДЕ Проведен И Контрагент = &Контрагент УПОРЯДОЧИТЬ ПО Дата УБЫВ, Ссылка УБЫВ";

Альтернативные программные способы

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

Для регистров сведений и накопления «последний документ» ищут через регистратор: например, последний документ, изменивший цены, — это запрос к регистру сведений «Цены номенклатуры» с группировкой по регистратору и максимумом периода. Такой подход точнее, чем поиск по журналу, когда важно не наличие документа, а факт его движений.

Сравнение способов

Сортировка журнала

Подходит пользователю без программирования; ограничение — только один вид документов и ручная проверка

Отбор в списке

Нужен последний документ по условию (контрагент, организация); требует аккуратной настройки условий

Запрос ВЫБРАТЬ ПЕРВЫЕ 1

Для кода, обработок и отчётов; самый быстрый на больших объёмах, но требует навыков разработки

Выборка через Выбрать()

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

Частые ошибки и ограничения

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

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

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

Типичные ошибки
01
Искать последний документ по максимальному номеру — номер не отражает дату, документ может быть введён задним числом
02
Не отфильтровать помеченные на удаление — в результат попадает удалённый документ, который нельзя использовать
03
Игнорировать совпадение дат у нескольких документов — результат запроса может меняться от вызова к вызову без сортировки по ссылке
04
Проверять под пользователем с ограниченными правами — часть документов скрыта RLS, и «последний» окажется неверным

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

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

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

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

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

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

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

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

Есть документы с более поздней датой, не попавшие в результат

Состояние проведения
Норма

Документ проведён, движения присутствуют

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

Документ не проведён или помечен на удаление

Отбор по условиям
Норма

Контрагент, организация и прочие условия совпадают с заданными

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

Документ относится к другой организации или контрагенту

FAQ: частые вопросы о поиске последнего документа

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

Потому что у нескольких документов время может совпадать до секунды, особенно после обменов и загрузок. Для однозначности добавьте сортировку по номеру или по ссылке — в запросе это «УПОРЯДОЧИТЬ ПО Дата УБЫВ, Ссылка УБЫВ».

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

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

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

Штатного единого списка по всем видам нет, но есть журналы, объединяющие несколько видов (например, «Складские документы», «Документы по контрагенту»). Для произвольного набора видов потребуется запрос с объединением таблиц или универсальный отчёт.

Что делать, если последний документ не открывается из-за ошибки прав?

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

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

Используйте агрегатную функцию: «ВЫБРАТЬ МАКСИМУМ(Дата) ИЗ Документ.РеализацияТоваровУслуг ГДЕ Проведен». Это быстрее, чем выборка ссылки, если сам документ не нужен.

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

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

Итог

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

Пользователю достаточно журнала документов: сортировка по дате по убыванию показывает последний документ первой строкой, отборы сужают поиск по условиям. В коде используйте запрос «ВЫБРАТЬ ПЕРВЫЕ 1 ... УПОРЯДОЧИТЬ ПО Дата УБЫВ» с условиями на проведение и пометку удаления. Всегда уточняйте, что считать «последним»: дату, номер или факт движений по регистру.