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

Урок 216 из 242
Автор: Марина Павлова
Сложность урока:
1 уровень - интуитивно все понятно из интерфейса, но почитать стоит.
1 из 5
Дата изменения: 29.04.2022
Просмотров: 5726
Недоступно в лицензиях:
Текущую редакцию Вашего 1С-Битрикс можно просмотреть на странице Обновление платформы (Marketplace > Обновление платформы).
Старт, Стандарт, Малый бизнес

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

  Запуск

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

  • Ручной - инициируется вручную пользователем из интерфейса;
  • Автоматический - запускается сам при создании/изменении документа, также при работе роботов и триггеров 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.



Курсы разработаны в компании «1С-Битрикс»
Спасибо, мы рады что смогли помочь Вам. Ниже Вы можете оставить свой отзыв или пожелание :)
Нам жаль это слышать… Но мы постараемся быть лучше!

Мы благодарны Вам за помощь в улучшении документации.

Мы стараемся сделать документацию понятнее и доступнее,
и Ваше мнение важно для нас