Документы и Печать · 9 мин
Как в 1С найти документ по номеру
Как найти документ в 1С по номеру: поиск в списке документов, полнотекстовый поиск, метод НайтиПоНомеру в коде, типичные ошибки и проверка результата.
Номер документа — основной идентификатор, который видит пользователь: он печатается на формах, указывается в переписке с контрагентами и фигурирует в претензиях. Поэтому задача «найти документ по номеру» возникает постоянно: бухгалтер ищет счёт-фактуру из выписки, менеджер — заказ по упоминанию клиента, разработчик — объект в коде обработки.
Способ поиска зависит от того, кто ищет и где. Пользователю в интерфейсе доступны поиск в списке документов, отбор и полнотекстовый поиск. Разработчику — методы встроенного языка: НайтиПоНомеру и запрос. У каждого способа есть ограничения: номер не уникален вне периода нумерации, префиксы влияют на сравнение, а поиск по части номера работает не везде.
Ниже разобраны оба сценария — для пользователя и для программиста, а также типичные причины, почему документ «не находится», хотя он существует.
Как устроена нумерация документов в 1С
Чтобы понимать логику поиска, важно знать три свойства номера. Во-первых, номер не является глобально уникальным: уникальность гарантируется только в пределах периода нумерации (обычно год, реже — месяц или вся база). Два документа «Реализация товаров и услуг» с номером 125 из разных лет — это нормальная ситуация.
Во-вторых, у номера есть префикс: организации, узла обмена или пользователя. Номер «ОРГ-000125» и «125» — формально разные строки, хотя пользователь воспринимает их как один номер. Во многих случаях поиск срабатывает и на часть номера без префикса, но в коде это нужно учитывать отдельно.
В-третьих, тип номера бывает числовым или строковым. В типовых конфигурациях чаще строковый с автоматическим дополнением нулями слева. Это влияет на сортировку и на то, как именно нужно передавать номер в методы поиска.
Поиск документа по номеру в интерфейсе пользователя
Самый быстрый способ — открыть список нужного вида документов (например, «Покупки — Счета-фактуры полученные») и ввести номер в строку поиска над таблицей. В управляемых формах поиск в списке идёт по основным полям, включая номер, и результат появляется сразу по мере ввода.
Если список большой или поиск по строке не даёт результата, используйте отбор: кнопка «Ещё — Настроить список» (или значок отбора), добавьте условие «Номер равно» и введите значение. Полезно сразу добавить условие по дате или периоду, если известен хотя бы год документа, — это сузит выборку и уберёт дубликаты номеров из других лет.
Полнотекстовый поиск по всей базе
Когда неизвестен вид документа — например, есть только номер из письма контрагента — помогает полнотекстовый поиск (лупа в правом верхнем углу окна или поле поиска в панели навигации). Он ищет строку по всем индексированным данным: номерам, комментариям, наименованиям. Ограничение: полнотекстовый индекс должен быть включён администратором и актуален, иначе свежие документы могут не находиться.
- 1Откройте список документов нужного вида через раздел учёта
- 2Введите номер в строку поиска над таблицей или откройте настройку отбора
- 3Добавьте условие по дате или периоду, если номер встречается в разных годах
- 4Откройте найденный документ и сверьте дату, организацию и сумму с исходными данными
Поиск документа по номеру в коде: НайтиПоНомеру
Во встроенном языке для поиска по номеру существует штатный метод менеджера документов — НайтиПоНомеру. Он принимает два параметра: номер (строка или число в зависимости от типа номера) и дату, определяющую период нумерации. Второй параметр обязателен именно потому, что номер уникален только внутри периода.
ДокументСсылка = Документы.РеализацияТоваровУслуг.НайтиПоНомеру("000000125", Дата(2026, 3, 15));
Если ДокументСсылка.Пустая() Тогда
Сообщить("Документ не найден");
Иначе
ДокументОбъект = ДокументСсылка.ПолучитьОбъект();
КонецЕсли;
Метод возвращает ссылку на документ. Если документ не найден, возвращается пустая ссылка — это нужно проверять до обращения к объекту, иначе получите ошибку или неочевидное поведение. Дату можно передавать любую в пределах нужного периода нумерации: скажем, при годовой нумерации подойдёт любое число нужного года.
СсылкаНаДокумент = Документы.СчетФактура.НайтиПоНомеру(НомерДокумента, НачалоГода(ДатаПоиска));
Если НЕ СсылкаНаДокумент.Пустая() Тогда
// документ найден
КонецЕсли;Поиск по части номера и несколько документов: запрос
Метод НайтиПоНомеру ищет точное совпадение и возвращает максимум один документ. Если нужно найти все документы, где номер содержит фрагмент, или выбрать документы за период с фильтром по номеру, используйте запрос с оператором ПОДОБНО.
ВЫБРАТЬ
Реализация.Ссылка,
Реализация.Номер,
Реализация.Дата
ИЗ
Документ.РеализацияТоваровУслуг КАК Реализация
ГДЕ
Реализация.Номер ПОДОБНО "%125%"
И Реализация.Дата МЕЖДУ &НачалоГода И &КонецГода
Учтите, что ПОДОБНО с маской в начале строки не использует индекс и на больших таблицах работает медленно. Для разового поиска это приемлемо, для регулярной обработки лучше сузить выборку периодом и другими условиями.
Способы поиска по номеру
Для пользователя в интерфейсе; не требует прав разработчика, но ищет только внутри одного вида документов
Когда вид документа неизвестен; требует включённого и обновлённого индекса
Точный поиск одной ссылки в коде; требует даты и точного номера с учётом формата
Поиск по фрагменту номера или выборка нескольких документов; медленнее на больших объёмах
Почему документ не находится: типичные причины
Чаще всего документ «не находится» из-за несовпадения периода: номер введён верно, но отбор или дата в методе указывают на другой год. Проверьте дату документа в первоисточнике — выписке, письме, печатной форме.
Вторая причина — префикс и лидирующие нули. Пользователь вводит «125», а в базе номер хранится как «ОРГ-000125». Строковый поиск в интерфейсе обычно справляется, а вот точный вызов НайтиПоНомеру — нет. Передавайте номер в том виде, в каком он хранится, или нормализуйте его перед поиском.
Третья группа причин — права и пометка удаления. Пользователь без прав на вид документа не увидит его в списке. Помеченный на удаление документ находится поиском, но может быть исключён из отборов и обработок. Также в распределённых базах документ мог ещё не прийти из другого узла обмена.
Как проверить, что найден именно тот документ
Один номер может встречаться у разных видов документов и в разных периодах, поэтому найденное всегда сверяйте по дополнительным реквизитам. Минимальный набор для сверки: вид документа, дата, организация, контрагент и сумма.
В коде после поиска проверяйте не только непустоту ссылки, но и ключевые реквизиты, если они известны заранее. Это защищает от ситуации, когда обработка молча обновила «чужой» документ с совпавшим номером из другого года.
Как проверить результат поиска
Совпадает с ожидаемым (например, счёт-фактура, а не накладная)
Найден документ другого вида с тем же номером
Дата попадает в ожидаемый год нумерации
Документ из другого года — номер совпал случайно
Совпадают с данными из первоисточника
Другая организация — вероятно, префикс сбил поиск
Совпадает с выпиской или письмом
Сумма иная — это не тот документ
Частые вопросы
Можно ли найти документ по номеру, не зная его даты?
В интерфейсе — да: строка поиска и полнотекстовый поиск не требуют даты. В коде метод НайтиПоНомеру требует дату, поэтому без неё используйте запрос с условием по номеру без ограничения периода, но будьте готовы к нескольким результатам из разных лет.
Почему НайтиПоНомеру возвращает пустую ссылку, хотя документ есть?
Обычно дело в формате номера (префикс, лидирующие нули, пробелы) или в неверной дате, указывающей на другой период нумерации. Скопируйте номер прямо из формы документа и передайте его без изменений.
Найдётся ли документ по части номера?
В списке документов и полнотекстовом поиске — обычно да, поиск идёт по подстроке. В коде — только через запрос с ПОДОБНО; НайтиПоНомеру работает строго на точное совпадение.
Может ли быть два документа с одинаковым номером?
Да, если они относятся к разным периодам нумерации, разным видам документов или разным префиксам. Поэтому номер нельзя использовать как единственный критерий идентификации без даты и вида документа.
Найдётся ли помеченный на удаление документ?
Да, поиск в списке и НайтиПоНомеру находят помеченные документы. Но многие отчёты и обработки их игнорируют, поэтому при расхождениях данных проверьте пометку удаления.
Что важно запомнить
Номер документа уникален только в пределах периода нумерации, поэтому поиск всегда ведите с учётом даты. Пользователю достаточно строки поиска или отбора в списке, разработчику — метода НайтиПоНомеру с точным номером или запроса с ПОДОБНО. Найденный документ проверяйте по дате, организации и сумме.