Подготовка к аттестации 1С:Специалист по платформе 1С 8.3: как вывести на форму список задач конкретного бизнес-процесса

В платформе «1С:Предприятие» бизнес-процесс и задача – это разные объекты метаданных, хоть они и связаны друг с другом. Поэтому может возникнуть потребность отображать на одной форме и бизнес-процесс, и задачи по этому бизнес-процессу. Решить эту задачу можно несколькими способами в зависимости от дополнительных требований заказчика. Но в любом случае на экзамене это нужно реализовать как можно оперативнее, поскольку задача достаточно простая.

Аттестационная задача может быть сформулирована следующим образом:

На форме бизнес-процесса нужно вывести список задач, подчиненных текущему бизнес-процессу.

Далее рассмотрим два варианта решения задачи – с использованием динамического списка и с переходом к связанной информации из формы бизнес-процесса.

Как отобразить список задач при помощи динамического списка?

Первым делом выясним, как связаны между собой объекты метаданных Задача и БизнесПроцесс. Для этого в конфигураторе обратимся к списку стандартных реквизитов для задачи. Это можно сделать из контекстного меню или из окна редактирования объекта конфигурации ЗадачиИсполнителям:

Стандартный реквизит «БизнесПроцесс» объекта метаданных Задача

Рисунок 1 – Стандартный реквизит «БизнесПроцесс» объекта метаданных Задача

В этом списке присутствует стандартный реквизит БизнесПроцесс. Именно при помощи этого реквизита можно получить бизнес-процесс, к которому относится конкретная задача.

Следовательно, чтобы решить поставленную задачу и получить список задач, подчиненных определенному бизнес-процессу, нужно отобрать данные по полю БизнесПроцесс. Затем полученные данные необходимо вывести на форму.

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

Создадим реквизит формы бизнес-процесса СписокЗадач (тип – Динамический список):

Создание динамического списка

Рисунок 2 – Создание динамического списка

Получаемые данные необходимо отбирать по конкретному бизнес-процессу, поэтому в тексте запроса воспользуемся секцией ГДЕ. Чтобы текст запроса динамического списка можно было редактировать вручную, для свойства созданного реквизита Произвольный запрос установим галочку:

Свойство «ПроизвольныйЗапрос» реквизита «СписокЗадач»

Рисунок 3 – Свойство «ПроизвольныйЗапрос» реквизита «СписокЗадач»

При помощи конструктора запроса создадим следующий текст запроса динамического списка:

ВЫБРАТЬ ЗадачаЗадачиИсполнителям.Ссылка, ЗадачаЗадачиИсполнителям.Номер, ЗадачаЗадачиИсполнителям.Дата, ЗадачаЗадачиИсполнителям.БизнесПроцесс, ЗадачаЗадачиИсполнителям.ТочкаМаршрута, ЗадачаЗадачиИсполнителям.Наименование, ЗадачаЗадачиИсполнителям.Выполнена, ЗадачаЗадачиИсполнителям.Исполнитель, ЗадачаЗадачиИсполнителям.Подразделение, ЗадачаЗадачиИсполнителям.Должность ИЗ Задача.ЗадачиИсполнителям КАК ЗадачаЗадачиИсполнителям ГДЕ ЗадачаЗадачиИсполнителям.БизнесПроцесс = &БизнесПроцесс

Таким образом будут получены все задачи по текущему бизнес-процессу. Параметр БизнесПроцесс нужно установить в программном коде. Устанавливать его будем в обработчиках двух событий: ПриСозданииНаСервере и ПослеЗаписиНаСервере. Это связано с тем, что при открытии формы нового, еще не записанного в базу бизнес-процесса, его ссылка пустая. После записи ссылка будет уже заполнена, и следует обновить значение параметра динамического списка.

В обработчиках событий ПриСозданииНаСервере и ПослеЗаписиНаСервере будет использоваться один и тот же программный код. Чтобы дважды не писать одинаковый фрагмент кода, вынесем его в отдельную процедуру УстановитьТекущийБизнесПроцесс.

Сформированный программный код выглядит следующим образом:

&НаСервере Процедура УстановитьТекущийБизнесПроцесс() СписокЗадач.Параметры.УстановитьЗначениеПараметра("БизнесПроцесс", Объект.Ссылка); КонецПроцедуры &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) УстановитьТекущийБизнесПроцесс(); КонецПроцедуры &НаСервере Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) УстановитьТекущийБизнесПроцесс(); КонецПроцедуры

Перенесем динамический список на форму и отобразим колонки списка.

Отображение списка на форме

Рисунок 4 – Отображение списка на форме

Откроем форму бизнес-процесса в пользовательском режиме:

Список задач текущего бизнес-процесса

Рисунок 5 – Список задач текущего бизнес-процесса

На форме отображаются задачи, подчиненные этому бизнес-процессу.

Как перейти к списку задач конкретного бизнес-процесса?

Теперь рассмотрим второй вариант решения задачи – с использованием штатных механизмов платформы. Они позволяют добавить в панель навигации формы бизнес-процесса ссылку для перехода к задачам, подчиненным текущему бизнес-процессу.

Для этого в конструкторе управляемой формы бизнес-процесса перейдем на закладку Командный интерфейс и в разделе Перейти включим видимость для Задач исполнителям:

Включение видимости команды «Задачи исполнителям» в панели навигации

Рисунок 6 – Включение видимости команды «Задачи исполнителям» в панели навигации

После таких настроек в пользовательском режиме на форме бизнес-процесса в панели навигации отображается гиперссылка для перехода к задачам по текущему бизнес-процессу:

Переход к задачам из формы бизнес-процесса

Рисунок 7 – Переход к задачам из формы бизнес-процесса

Таким образом, без написания программного кода можно получить список задач для конкретного бизнес-процесса.

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

Нужно больше материалов по подготовке к аттестации?

Cтатья подготовлена по материалам нового курса – Подготовка к аттестации 1С:Специалист по Платформе 1С:Предприятие 8.3 (2019).

Понравилось? Хотите больше?

Предложение актуально до вечера пятницы, 28 декабря!

2 комментариев для “Подготовка к аттестации 1С:Специалист по платформе 1С 8.3: как вывести на форму список задач конкретного бизнес-процесса

  1. Mr_SlavaN сказал:

    Добрый день! Хотелось бы уточнить по поводу следующей фразы из текста:
    “Устанавливать его будем в обработчиках двух событий: ПриСозданииНаСервере и ПослеЗаписиНаСервере. Это связано с тем, что при открытии формы нового, еще не записанного в базу бизнес-процесса, его ссылка пустая.”
    Если не ошибаюсь, обработчик ПриСозданииНаСервере вызывается всегда: и для уже существующего объекта, и для нового. Т.о. при открытии формы нового объекта вызов функции установки параметра дин.списка работать не будет или будет выдавать ошибку.
    В то же время имеется обработчик ПриЧтенииНаСервере, который отрабатывает ТОЛЬКО при открытии формы существующего объекта, и, мне кажется, было бы более логично вызывать установку параметра дин.списка из него.

    • Василий Ханевич сказал:

      Добрый день!
      Да, Вы правильно пишете – обработчик события ПриЧтенииНаСервере вызывается самым первым при открытии формы и не выполняется для новых, еще не записанных объектов.
      В тексте запроса динамического списка указан параметр, поэтому его обязательно нужно установить. В противном случае возникнет ошибка. Поэтому реализован именно обработчик события ПриСозданииНаСервере, который выполняется в том числе и для новых объектов. Если установку параметра выполнять в обработчике события ПриЧтенииНаСервере, то при открытии формы нового бизнес-процесса возникнет ошибка, т.к. параметр динамического списка не был установлен.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Мы используем файлы cookies, чтобы сделать сайт удобнее.
Продолжая просмотр сайта, Вы соглашаетесь с их использованием.
Подробнее