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

Урок 224 из 250
Автор: Марина Павлова
Сложность урока:
1 уровень - интуитивно все понятно из интерфейса, но почитать стоит.
1 из 5
Просмотров: 15492
Дата изменения: 01.10.2024
Недоступно в лицензиях:
Текущую редакцию Вашего 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 инъекции.

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



Нам жаль это слышать… Но мы постараемся быть лучше!

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

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