Как связать задачи и бизнес-процессы в запросе 1С:Документооборот и добавить поле "БизнесПроцесс" в расширение?

Программист 1С v8.3 (Управляемые формы) 1С:Документооборот Управленческий учет IT и автоматизация бизнеса
← На главную

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

Основы связи "Задач" и "Бизнес-процессов" в типовой конфигурации

Давайте начнем с того, что объекты "Задача" в 1С:Документооборот являются неотъемлемой частью "Бизнес-процессов". Они не могут существовать сами по себе, а всегда генерируются в рамках какого-либо процесса. Бизнес-процесс — это предопределенная последовательность задач, выполняемых различными сотрудниками для достижения конкретного бизнес-результата. После завершения одной задачи система автоматически формирует следующую для участника процесса, основываясь на маршрутной карте.

В типовой конфигурации 1С:Документооборот связь между задачей и родительским бизнес-процессом реализуется через специальный реквизит самой задачи. Наиболее распространенное название этого реквизита — БизнесПроцесс. Этот реквизит содержит прямую ссылку на экземпляр соответствующего бизнес-процесса.

Для получения этой связи в запросе, мы можем использовать следующую конструкцию:


ВЫБРАТЬ
    Задачи.Ссылка,
    Задачи.БизнесПроцесс
ИЗ
    Задача.ЗадачаИсполнителя КАК Задачи
ГДЕ
    Задачи.БизнесПроцесс.Ссылка ЕСТЬ НЕ NULL

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

Проблема отсутствия поля "БизнесПроцесс" в расширении и ее причины

Теперь рассмотрим ситуацию, когда при работе с расширением вы обнаруживаете, что поле БизнесПроцесс, которое присутствует в типовой конфигурации, недоступно в вашем запросе. Мы выясним, почему это может происходить и как с этим справиться.

Существует несколько основных причин такого поведения:

  1. Ограничения расширений в ранних версиях платформы. В более старых версиях платформы 1С:Предприятие 8.3 функциональность расширений была существенно ограничена. Начиная с версии 8.3.25, возможности расширений значительно увеличились, позволив добавлять собственные дочерние объекты (реквизиты, табличные части) к заимствованным из основной конфигурации объектам, включая бизнес-процессы и задачи. Если вы работаете на более ранней версии, это может быть корнем проблемы.
  2. Некорректное заимствование объекта. Возможно, объект метаданных Задача (или конкретный вид задачи, с которым вы работаете) был заимствован в расширение не полностью или некорректно. При заимствовании объектов в расширение важно убедиться, что все необходимые поля, включая системные ссылки на родительские объекты, также становятся доступными для модификации или использования.
  3. Особенность метаданных. Название реквизита, связывающего задачу с процессом, может отличаться от БизнесПроцесс в зависимости от конкретного типа задачи или бизнес-процесса в вашей версии 1С:Документооборот. Например, может использоваться реквизит, ссылающийся на конкретный вид бизнес-процесса (например, Согласование, Исполнение) или даже составной тип.
  4. Отличия в версиях 1С:Документооборот. Различные версии конфигурации (например, 1С:Документооборот 2.1 и 3.0) могут иметь существенные изменения в структуре метаданных. Например, в 1С:Документооборот 3.0 схема бизнес-процесса фокусируется только на действиях без указания исполнителей, а состав участников и прочие настройки задаются в "Правилах обработки". Это может повлиять на то, как именно хранится или доступна связь.

Пошаговые действия для добавления поля "БизнесПроцесс" в расширение и его использования в запросе

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

  1. Проверим корректность заимствования объекта "Задача".
    • Откроем конфигуратор и перейдем к нашему расширению.
    • Найдем объект метаданных Задача (или тот конкретный вид задачи, с которым мы работаем, например, ЗадачаИсполнителя).
    • Убедимся, что он заимствован. Если нет, заимствуем его.
    • После заимствования внимательно посмотрим на состав его реквизитов в расширении. Должен быть реквизит, ссылающийся на бизнес-процесс. Если его нет, или он называется иначе, нам понадобится дальнейшая модификация.
  2. Добавим реквизит в расширение (если отсутствует или нужно уточнить тип).
    • Если после заимствования реквизит БизнесПроцесс (или аналогичный) не появился или его тип некорректен, мы можем добавить его вручную.
    • В дереве метаданных расширения, в заимствованном объекте ЗадачаИсполнителя (или другом), создадим новый реквизит.
    • Назовем его БизнесПроцесс (или так, как он называется в типовой конфигурации).
    • Критически важно: правильно укажем тип данных этого реквизита. Он должен быть составным типом, включающим все возможные ссылки на бизнес-процессы вашей конфигурации (например, БизнесПроцесс.Согласование, БизнесПроцесс.Ознакомление, БизнесПроцесс.Исполнение и т.д., а также БизнесПроцесс.ТиповойБизнесПроцесс, если он используется как общий тип).
  3. Используем возможности модификации заимствованных объектов (для платформы 8.3.25 и выше).
    • Если наша платформа версии 8.3.25 или новее, у нас есть расширенные возможности по работе с заимствованными объектами.
    • Мы можем не просто заимствовать объект, но и модифицировать его свойства, включая реквизиты. Это позволяет нам "включить" отображение и использование типовых реквизитов, которые по какой-то причине не были сразу доступны.
    • Для элементов карты маршрута заимствованных бизнес-процессов также добавляется команда "Добавить в расширение конфигурации", что упрощает работу с их структурой.
  4. Изучим структуру метаданных типовой конфигурации.
    • В любом случае, лучший способ удостовериться в названии и типе реквизита — это открыть типовую конфигурацию в режиме конфигуратора (без расширения) и найти объект ЗадачаИсполнителя (или нужный вид задачи).
    • Внимательно посмотрим на список его реквизитов. Мы почти наверняка найдем реквизит, который ссылается на БизнесПроцесс. Запомним его точное название и тип.
    • После этого, в нашем расширении, мы либо заимствуем этот реквизит (если такая возможность есть и он явно доступен для заимствования), либо создадим его вручную с точно таким же названием и типом.
  5. Пример запроса с использованием связанного поля в расширении.
    • Предположим, мы успешно заимствовали или добавили реквизит БизнесПроцесс к нашей задаче в расширении. Теперь мы можем использовать его в запросе так же, как и в типовой конфигурации:
    • 
      ВЫБРАТЬ
          ЗадачиРасширение.Ссылка КАК СсылкаЗадачи,
          ЗадачиРасширение.ДатаСоздания,
          ЗадачиРасширение.БизнесПроцесс.Ссылка КАК СсылкаБизнесПроцесса,
          ЗадачиРасширение.БизнесПроцесс.Наименование КАК НаименованиеБизнесПроцесса,
          ЗадачиРасширение.Исполнитель
      ИЗ
          Расширение.Задача.ЗадачаИсполнителя КАК ЗадачиРасширение
      ГДЕ
          ЗадачиРасширение.Выполнена = ЛОЖЬ
          И ЗадачиРасширение.БизнесПроцесс.Ссылка ЕСТЬ НЕ NULL
      
    • Обратите внимание на префикс Расширение. перед именем объекта метаданных Задача.ЗадачаИсполнителя. Это указывает, что мы обращаемся к объекту из нашего расширения.
    • Если наша задача относится к конкретному виду бизнес-процесса, например, Согласование, и мы хотим получить специфические данные этого процесса, мы можем сделать соединение:
    • 
      ВЫБРАТЬ
          ЗадачиРасширение.Ссылка КАК СсылкаЗадачи,
          БизнесПроцессыСогласования.Ссылка КАК СсылкаСогласования,
          БизнесПроцессыСогласования.Предмет
      ИЗ
          Расширение.Задача.ЗадачаИсполнителя КАК ЗадачиРасширение
              ЛЕВОЕ СОЕДИНЕНИЕ БизнесПроцесс.Согласование КАК БизнесПроцессыСогласования
              ПО ЗадачиРасширение.БизнесПроцесс = БизнесПроцессыСогласования.Ссылка
      ГДЕ
          ЗадачиРасширение.Выполнена = ЛОЖЬ
          И ЗадачиРасширение.БизнесПроцесс.Ссылка ЕСТЬ НЕ NULL
      
    • В этом случае мы явно соединяем задачи с конкретным видом бизнес-процесса БизнесПроцесс.Согласование по ссылке, что позволяет нам получить доступ к его специфическим реквизитам, таким как Предмет.
  6. Использование типовых задач.
    • Мы всегда рекомендуем по возможности использовать типовые задачи, добавляя в них новые реквизиты при необходимости, а не создавая полностью новые виды задач с нуля. Это минимизирует потенциальные проблемы при обновлении конфигурации и упрощает поддержку.

Дополнительные нюансы и рекомендации

При работе с 1С:Документооборот и расширениями мы можем столкнуться с различными нюансами. Давайте рассмотрим их подробнее.

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

← На главную