165  /  184

Рекомендации по разработке

Просмотров: 614
Марина Павлова
Сложность урока:
1 уровень - интуитивно все понятно из интерфейса, но почитать стоит.
1
2
3
4
5
Недоступно в редакциях:
Старт, Стандарт, Малый бизнес

Рассмотрим типовые ошибки разработчиков и возможности, о которых часто забывают.

  Запуск

Варианты запуска бизнес-процессов:

  • Ручной - инициируется вручную пользователем из интерфейса;
  • Автоматический - запускается сам при создании/изменении документа, также при работе роботов и триггеров CRM;
  • Запуск через Rest - метод bizproc.workflow.start, либо посредством создания/изменения документа аналогично автоматическому запуску;
  • Возобновление - работа БП после паузы, либо запуск после какого-то события.

Общий момент для всех вариантов Кроме роботов и триггеров на текущий момент. Сейчас они запускаются системой, но такой сценарий планируется изменить. запуска БП: всегда есть пользователь, который запустил бизнес-процесс и он всегда доступен внутри этого БП.

  Калькулятор выражений

В модуле Бизнес-процесс есть полезный инструмент - Калькулятор выражений. С помощью функций калькулятора можно расширить стандартные возможности Бизнес-процессов.

Подробно у функциях калькулятора можно почитать в уроке Функции калькулятора выражений.

Рекомендуем посмотреть примеры по частым вопросам:

  PHP в бизнес-процессах

Отметим основные ошибки тех, кто активно занимается кастомизацией на коробочных версиях:

ХорошоПлохоПочему плохо
$this->GetVariable('Foo'); {=Variable:Foo} Не рекомендуется использовать выражение БП при построении кода PHP, т.к. его невозможно правильно заэкранировать. Например, есть пользователь добавит в переменную текст с кавычкой, то на выходе получим ошибка парсинга PHP, что приведет к фатальной остановке выполнения хита и БП зависнет. Поэтому лучше использовать стандартный API.
Не ориентироваться на контекст Использовать $USER, $GLOBALS и т.д. Использование глобальных переменных не рекомендуется.
Учитывать права доступа $USER->Authorize(); Не рекомендуется повышать права доступа путем авторизации под другим пользователем. Например: вы решили для выполнения определенного действия авторизовать пользователя под ID администратора. Если БП остановится по какой-то причине, то у пользователя останутся права администратора.
Фильтровать данные извне "SELECT FROM b_user WHERE ID = {=Variable:UserID}" Использования запроса к БД без фильтрации данных позволяет злоумышленнику осуществить атаку на сайт с помощью SQL инъекции.

Также рекомендуется максимально использовать стандартные функции.

  Вебинар о бизнес-процессах

Подробнее смотрите в вебинаре Роботы и бизнес-процессы. RPA с точки зрения разработчика. Техноволна 1 от 06 апреля 2020.



0
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии