Задачи и бизнес-процессы 1С 8.3: от поручения коллеге до кода
Содержание
Задача в 1С 8.3 — это объект конфигурации платформы, который хранит поручение конкретному исполнителю или роли: что сделать, к какому сроку и в рамках какого процесса. Задачи почти никогда не живут сами по себе. Их порождает бизнес-процесс, когда доходит до точки маршрута «Действие», а выполнение задачи двигает процесс дальше.
В типовых конфигурациях на Библиотеке стандартных подсистем (БП 3.0, ЗУП 3.1, УТ 11, КА, ERP) механизм уже готов: есть задача «Задача исполнителя», бизнес-процесс «Задание» и списки «Мои задачи». Пользователю достаточно включить его в администрировании. Программисту — понять, как устроены точки маршрута, адресация и события модуля.
Что такое задача в 1С 8.3 и чем она не является
С точки зрения платформы задача — отдельный вид объектов метаданных, такой же как справочник или документ. В дереве конфигурации у неё своя ветка «Задачи». У каждой задачи есть стандартные реквизиты, которые разработчик не создаёт сам:
- 🔹
НомериДата— как у документа; - 🔹
Наименование— короткая формулировка поручения; - 🔹
Выполнена— флаг завершения; - 🔹
БизнесПроцесс— ссылка на процесс-владелец; - 🔹
ТочкаМаршрута— шаг процесса, на котором задача создана; - 🔹
ПометкаУдаления.
Всё остальное — срок, автор, важность, описание, результат — добавляют обычными реквизитами.
Слово «задача» в 1С встречается и в других смыслах. Путаница из-за этого частая, поэтому сразу разведём понятия:
| Что называют «задачей» | Что это на самом деле | Кто исполняет |
|---|---|---|
| Задача (объект метаданных) | Поручение человеку внутри бизнес-процесса | Пользователь |
| «Список задач» бухгалтера в БП 3.0 | Календарь отчётности и платежей в разделе «Главное» | Бухгалтер, по напоминанию |
| Регламентное задание | Код, который сервер запускает по расписанию | Сервер 1С |
| Фоновое задание | Код, запущенный асинхронно из другого кода | Сервер 1С |
Дальше речь только о первой строке — о задачах как поручениях людям.
Виды задач: личное поручение, задача роли, шаг маршрута
По тому, кому адресована задача и откуда она взялась, на практике выделяют три варианта.
1. Личное поручение. Задача адресована конкретному пользователю. В БСП это бизнес-процесс «Задание»: автор указывает исполнителя, срок и описание. Если включить проверку, после выполнения появится вторая задача — проверяющему.
2. Задача роли. Исполнитель — не человек, а роль: «Главный бухгалтер», «Кладовщик склада №2», «Согласующий по договорам». Задачу видят все, кто в эту роль включён. Первый, кто взял её в работу, становится исполнителем, у остальных она уходит из списка «к выполнению».
3. Шаг маршрута. Задача создаётся автоматически процессом согласования, заявки или закрытия месяца. Пользователь мог ничего не создавать — он просто получил свою часть работы.
Как устроена адресация
За «кому видна задача» отвечает адресация. В свойствах объекта «Задача» указывают:
- 🔸 регистр сведений адресации — в нём хранится, кто входит в какую роль и по какому объекту (в БСП это регистр исполнителей задач);
- 🔸 реквизиты адресации — реквизиты задачи, каждый связан с измерением этого регистра;
- 🔸 основной реквизит адресации — по нему отбирается конкретный исполнитель.
Благодаря этому одну задачу можно адресовать «роли Согласующий по организации ООО Ромашка», и платформа сама поймёт, кому её показать.
Роли исполнителей в БСП — это не роли прав доступа из Конфигуратора. Это обычный справочник, который заполняет администратор базы. Человек может иметь полные права и при этом не входить ни в одну роль исполнителей.
Как создать задачу в 1С 8.3 вручную
Сначала механизм нужно включить. В конфигурациях на БСП флажок «Бизнес-процессы и задачи» находится в разделе Администрирование, обычно на странице «Органайзер» или «Общие настройки» — зависит от конфигурации и релиза. Без этого флажка пункты задач в интерфейсе не видны.
Дальше — порядок для поручения коллеге:
- Откройте список бизнес-процессов «Задания» или нажмите «Создать» в форме списка «Мои задачи».
- Заполните краткое наименование. Оно попадёт в список задач исполнителя, поэтому пишите глаголом: «Сверить расчёты с ООО Альфа за сентябрь».
- Выберите исполнителя — пользователя или роль.
- Установите срок. Время тоже имеет значение: задача со сроком «до 18:00» станет просроченной в 18:01.
- Укажите предмет — документ, контрагента, договор, к которому относится поручение. Тогда задача будет видна и из карточки этого объекта.
- Опишите, что именно нужно сделать и в каком виде вернуть результат.
- Если результат нужно проверить, включите проверку и выберите проверяющего.
- Нажмите «Стартовать и закрыть».
Именно кнопка старта создаёт задачу. Если записать процесс, но не стартовать его, задача у исполнителя не появится.
Автоматическое создание задач по событиям
Ручные поручения — малая часть. Основная польза от задач появляется, когда они создаются сами.
Без программирования
В типовых конфигурациях есть несколько готовых сценариев:
- 📌 задание можно создать прямо из документа или справочника, если для объекта включены бизнес-процессы — тогда предмет заполнится автоматически;
- 📌 в некоторых решениях (КА, ERP, Документооборот) есть шаблоны процессов: согласование, исполнение, ознакомление — их настраивают, а не программируют;
- 📌 задачи роли распределяются сами, как только администратор заполнил состав ролей.
С доработкой
Если нужно, чтобы задача появлялась при наступлении события, есть четыре проверенных способа:
| Способ | Когда срабатывает | Где применять |
|---|---|---|
| Запуск процесса из модуля объекта | При записи или проведении документа | «Проведён счёт больше 100 000 — согласовать с финдиректором» |
| Подписка на событие | При записи объектов нескольких видов | Одно правило на десяток документов |
| Регламентное задание | По расписанию | «Каждый понедельник проверить просроченную дебиторку» |
| HTTP-сервис | По внешнему запросу | Заявка с сайта или из другой системы |
Доработку модуля типового документа делайте через расширение конфигурации , а не правкой основной конфигурации. Иначе каждое обновление превратится в сравнение и объединение.
Как исполнитель работает с задачей и как руководитель её контролирует
Исполнитель
Рабочее место — список «Мои задачи». Там видны задачи, адресованные лично и через роли. Типовой порядок:
- Открыть задачу, прочитать описание и предмет.
- Для задачи роли — принять её к исполнению. Тогда коллеги по роли увидят, что задача занята.
- Сделать работу в базе: провести документ , сверить расчёты, заполнить справочник.
- Записать результат в комментарии к выполнению.
- Нажать кнопку выполнения. Задача получит флаг
Выполнена, процесс перейдёт к следующей точке.
Если задачу невозможно выполнить, правильнее вернуть её автору с комментарием, а не держать в списке неделями.
Автор и руководитель
У автора есть список выданных им поручений. Просроченные задачи в списках выделяются, и по ним удобно отбирать: по сроку, исполнителю, предмету. Для регулярного контроля полезно:
- 📊 раз в неделю отбирать невыполненные задачи со сроком в прошлом;
- 📊 смотреть, у кого из исполнителей копится больше всего открытых задач;
- 📊 проверять задачи роли, которые никто не принял, — это первый признак, что состав роли устарел.
В БСП есть регламентные задания, которые по расписанию проверяют сроки задач и рассылают исполнителям уведомления. Их включают в списке регламентных операций раздела Администрирование.
Программирование задач в 1С 8.3: примеры кода
Чтобы задачи появлялись по вашему маршруту, нужен собственный бизнес-процесс. Связка такая: объект «Бизнес-процесс» ссылается на объект «Задача», а в графической схеме маршрута расставлены точки.
Типы точек маршрута:
| Точка | Что делает |
|---|---|
| Старт | Начало процесса |
| Действие | Создаёт задачу исполнителю и ждёт её выполнения |
| Условие | Ветвление «да/нет» по результату кода |
| Выбор варианта | Ветвление на несколько путей |
| Разделение / Слияние | Параллельные ветки и их сведение |
| Обработка | Выполняет код без участия человека |
| Подпроцесс | Запускает вложенный процесс |
| Завершение | Конец процесса |
Запуск процесса из кода
Пример для собственного процесса «СогласованиеСчета» с реквизитами Документ и Сумма. Код можно вызвать из модуля документа после проведения:
Процедура ЗапуститьСогласование(СчетСсылка, СуммаСчета) Экспорт
Процесс = БизнесПроцессы.СогласованиеСчета.СоздатьБизнесПроцесс();
Процесс.Дата = ТекущаяДатаСеанса();
Процесс.Документ = СчетСсылка;
Процесс.Сумма = СуммаСчета;
Процесс.Записать();
Процесс.Старт();
КонецПроцедуры
Метод Старт() переводит процесс в первую точку маршрута и создаёт задачи. Без него в базе останется записанный, но не стартованный процесс.
Заполнение задачи при создании
В свойствах точки «Действие» назначьте обработчик ПриСозданииЗадач. В модуле объекта бизнес-процесса он получает массив формируемых задач — в нём можно заполнить срок и наименование. СрокИсполнения здесь — реквизит, который вы добавили задаче сами:
Процедура СогласоватьПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ)
Для Каждого Задача Из ФормируемыеЗадачи Цикл
Задача.Наименование = СтрШаблон("Согласовать счёт %1 на сумму %2",
Строка(Документ), Формат(Сумма, "ЧДЦ=2; ЧГ=3"));
Задача.СрокИсполнения = ТекущаяДатаСеанса() + 2 * 86400; // двое суток
КонецЦикла;
КонецПроцедуры
Если нужно сформировать задачи полностью самостоятельно, используйте обработчик ПередСозданиемЗадач и параметр СтандартнаяОбработка.
Ветвление по сумме
Для точки «Условие» обработчик ПроверкаУсловия возвращает результат через параметр:
Процедура ПроверкаСуммыПроверкаУсловия(ТочкаМаршрутаБизнесПроцесса, Результат)
Результат = (Сумма > 100000);
КонецПроцедуры
Ветка «Истина» ведёт к финдиректору, «Ложь» — сразу к оплате.
Выполнение задачи из кода
ЗадачаОбъект = ЗадачаСсылка.ПолучитьОбъект();
ЗадачаОбъект.ВыполнитьЗадачу();
Метод ВыполнитьЗадачу() записывает задачу и продвигает процесс. Для проверки бизнес-логики перед завершением задачи у точки «Действие» есть событие ПриВыполнении с параметром Отказ.
Запрос невыполненных задач
Для БСП-задачи «ЗадачаИсполнителя» с реквизитами Исполнитель и СрокИсполнения:
ВЫБРАТЬ
Задачи.Ссылка,
Задачи.Наименование,
Задачи.СрокИсполнения
ИЗ
Задача.ЗадачаИсполнителя КАК Задачи
ГДЕ
НЕ Задачи.Выполнена
И НЕ Задачи.ПометкаУдаления
И Задачи.Исполнитель = &Исполнитель
И Задачи.СрокИсполнения < &ТекущаяДата
УПОРЯДОЧИТЬ ПО
Задачи.СрокИсполнения
Запрос вернёт личные просроченные задачи. Задачи, адресованные роли, у которых исполнитель ещё не назначен, так не найдутся — для них отбирайте по реквизитам адресации.
Интеграция задач с почтой, телефонией и мессенджерами
Из коробки задачи общаются с внешним миром через почту. В БСП исполнителю можно отправлять уведомления о новых и просроченных задачах. Условия:
- ✉️ в базе настроена системная учётная запись электронной почты;
- ✉️ у пользователя в контактной информации указан адрес;
- ✉️ включены соответствующие регламентные задания.
Всё остальное — доработка.
Мессенджеры. Самый частый вариант — бот в Telegram. В обработчике ПриСозданииЗадач или подписке на запись задачи формируете текст и отправляете его HTTP-запросом к API мессенджера через HTTPСоединение. Токен бота храните в защищённом хранилище или константе с ограниченным доступом, а не в коде модуля.
Телефония. Обычно работает в обратную сторону: АТС при пропущенном звонке вызывает HTTP-сервис 1С, тот находит контрагента по номеру и стартует процесс «Перезвонить» с задачей менеджеру.
Система взаимодействия. Встроенный в платформу механизм обсуждений позволяет вести переписку прямо по задаче, без внешних мессенджеров. Для этого базу подключают к серверу взаимодействия.
Ошибки, из-за которых задачи «теряются»
Эти проблемы встречаются при внедрении чаще всего:
- ❌ Флаг
Выполненаставят напрямую. Задача выглядит закрытой, но процесс стоит на месте. Завершать нужно черезВыполнитьЗадачу()или кнопку в форме. - ❌ Роль исполнителей пустая. Задача создана, но не видна никому. Проверяйте состав ролей после увольнений и переводов.
- ❌ Процесс записан, но не стартован. Задач нет, хотя процесс в списке есть.
- ❌ Пометка удаления вместо остановки. Помеченный на удаление процесс и его задачи висят в базе до удаления помеченных. Ненужный процесс правильнее остановить или прервать штатной командой.
- ❌ Доработки в основной конфигурации. Через полгода типовая не обновляется без ручного сравнения.
- ❌ Срок без времени. Задача «до 15 октября» со временем 00:00 становится просроченной в начале рабочего дня, а не в конце.
Частые вопросы
Можно ли создать задачу без бизнес-процесса?
Видит ли исполнитель задачи, если у него нет прав на предмет?
Как передать задачу другому сотруднику?
Сколько задач выдерживает база?
Выполнена.Где задачи в 1С 8.3 Бухгалтерия, если меню их не показывает?
Администрирование или у пользователя нет прав на подсистему. В «Список задач» раздела «Главное» искать их не нужно — это календарь бухгалтера, другой механизм.