Осуществляет поиск бизнес-процесса по номеру.
Синтаксис
НайтиПоНомеру(<НомерБизнесПроцесса>)НайтиПоНомеру(<НомерБизнесПроцесса>, <ДатаИнтервала>)Полное описание, параметры и ограничения
БизнесПроцессМенеджер.<Имя бизнес-процесса>.НайтиПоНомеру (BusinessProcessManager.<Business process name>.FindByNumber)
БизнесПроцессМенеджер.<Имя бизнес-процесса> (BusinessProcessManager.<Business process name>)
НайтиПоНомеру (FindByNumber)
Доступен, начиная с версии 8.0.
Вариант синтаксиса: Для бизнес-процессов с непериодической нумерацией
Синтаксис:
НайтиПоНомеру(<НомерБизнесПроцесса>)
Параметры:
<НомерБизнесПроцесса> (обязательный)
Тип: Число, Строка.
Номер искомого документа. Тип передаваемого значения зависит от установки в конфигураторе представления номера бизнес-процесса.
Описание варианта метода:
Для бизнес-процессов со сквозной нумерацией.
Вариант синтаксиса: Для бизнес-процессов с нумерацией в пределах периода
Синтаксис:
НайтиПоНомеру(<НомерБизнесПроцесса>, <ДатаИнтервала>)
Параметры:
<НомерБизнесПроцесса> (обязательный)
Тип: Число, Строка.
Номер искомого бизнес-процесса. Тип передаваемого значения зависит от установки в конфигураторе представления номера бизнес-процесса.
<ДатаИнтервала> (обязательный)
Тип: Дата.
Дата из интервала, в котором проводится поиск по номеру. Сам интервал определяется как период уникальности номеров бизнес-процесса, в который входит указанная дата. Например, если номера бизнес-процессов уникальны в пределах месяца и задана дата 10 декабря 2001 года, то поиск будет проводиться в интервале с 01 по 31 декабря 2001 года.
Описание варианта метода:
Для бизнес-процессов с периодической нумерацией.
Возвращаемое значение:
Тип: БизнесПроцессСсылка.<Имя бизнес-процесса>, Неопределено.
Ссылка на найденный бизнес-процесс. Если бизнес-процесс не найден, возвращается пустая ссылка.
Если номер не задан (дина = 0), то будет возвращено Неопределено.
Описание:
Осуществляет поиск бизнес-процесса по номеру.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Найти свои процессы по реальным ключам и проверить состав выборки
Собственная пара УчебныйПроцесс85: реальные присвоенные номера, уникальные поисковые коды, индексированный отбор и выборка по смешанному источнику ссылок с последующим откатом.
Где и как запускать
Полный серверный общий модуль УчебныйЦикл85 нового стенда УчебныйПоискЗадач85; реальные собственные записи внутри одной отменяемой транзакции.
Подготовка
Создайте новую пустую конфигурацию УчебныйПоискЗадач85 на платформе8.5.1.1343, управляемое приложение и толстый клиент Windows. Рабочие базы и существующие задачи не используются.
Задачи → УчебнаяЗадача85: номер Строка9, автонумерация, Наименование100; Маркер85 Строка36, КодПоиска85 Строка50, без обязательного заполнения.
Бизнес-процессы → УчебныйПроцесс85: номер Строка9 с автонумерацией и непериодической, сквозной нумерацией; Маркер85 Строка36, КодПоиска85 Строка50. Задача=УчебнаяЗадача85.
У обоих видов реквизитов Маркер85 и КодПоиска85 установите Индексирование=Индексировать. Отбор использует ровно один Маркер85, порядок — реальный индексированный КодПоиска85.
Карта процесса: Старт → одиночное действие Опыт85 → Финиш, без адресации, обработчиков и вложенных процессов. Маршрут в коде не стартует; учебные задачи здесь отдельные записи.
Модули обоих объектов и точки маршрута пустые. Не копируйте запрет ПередЗаписью из урока просмотра; поиск изучается на реально записанной собственной паре внутри отменяемой транзакции.
Общие → Общие модули → УчебныйЦикл85: Сервер=Истина, ВызовСервера=Истина, Глобальный=Ложь, Привилегированный=Ложь; остальные флаги и повторное использование выключены. Вставьте полный основной код одного урока.
Для другого вида объекта замените целиком свой общий модуль, не склеивайте два ВыполнитьПример85. Имена относятся только к этому пустому стенду.
Обработки → ЗапускЦикла85 → управляемая форма Форма. ПодтверждаюПустойСтенд85 и Занято85 Булево, Итог85 Строка неограниченной длины; исходные флажки Ложь, занятость и итог только для просмотра.
Команда и кнопка ВыполнитьСвойЦикл85 с одноимённым действием. Полный модуль формы отдельно; сервер получает только согласие, не произвольный номер или рабочую ссылку.
Нажмите F7 и обновите только собственный стенд. runtimeVerifiedScenarios=0: 1С, запись, выборки, поиск и откат здесь не выполнялись.
Один пользователь и один клиент, нет фоновых заданий, других писателей, подписок и внешних действий. Перед опытом исследуемый вид объекта должен быть пустым.
Две реальные записи имеют общий собственный UUID-маркер, разные КодПоиска85 с суффиксами-1/-2 и даты10:00/11:00 внутри учебного периода09:00–12:00 9октября2026. Это данные опыта, не фильтр вашей рабочей базы.
Номера берутся из записанных объектов после автонумерации. Строки999999999/888888888 используются только как подтверждённо отсутствующий отрицательный тест, а не как идентификатор существующего объекта.
Массив источника ссылок намеренно содержит две реальные ссылки, одну строку неверного типа и одну непустую плановую ссылку, по которой объект не создавался.
Подтвердите пустой стенд и вручную запустите команду. Все поиски выполняются в одной собственной транзакции, которая отменяется как при успехе, так и при ошибке. После отката память объектов не переиспользуется.
Этот основной код исследует УчебныйПроцесс85; тип его нумерации и длины полей должны совпадать с подготовкой.
Функция ВыполнитьПример85(Согласие) Экспорт
Если Не Согласие Тогда
ВызватьИсключение "Только собственный новый пустой стенд УчебныйПоискЗадач85 с согласием";
КонецЕсли;
Если ТранзакцияАктивна() Тогда
ВызватьИсключение "Не используйте чужую транзакцию для учебного поиска";
КонецЕсли;
ВыборкаДо = БизнесПроцессы.УчебныйПроцесс85.Выбрать();
Если ВыборкаДо.Следующий() Тогда
ВызватьИсключение "Исследуемый учебный вид должен быть пустым";
КонецЕсли;
Маркер = Строка(Новый УникальныйИдентификатор);
СсылкаПервой = БизнесПроцессы.УчебныйПроцесс85.ПолучитьСсылку(Новый УникальныйИдентификатор);
СсылкаВторой = БизнесПроцессы.УчебныйПроцесс85.ПолучитьСсылку(Новый УникальныйИдентификатор);
ОтсутствующаяСсылка = БизнесПроцессы.УчебныйПроцесс85.ПолучитьСсылку(Новый УникальныйИдентификатор);
Если СсылкаПервой = СсылкаВторой Или СсылкаПервой = ОтсутствующаяСсылка Или СсылкаВторой = ОтсутствующаяСсылка Тогда
ВызватьИсключение "Собственные плановые ссылки должны различаться";
КонецЕсли;
Если СсылкаПервой.ПолучитьОбъект() <> Неопределено Или СсылкаВторой.ПолучитьОбъект() <> Неопределено
Или ОтсутствующаяСсылка.ПолучитьОбъект() <> Неопределено Тогда
ВызватьИсключение "Плановая ссылка уже занята; чужие записи не используются";
КонецЕсли;
НачалоПериода = Дата(2026, 10, 9, 9, 0, 0);
КонецПериода = Дата(2026, 10, 9, 12, 0, 0);
НачатьТранзакцию();
Попытка
Первая = БизнесПроцессы.УчебныйПроцесс85.СоздатьБизнесПроцесс();
Первая.УстановитьСсылкуНового(СсылкаПервой);
Первая.Дата = Дата(2026, 10, 9, 10, 0, 0);
Первая.Маркер85 = Маркер;
Первая.КодПоиска85 = Маркер + "-1";
Вторая = БизнесПроцессы.УчебныйПроцесс85.СоздатьБизнесПроцесс();
Вторая.УстановитьСсылкуНового(СсылкаВторой);
Вторая.Дата = Дата(2026, 10, 9, 11, 0, 0);
Вторая.Маркер85 = Маркер;
Вторая.КодПоиска85 = Маркер + "-2";
Первая.Записать();
Вторая.Записать();
Если Первая.Номер = "" Или Вторая.Номер = "" Или Первая.Номер = Вторая.Номер Тогда
ВызватьИсключение "Сначала нужны два реальных различных присвоенных номера";
КонецЕсли;
Если БизнесПроцессы.УчебныйПроцесс85.НайтиПоНомеру(Первая.Номер) <> СсылкаПервой Тогда
ВызватьИсключение "Поиск по реальному номеру не вернул первую собственную запись";
КонецЕсли;
Если БизнесПроцессы.УчебныйПроцесс85.НайтиПоНомеру("") <> Неопределено Тогда
ВызватьИсключение "Пустой номер должен дать Неопределено, не пустую ссылку";
КонецЕсли;
НомерОтсутствующей = "999999999";
Если НомерОтсутствующей = Первая.Номер Или НомерОтсутствующей = Вторая.Номер Тогда
НомерОтсутствующей = "888888888";
КонецЕсли;
Если НомерОтсутствующей = Первая.Номер Или НомерОтсутствующей = Вторая.Номер Тогда
ВызватьИсключение "Нет свободного отрицательного тестового номера; не угадываем идентичность";
КонецЕсли;
НеНайденная = БизнесПроцессы.УчебныйПроцесс85.НайтиПоНомеру(НомерОтсутствующей);
Если НеНайденная = Неопределено Тогда
ВызватьИсключение "Непустой отсутствующий номер не должен дать Неопределено";
КонецЕсли;
Если Не НеНайденная.Пустая() Тогда
ВызватьИсключение "Отсутствующий непустой номер должен дать пустую ссылку";
КонецЕсли;
Если БизнесПроцессы.УчебныйПроцесс85.НайтиПоРеквизиту("КодПоиска85", Первая.КодПоиска85) <> СсылкаПервой Тогда
ВызватьИсключение "Поиск по своему уникальному реквизиту не совпал";
КонецЕсли;
НеНайденнаяПоРеквизиту = БизнесПроцессы.УчебныйПроцесс85.НайтиПоРеквизиту("КодПоиска85", Маркер + "-missing");
Если Не НеНайденнаяПоРеквизиту.Пустая() Тогда
ВызватьИсключение "Несуществующий собственный код должен дать пустую ссылку";
КонецЕсли;
Отбор = Новый Структура("Маркер85", Маркер);
Выборка = БизнесПроцессы.УчебныйПроцесс85.Выбрать(НачалоПериода, КонецПериода, Отбор, "КодПоиска85 Возр");
ЧислоНайденных = 0;
Пока Выборка.Следующий() Цикл
ЧислоНайденных = ЧислоНайденных + 1;
Если Выборка.Маркер85 <> Маркер Или (Выборка.Ссылка <> СсылкаПервой И Выборка.Ссылка <> СсылкаВторой) Тогда
ВызватьИсключение "Выборка вышла за границы собственной пары";
КонецЕсли;
Если ЧислоНайденных = 1 И Выборка.Ссылка <> СсылкаПервой Тогда
ВызватьИсключение "Индексированный порядок собственного кода не вернул первую запись первой";
КонецЕсли;
КонецЦикла;
Если ЧислоНайденных <> 2 Тогда
ВызватьИсключение "Отбор по собственному маркеру должен вернуть два элемента";
КонецЕсли;
ИсточникСсылок = Новый Массив;
ИсточникСсылок.Добавить(СсылкаВторой);
ИсточникСсылок.Добавить("не ссылка на объект");
ИсточникСсылок.Добавить(ОтсутствующаяСсылка);
ИсточникСсылок.Добавить(СсылкаПервой);
ПоСсылкам = БизнесПроцессы.УчебныйПроцесс85.ВыбратьПоСсылкам(ИсточникСсылок);
ПроверенаПервая = Ложь;
ПроверенаВторая = Ложь;
Пока ПоСсылкам.Следующий() Цикл
Если ПоСсылкам.Маркер85 <> Маркер Тогда
ВызватьИсключение "Выборка ссылок вернула не собственный маркер";
КонецЕсли;
Если ПоСсылкам.Ссылка = СсылкаПервой И Не ПроверенаПервая Тогда
ПроверенаПервая = Истина;
ИначеЕсли ПоСсылкам.Ссылка = СсылкаВторой И Не ПроверенаВторая Тогда
ПроверенаВторая = Истина;
Иначе
ВызватьИсключение "Повторная или неизвестная ссылка в результатах";
КонецЕсли;
КонецЦикла;
Если Не ПроверенаПервая Или Не ПроверенаВторая Тогда
ВызватьИсключение "Результат по ссылкам не содержит обе свои реальные записи";
КонецЕсли;
ПустойИсточник = Новый Массив;
ПустаяВыборка = БизнесПроцессы.УчебныйПроцесс85.ВыбратьПоСсылкам(ПустойИсточник);
Если ПустаяВыборка.Следующий() Тогда
ВызватьИсключение "Пустой источник не должен выбирать существующие записи";
КонецЕсли;
ОтменитьТранзакцию();
Исключение
Если ТранзакцияАктивна() Тогда
ОтменитьТранзакцию();
КонецЕсли;
ВызватьИсключение;
КонецПопытки;
Если ТранзакцияАктивна() Или СсылкаПервой.ПолучитьОбъект() <> Неопределено
Или СсылкаВторой.ПолучитьОбъект() <> Неопределено Тогда
ВызватьИсключение "Собственная пара осталась после отката";
КонецЕсли;
Возврат "Поиск по реальным номерам/реквизитам и собственные выборки проверены. Пустая ссылка отличается от Неопределено. Неверный тип и отсутствующая ссылка отфильтрованы. Обе собственные записи отменены.";
КонецФункцииЗапускЦикла85
УчебныйПоискЗадач85 → Обработки → ЗапускЦикла85 → Формы → Форма → Модуль
Полный клиентский модуль управляемой формы собственного стенда, с согласием и серверным вызовом.
&НаКлиенте
Процедура ВыполнитьСвойЦикл85(Команда)
Если Не ПодтверждаюПустойСтенд85 Или Занято85 Тогда
ВызватьИсключение "Нужно собственное подтверждение и отсутствие другого опыта";
КонецЕсли;
Занято85 = Истина;
Попытка
Итог85 = УчебныйЦикл85.ВыполнитьПример85(ПодтверждаюПустойСтенд85);
Исключение
Занято85 = Ложь;
Итог85 = ОписаниеОшибки();
ВызватьИсключение;
КонецПопытки;
Занято85 = Ложь;
КонецПроцедурыРазбор по шагам
Проверяются версия, согласие, имя пустой конфигурации, отсутствие внешней транзакции и существующих записей исследуемого вида. Собственные плановые ссылки проверяются на отсутствие и различие.
Менеджер создаёт два реальных объекта с общим маркером и разными индексированными кодами/датами. В собственной транзакции они записываются и получают реальные разные номера.
НайтиПоНомеру получает присвоенный номер первого объекта и должен вернуть именно его ссылку. Пустой номер и непустой отсутствующий номер проверяются отдельно по разным контрактам результата.
НайтиПоРеквизиту используется по собственному уникальному КодПоиска85; отсутствие второго кода проверяется как пустая ссылка. Этот метод не выдаётся за поиск полного набора по общему маркеру.
Выбрать получает период, однопольный отбор и индексированный порядок в точном порядке параметров этого менеджера. Выборка должна вернуть две свои записи и первую с кодом-1 раньше кода-2.
ВыбратьПоСсылкам получает смешанный массив: две свои реальные ссылки, неверный тип и незаписанную ссылку. Проверяется только допустимый набор двух своих ссылок без предположения о порядке.
Пустой массив источника не должен вернуть существующие записи. Все найденные элементы проверяются по собственным ссылкам и маркеру, чужая запись не принимается.
Собственная транзакция отменяется в обоих путях. После её окончания первая и вторая запись отсутствуют по ссылкам; успешный результат не означает фиксацию бизнес-данных.
Как проверить результат
Реальный номер и собственный КодПоиска85 возвращают первую именно созданную уроком ссылку, а не любую найденную запись.
Пустой номер даёт Неопределено; непустой отсутствующий номер и реквизит — пустую ссылку. Для задачи аналогично проверено пустое точное имя.
Отбор по общему индексированному маркеру возвращает ровно две свои записи в порядке кодов-1/-2.
Выборка по смешанному источнику содержит ровно свою пару; строка неверного типа и незаписанная ссылка не становятся результатами. Пустой массив даёт пустую выборку.
После отката обе записи отсутствуют. Код не запускает маршрут, не выполняет задачу, не фиксирует транзакцию и не удаляет существующие рабочие данные.
Ожидаемый результат
При будущем собственном ручном запуске подтверждены реальные ключи поиска и точный состав собственных выборок, разные пустые результаты, а обе временные учебные записи отменены.
На что обратить внимание
У задачи Выбрать принимает Отбор, Порядок, ДатаНачала, ДатаОкончания; у процесса ДатаНачала, ДатаОкончания, Отбор, Порядок. Нельзя переносить порядок параметров по похожему имени метода.
Структура отбора должна содержать только один элемент. Сложные условия нескольких реквизитов требуют подходящего запроса, а не произвольного расширения этой структуры.
Пользовательские поля отбора и порядка должны быть индексированы. Здесь используются фиксированные строки Маркер85/КодПоиска85, не поле ХранилищеЗначения и не строка неограниченной длины.
НайтиПоРеквизиту возвращает только одну совпавшую запись, не полный набор. Для пары с общим маркером используется Выбрать; для единичного поиска — уникальный собственный КодПоиска85.
НайтиПоНомеру("") возвращает Неопределено. Непустой отсутствующий номер возвращает пустую ссылку; нельзя без проверки сразу вызывать Пустая у Неопределено.
Для периодической нумерации процесса нужен второй аргумент ДатаИнтервала. Здесь настройка непериодическая и применяется однопараметровый вариант по реальному номеру.
Точный поиск имени задачи исключает хвостовые пробелы из сравнения; неточный ищет левую часть. Здесь Истина и уникальные непустые имена, а пустое имя проверяется отдельно.
Если совпавших имён/реквизитов несколько, метод может вернуть только одну запись. Это не обоснование произвольно изменять первую найденную рабочую задачу.
ВыбратьПоСсылкам игнорирует значения неверного типа и ссылки на отсутствующие записи. Пустой результат не подтверждает, что весь переданный источник был корректным.
Порядок ВыбратьПоСсылкам не приравнивается к порядку массива входа. Код проверяет набор двух своих ссылок и дубликаты, а не индексы возвращаемой выборки.
Плановая непустая ссылка, созданная ПолучитьСсылку, не доказывает наличие объекта. Отсутствующая ссылка специально проверена до опыта и не записывается.
Это простой период, в котором обе собственные даты строго внутри границ. Урок не делает предположений о сложной бизнес-интерпретации начала/конца периода и чужих часовых поясах.
Своя транзакция только отменяется. Не откатывайте чужую; отмена записи базы не отменяет произвольные письмо, файл, печать или сеть из рабочих обработчиков, поэтому они должны отсутствовать.
Откат не возвращает экземпляр объекта языка в исходное состояние и не обещает повторное использование его номера. После опыта проверяется отсутствие по ссылкам и создаются новые экземпляры для нового запуска.
Серверный модуль и собственный стенд обязательны. Прямой доступ к этим объектам из тонкого клиентского обработчика и поиск в production этим примером не разрешаются.
Все учебные записи, поиск, выборки и транзакции здесь только написаны. В1С они не запускались, runtimeVerifiedScenarios=0; новые резервные копии и архивы не создавались.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.