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

Документы и Печать · 9 мин

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

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

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

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

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

Как устроена нумерация документов в 1С

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

Во-вторых, у номера есть префикс: организации, узла обмена или пользователя. Номер «ОРГ-000125» и «125» — формально разные строки, хотя пользователь воспринимает их как один номер. Во многих случаях поиск срабатывает и на часть номера без префикса, но в коде это нужно учитывать отдельно.

В-третьих, тип номера бывает числовым или строковым. В типовых конфигурациях чаще строковый с автоматическим дополнением нулями слева. Это влияет на сортировку и на то, как именно нужно передавать номер в методы поиска.

Поиск документа по номеру в интерфейсе пользователя

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

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

Полнотекстовый поиск по всей базе

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

Поиск в списке документов
  1. 1
    Откройте список документов нужного вида через раздел учёта
  2. 2
    Введите номер в строку поиска над таблицей или откройте настройку отбора
  3. 3
    Добавьте условие по дате или периоду, если номер встречается в разных годах
  4. 4
    Откройте найденный документ и сверьте дату, организацию и сумму с исходными данными

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

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

ДокументСсылка = Документы.РеализацияТоваровУслуг.НайтиПоНомеру("000000125", Дата(2026, 3, 15));

Если ДокументСсылка.Пустая() Тогда

Сообщить("Документ не найден");

Иначе

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

КонецЕсли;

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

bsl
СсылкаНаДокумент = Документы.СчетФактура.НайтиПоНомеру(НомерДокумента, НачалоГода(ДатаПоиска));
Если НЕ СсылкаНаДокумент.Пустая() Тогда
    // документ найден
КонецЕсли;

Поиск по части номера и несколько документов: запрос

Метод НайтиПоНомеру ищет точное совпадение и возвращает максимум один документ. Если нужно найти все документы, где номер содержит фрагмент, или выбрать документы за период с фильтром по номеру, используйте запрос с оператором ПОДОБНО.

ВЫБРАТЬ

Реализация.Ссылка,

Реализация.Номер,

Реализация.Дата

ИЗ

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

ГДЕ

Реализация.Номер ПОДОБНО "%125%"

И Реализация.Дата МЕЖДУ &НачалоГода И &КонецГода

Учтите, что ПОДОБНО с маской в начале строки не использует индекс и на больших таблицах работает медленно. Для разового поиска это приемлемо, для регулярной обработки лучше сузить выборку периодом и другими условиями.

Способы поиска по номеру

Поиск в списке / отбор

Для пользователя в интерфейсе; не требует прав разработчика, но ищет только внутри одного вида документов

Полнотекстовый поиск

Когда вид документа неизвестен; требует включённого и обновлённого индекса

НайтиПоНомеру

Точный поиск одной ссылки в коде; требует даты и точного номера с учётом формата

Запрос с ПОДОБНО

Поиск по фрагменту номера или выборка нескольких документов; медленнее на больших объёмах

Почему документ не находится: типичные причины

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

Вторая причина — префикс и лидирующие нули. Пользователь вводит «125», а в базе номер хранится как «ОРГ-000125». Строковый поиск в интерфейсе обычно справляется, а вот точный вызов НайтиПоНомеру — нет. Передавайте номер в том виде, в каком он хранится, или нормализуйте его перед поиском.

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

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

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

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

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

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

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

Вид документа
Норма

Совпадает с ожидаемым (например, счёт-фактура, а не накладная)

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

Найден документ другого вида с тем же номером

Дата и период
Норма

Дата попадает в ожидаемый год нумерации

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

Документ из другого года — номер совпал случайно

Организация и контрагент
Норма

Совпадают с данными из первоисточника

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

Другая организация — вероятно, префикс сбил поиск

Сумма документа
Норма

Совпадает с выпиской или письмом

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

Сумма иная — это не тот документ

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

Можно ли найти документ по номеру, не зная его даты?

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

Почему НайтиПоНомеру возвращает пустую ссылку, хотя документ есть?

Обычно дело в формате номера (префикс, лидирующие нули, пробелы) или в неверной дате, указывающей на другой период нумерации. Скопируйте номер прямо из формы документа и передайте его без изменений.

Найдётся ли документ по части номера?

В списке документов и полнотекстовом поиске — обычно да, поиск идёт по подстроке. В коде — только через запрос с ПОДОБНО; НайтиПоНомеру работает строго на точное совпадение.

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

Да, если они относятся к разным периодам нумерации, разным видам документов или разным префиксам. Поэтому номер нельзя использовать как единственный критерий идентификации без даты и вида документа.

Найдётся ли помеченный на удаление документ?

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

Итог

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

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