БизнесПроцессВыборка.<Имя бизнес-процесса>.Стартован

Свойства · Started

Тип: Булево. Содержит признак старта бизнес-процесса. Истина - стартован.

Полное описание, параметры и ограничения

БизнесПроцессВыборка.<Имя бизнес-процесса>.Стартован (BusinessProcessSelection.<Business process name>.Started)

БизнесПроцессВыборка.<Имя бизнес-процесса> (BusinessProcessSelection.<Business process name>)

Стартован (Started)

Доступен, начиная с версии 8.0.

Использование:
Только чтение.
Описание:
Тип: Булево.
Содержит признак старта бизнес-процесса.
Истина - стартован.
Доступность:

Сервер, толстый клиент, внешнее соединение.

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Обойти собственную выборку бизнес-процессов и получить объекты текущих строк

Три реальные собственные записи в отменяемой транзакции: отбор пары, индексированный порядок, позиционирование Следующий, readonly-паспорт текущей строки и незаписанное изменение полученного объекта.

Где и как запускать

Полный серверный общий модуль УчебныйЦикл85, собственный пустой стенд УчебныеВыборкиМаршрута85; отдельный управляемый клиентский модуль вызова.

Подготовка

  1. Новая пустая конфигурация УчебныеВыборкиМаршрута85 на платформе8.5.1.1343, управляемое приложение и толстый клиент Windows. Рабочие конфигурации и чужие записи не используются.

  2. Один пользователь и один сеанс стенда, без фоновых заданий/обмена. Это учебный обход своих данных, не конкурентная массовая обработка production.

  3. УчебнаяЗадача85: номер Строка9 с автонумерацией, Наименование100. УчебныйПроцесс85: номер Строка9 с автонумерацией, Задача=УчебнаяЗадача85; карта Старт → Опыт85 → Финиш без адресации/вложенных точек.

  4. У обоих видов Маркер85 Строка36 и КодПорядка85 Строка50, Индексирование=Индексировать; Текст85 Строка100. Нет обязательного заполнения этих реквизитов.

  5. Модули объектов, менеджеров и точки пустые, нет ПередЗаписью с запретом из урока форм, ПриКопировании, подписок и внешних действий. Выборка изучается на действительно записанных своих данных.

  6. Общие → Общие модули → УчебныйЦикл85: Сервер и ВызовСервера Истина, Глобальный/Привилегированный Ложь; остальные флаги и повторное использование выключены. Вставьте основной модуль одного урока целиком.

  7. Обработки → Запуск85 → управляемая форма Форма: ПодтверждаюПустойСтенд85 и Занято85 Булево исходно Ложь; Итог85 Строка неограниченной длины только для просмотра.

  8. Отдельный полный модуль формы из дополнительного блока: команда ВыполнитьПример85 назначена кнопке, Действие=ВыполнитьСвойЦикл85. Процедура ВыполнитьСвойЦикл85 вызывает серверный УчебныйЦикл85.ВыполнитьПример85.

  9. F7 и обновление только своего стенда. runtimeVerifiedScenarios=0: 1С, запись/обход/получение объектов/откат здесь не выполнялись.

  10. Перед опытом исследуемый вид пуст. Код создаёт3 разных незанятых своих ссылочных идентичности и3 реальные записи внутри своей транзакции.

  11. Первая и вторая записи имеют общий свой маркер и даты10:00/11:00, контрольная другой маркер и10:30. Все даты строго внутри9:00–12:00, поэтому контрольную исключает именно отбор, не граница периода.

  12. Отбор состоит ровно из одного Маркер85, порядок по индексированному КодПорядка85 Возр. У задач и процессов разная позиция параметров Выбрать; скопируйте целиком свой вариант.

  13. Будущий ручной опыт после согласия проверяет2 свои текущие строки, реальные объекты и сохранённые поля, затем откатывает все3 записи. Полученные объекты не возвращаются в клиентскую форму.

  14. Не добавляйте ЗафиксироватьТранзакцию, удаление, модальные окна, старт процесса или выполнение задачи. Учебный модуль возвращает только текст результата.

Функция ВыполнитьПример85(Согласие) Экспорт
    Если Не Согласие Тогда
        ВызватьИсключение "Только собственный новый пустой стенд УчебныеВыборкиМаршрута85 с согласием";
    КонецЕсли;
    Если ТранзакцияАктивна() Тогда
        ВызватьИсключение "Платформа8.5.1.1343 обязательна; чужая транзакция не допускается";
    КонецЕсли;
    ВыборкаДо = БизнесПроцессы.УчебныйПроцесс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 = "Первая сохранённая строка";
        Вторая = БизнесПроцессы.УчебныйПроцесс85.СоздатьБизнесПроцесс();
        Вторая.УстановитьСсылкуНового(СсылкаВторой);
        Вторая.Дата = Дата(2026, 10, 9, 11, 0, 0);
        Вторая.Маркер85 = Маркер;
        Вторая.КодПорядка85 = Маркер + "-2";
        Вторая.Текст85 = "Вторая сохранённая строка";
        Контрольная = БизнесПроцессы.УчебныйПроцесс85.СоздатьБизнесПроцесс();
        Контрольная.УстановитьСсылкуНового(СсылкаКонтрольной);
        Контрольная.Дата = Дата(2026, 10, 9, 10, 30, 0);
        Контрольная.Маркер85 = КонтрольныйМаркер;
        Контрольная.КодПорядка85 = Маркер + "-control";
        Контрольная.Текст85 = "Эта строка не входит в свой отбор";
        Первая.Записать();
        Вторая.Записать();
        Контрольная.Записать();
        Отбор = Новый Структура("Маркер85", Маркер);
        Выборка = БизнесПроцессы.УчебныйПроцесс85.Выбрать(НачалоПериода, КонецПериода, Отбор, "КодПорядка85 Возр");
        Если ТипЗнч(Выборка) <> Тип("БизнесПроцессВыборка.УчебныйПроцесс85") Тогда
            ВызватьИсключение "Нужна настоящая специализированная выборка собственного вида";
        КонецЕсли;
        ЧислоСтрок = 0;
        ПроверенаПервая = Ложь;
        ПроверенаВторая = Ложь;
        Пока Выборка.Следующий() Цикл
            ЧислоСтрок = ЧислоСтрок + 1;
            Паспорт = Новый Структура;
            Паспорт.Вставить("ВедущаяЗадача", Выборка.ВедущаяЗадача);
            Паспорт.Вставить("ВерсияДанных", Выборка.ВерсияДанных);
            Паспорт.Вставить("Дата", Выборка.Дата);
            Паспорт.Вставить("Завершен", Выборка.Завершен);
            Паспорт.Вставить("Номер", Выборка.Номер);
            Паспорт.Вставить("ПометкаУдаления", Выборка.ПометкаУдаления);
            Паспорт.Вставить("Ссылка", Выборка.Ссылка);
            Паспорт.Вставить("Стартован", Выборка.Стартован);
            Если Паспорт.Ссылка = СсылкаПервой И Не ПроверенаПервая Тогда
                ПроверенаПервая = Истина;
                ОжидаемыйТекст = Первая.Текст85;
                ОжидаемаяДата = Первая.Дата;
                Если ЧислоСтрок <> 1 Тогда
                    ВызватьИсключение "Индексированный порядок не вернул первую запись первой";
                КонецЕсли;
            ИначеЕсли Паспорт.Ссылка = СсылкаВторой И Не ПроверенаВторая Тогда
                ПроверенаВторая = Истина;
                ОжидаемыйТекст = Вторая.Текст85;
                ОжидаемаяДата = Вторая.Дата;
                Если ЧислоСтрок <> 2 Тогда
                    ВызватьИсключение "Индексированный порядок не вернул вторую запись второй";
                КонецЕсли;
            Иначе
                ВызватьИсключение "Повторная, контрольная или неизвестная ссылка в своём отборе";
            КонецЕсли;
            Если Выборка.Маркер85 <> Маркер Или Паспорт.Дата <> ОжидаемаяДата Или Паспорт.ПометкаУдаления Тогда
                ВызватьИсключение "Текущая строка не соответствует своей ожидаемой записи";
            КонецЕсли;
            ОбъектСтроки = Выборка.ПолучитьОбъект();
            Если ОбъектСтроки = Неопределено Тогда
                ВызватьИсключение "Текущая собственная запись исчезла; объекта нет";
            КонецЕсли;
            Если ТипЗнч(ОбъектСтроки) <> Тип("БизнесПроцессОбъект.УчебныйПроцесс85")
                Или ОбъектСтроки.Ссылка <> Паспорт.Ссылка Или ОбъектСтроки.Маркер85 <> Маркер
                Или ОбъектСтроки.Текст85 <> ОжидаемыйТекст Или ОбъектСтроки.ЭтоНовый() Тогда
                ВызватьИсключение "Получен не существующий собственный объект текущей строки";
            КонецЕсли;
            Если ТипЗнч(Паспорт.Номер) <> Тип("Строка") Или Паспорт.Номер = "" Или Паспорт.Номер <> ОбъектСтроки.Номер Тогда
                ВызватьИсключение "Номер текущей строки не совпал с реальным номером своего объекта";
            КонецЕсли;
            Если ТипЗнч(Паспорт.ВерсияДанных) <> Тип("Строка") Или Паспорт.ВерсияДанных <> ОбъектСтроки.ВерсияДанных Тогда
                ВызватьИсключение "Непрозрачная версия текущей строки не совпала с полученным объектом";
            КонецЕсли;
            Если Паспорт.Стартован Или Паспорт.Завершен Или Не Паспорт.ВедущаяЗадача.Пустая() Тогда
                ВызватьИсключение "Собственный невложенный процесс должен быть неисполненным";
            КонецЕсли;
            Если Паспорт.ВедущаяЗадача <> ОбъектСтроки.ВедущаяЗадача Тогда
                ВызватьИсключение "Выборка и полученный объект имеют разные реальные ведущие задачи";
            КонецЕсли;
            ОбъектСтроки.Текст85 = "Изменено только в памяти";
            ПовторноИзБазы = Паспорт.Ссылка.ПолучитьОбъект();
            Если ПовторноИзБазы = Неопределено Тогда
                ВызватьИсключение "Собственный оригинал исчез до проверки изменений в памяти";
            КонецЕсли;
            Если ПовторноИзБазы.Текст85 <> ОжидаемыйТекст Или ПовторноИзБазы.Маркер85 <> Маркер Тогда
                ВызватьИсключение "Изменение незаписанного объекта затронуло исходные данные";
            КонецЕсли;
        КонецЦикла;
        Если ЧислоСтрок <> 2 Или Не ПроверенаПервая Или Не ПроверенаВторая Тогда
            ВызватьИсключение "Собственная выборка не обошла ожидаемую пару";
        КонецЕсли;
        ОтсутствующийМаркер = Строка(Новый УникальныйИдентификатор);
        Если ОтсутствующийМаркер = Маркер Или ОтсутствующийМаркер = КонтрольныйМаркер Тогда
            ВызватьИсключение "Отрицательный тестовый маркер должен отличаться от всех сохранённых своих маркеров";
        КонецЕсли;
        ПустойОтбор = Новый Структура("Маркер85", ОтсутствующийМаркер);
        ПустаяВыборка = БизнесПроцессы.УчебныйПроцесс85.Выбрать(НачалоПериода, КонецПериода, ПустойОтбор, "КодПорядка85 Возр");
        Если ПустаяВыборка.Следующий() Тогда
            ВызватьИсключение "Несуществующий собственный отбор должен быть пустым";
        КонецЕсли;
        ОтменитьТранзакцию();
    Исключение
        Если ТранзакцияАктивна() Тогда
            ОтменитьТранзакцию();
        КонецЕсли;
        ВызватьИсключение;
    КонецПопытки;
    Если ТранзакцияАктивна() Или СсылкаПервой.ПолучитьОбъект() <> Неопределено
        Или СсылкаВторой.ПолучитьОбъект() <> Неопределено Или СсылкаКонтрольной.ПолучитьОбъект() <> Неопределено Тогда
        ВызватьИсключение "Собственные записи остались после отката";
    КонецЕсли;
    Возврат "Выборка прочитала2 свои строки в заданном порядке; контрольная запись исключена. Получены реальные объекты текущих строк, их изменения в памяти не сохранены. Пустой отбор не имеет текущей строки. Все3 собственные записи отменены.";
КонецФункции
Управляемый запуск выборки УчебныйПроцесс85

УчебныеВыборкиМаршрута85 → Обработки → Запуск85 → Формы → Форма → Модуль

Полный модуль своей управляемой формы; команда ВыполнитьПример85 имеет Действие=ВыполнитьСвойЦикл85, серверный вызов УчебныйЦикл85.ВыполнитьПример85.

&НаКлиенте
Процедура ВыполнитьСвойЦикл85(Команда)
    Если Не ПодтверждаюПустойСтенд85 Или Занято85 Тогда
        ВызватьИсключение "Нужно собственное подтверждение и отсутствие другого опыта";
    КонецЕсли;
    Занято85 = Истина;
    Попытка
        Итог85 = УчебныйЦикл85.ВыполнитьПример85(ПодтверждаюПустойСтенд85);
    Исключение
        Занято85 = Ложь;
        Итог85 = ОписаниеОшибки();
        ВызватьИсключение;
    КонецПопытки;
    Занято85 = Ложь;
КонецПроцедуры

Разбор по шагам

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

  2. Настоящие менеджеры создают3 объекта; даты, маркеры, код порядка и текст заданы явно. Контрольная запись существует в том же периоде, но имеет другой маркер.

  3. Выбрать возвращает настоящий специализированный тип. До первого успешного Следующий поля и ПолучитьОбъект не читаются.

  4. Пока Следующий возвращает Истина, в паспорт читаются все readonly-поля текущей строки. Ссылки, порядок, дата, маркер и отсутствие повторов сверяются с собственной парой.

  5. ПолучитьОбъект вызывается только на текущей строке; Неопределено проверяется до обращения. Тип, идентичность, номер, версия и содержание сверяются с этой строкой.

  6. У невложенного процесса проверяются неисполненные Стартован/Завершен и пустая ВедущаяЗадача, совпадающая с фактическим объектом.

  7. Текст полученного объекта изменяется только в памяти. Повторное получение по собственной ссылке подтверждает исходный сохранённый текст; Записать внутри обхода нет.

  8. После Ложь обход закончен; поля больше не читаются. Пустая новая выборка проверяется только через Следующий=Ложь, без обращения к несуществующей текущей строке.

  9. При успехе и исключении своя транзакция откатывается. После опыта подтверждается отсутствие всей3 собственной тройки и клиенту возвращается только текст.

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

  1. Полученный тип — собственная ЗадачаВыборка или БизнесПроцессВыборка, не массив и не ТаблицаЗначений.

  2. В обход попали ровно2 свои разные записи в индексированном порядке; контрольная с другим маркером исключена.

  3. Все17 readonly-полей двух вариантов реально читаются после успешного позиционирования и используются в проверках паспорта/объекта.

  4. ПолучитьОбъект возвращает существующий объект текущей строки своего вида; Неопределено обработано до доступа к полям.

  5. Изменение его Текст85 в памяти не изменило исходный сохранённый текст, поскольку Записать не вызывается.

  6. Пустой отбор даёт Следующий=Ложь, чтения текущих полей нет. После отката не осталось ни одной из3 собственных записей.

Ожидаемый результат

При будущем ручном запуске специализированный курсор обошёл только собственную пару, подтвердил текущие поля/объекты и завершил обход; все3 учебные записи отменены.

На что обратить внимание

  1. Выборка — динамический курсор базы, не сохранённый массив всех записей и не гарантированный неизменный снимок. Система выбирает данные порциями.

  2. Следующий позиционирует на первую и последующие строки. До первой Истина и после Ложь нет подтверждённой текущей строки для чтения или ПолучитьОбъект.

  3. У выборки нет использованного здесь Сбросить или произвольного индекса строки. Для нового обхода нужна новая выборка менеджера, не ручное присваивание полей.

  4. Все показанные поля выборки readonly. Изменения возможны через полученный объект и его Записать, но данный урок запись полученных объектов намеренно не делает.

  5. ПолучитьОбъект может вернуть Неопределено при отсутствии записи. Не выдавайте отсутствие объекта за пустую строку, новую задачу или успешное изменение.

  6. Номер может быть числом или строкой по метаданным. Только наш стенд задаёт Строка9; значение сравнивается с реально присвоенным номером объекта.

  7. ВерсияДанных — непрозрачная строка, не порядковый номер/дата. Читается фактическое значение, формат не разбирается и readonly-версия не присваивается.

  8. В установленной русской справке ЗадачаВыборка.ТочкаМаршрута объявлена как БизнесПроцессСсылка, хотя описание говорит о точке маршрута. Урок не исправляет исходную справку молча и не угадывает runtime-тип: проверяется пустота и равенство фактическому полю полученного объекта.

  9. Пустые связи отдельной задачи и невложенного процесса не равны точке Старт или выполненному workflow. Флаги исполнения только читаются.

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

  11. У задач порядок параметров Выбрать: Отбор, Порядок, Начало, Конец; у процессов: Начало, Конец, Отбор, Порядок. Одинаковое имя метода не означает одинаковый контракт.

  12. Границы периода не проверяются на спорном точном конце: все3 даты внутри. Контрольная исключается только другим маркером.

  13. Полученный объект — отдельное редактируемое значение в памяти. Само присваивание Текст85 без Записать не сохраняет базу; оригинал перечитывается отдельно.

  14. После отката паспорт/ссылки/объекты относятся к завершённому опыту, не к существующим бизнес-записям. Не передавайте их рабочему интерфейсу как сохранённые данные.

  15. Откат не отменяет произвольные внешние действия стороннего обработчика. Нужен собственный пустой стенд с пустыми модулями, не production.

  16. Все проверки статические, runtimeVerifiedScenarios=0. Нет реального запуска1С, изменения рабочей базы, сети, печати, файлов, архивов или новых резервных копий.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.