Почему Битрикс так популярен? Правильный старт и развитие bitrix проекта Бездумная разработка компонентов Bitrix



За все время своей работы с Битрикс мне довелось поработать с очень большим количеством проектов, которые кто-то разрабатывал до меня. Тут и мелкие доработки, фикс различных багов и ошибки работы логики, редизайн сайта и глобальные изменения существующего функционала. И, как и любой другой разработчик, я терпеть не могу разгребать чужой мусор, костыли и «временные» заплатки, которые на деле помнят еще 8 редакцию продукта.

Здесь я постараюсь не акцентировать внимание на стандартных «worst practice» при программировании на PHP, типа наплевательского отношения к выборам имен переменных и функций, излишних запросов к БД в цикле, отсутствия проверок пользовательских данных в формах, игнорирование комментариев и тому подобного. Я попытаюсь коснуться именно моментов, свойственных разработке на Битриксе, которые в последствии позволят избежать негодования и проклятий в ваш адрес от программиста, которому выпало сопровождать ваш код. И да, нередко этим программистом будете оказываться вы сами через год, или более, когда уже совершенно забудете, зачем вы вставляли сюда тот или иной костыль.

«Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте» (с) Джон Ф. Вудс
Первое, и самое, на мой взгляд, важное - ради всего святого, используйте папку local . Это просто жизненно необходимо при использовании системы контроля версий – все, что вам нужно – добавить в исключения папку /bitrix/. Всё. Далее практически вся разработка ведется только в ней. Это заметно упрощает поиск нужных файлов и компонентов в последствии, помогает не засорять репозиторий лишними файлами, да и вообще – приводит дерево проекта в более опрятный, «человеческий» вид.

Не модифицируйте ядро . Даже если вы уверены, что оно не будет обновляться. Даже если так быстрее. Даже если вам лень. Забудьте эту мысль, как страшный сон. Если необходимо изменить логику работы стандартного компонента – перенесите его в новое пространство имен /local/components/modify/ и работайте с ним. То же самое касается модулей, гаджетов и activities бизнес-процессов.

Не засоряйте файл init.php . Объединяйте функции для работы с каким-то конкретным модулем или функционалом в класс, весь этот класс записывайте в отдельный файл, а в init.php просто подключайте эти файлы и прописывайте обработчики событий. Мне встречались файлы init.php по 500Kb, где в кашу были смешаны функции, определение констант, классы и инициализация обработчиков. Разумеется, когда приходилось разбираться в этих файлах, я сыпал проклятиями на своих предшественников.

Следующий пункт не касается случая разработки готовых решений для Marketplace, когда целью ставится сделать максимально настраиваемый функционал из публичной части для конечного потребителя. Если вы работаете над конкретным проектом, по конкретному ТЗ – не стоит пытаться сделать унифицированный шаблон для компонента на все случаи жизни . Лично я придерживаюсь философии – лучше несколько простых шаблонов, использующихся для разных целей, чем один универсальный, но в котором сам черт потом ногу сломит. Разумеется, в каждом конкретном случае нужно отталкиваться от того, что есть – техзадание, варианты реализации и тому подобное, но забывать про «Бритву Оккама» все-таки не стоит. Как пример приведу один проект лизинговой компании, который мне довелось править. Сам проект, конечно, был реализован ужасно, на настоящий ужас был в страницах раздела каталога услуг. У каждого из пяти разделов была собственная верстка, на которых отличалось как положение блоков на странице, так и в принципе наличие некоторых из них. И для всех пяти страниц использовался один шаблон с кучей if-else, дублированием вызовов компонентов, подключением стилей и скриптов, которые, к тому же, периодически конфликтовали друг с другом. Как итог – огромный файл, в котором разобраться «без поллитры» было смерти подобно. Хотя, казалось бы, что мешало сделать 5 разных шаблонов и не создавать трудностей на ровном месте?

Используйте API . Не изобретайте велосипеды там, где это не нужно. Юзайте документацию – весь продукт довольно хорошо описан, а так же каждую функцию можно посмотреть детально на bxapi.ru.

Избегайте прямых запросов к базе . Это частный случай предыдущего пункта – используйте API. Необдуманные, незащищенные запросы могут привести к порче, утере или даже к компрометации данных.

Не используйте компоненты с ЧПУ из корня сайта . Последствия, как правило, довольно печальны, так как ЧПУ использует файл обработчика адресов, попытка использовать его из корня легко ломает вам адресацию других компонентов, а так же 404 страницы. Ничего страшного не будет, если статьи у вас будут адресоваться относительно папки /articles/, а товары относительно /catalog/.

Подключайте css и js с помощью API. До сих пор повсеместно встречаю подключение скриптов и стилей с помощью html-тегов. Используйте объект класса \Bitrix\Main\Page\Asset и функции addJs() и addCss(). Это позволит объединять файлы и, в последствии, кешировать их одним нажатием чекбокса в настройках главного модуля

Ну и напоследок, ошибка касается не только Битрикса, но уж больно часто я стал встречать проблемы, связанные с ней. Проверяйте на пустоту массив с результатами выборки . Как пример, последний раз встретился с данной проблемой при работе с одним интернет-магазином. Жалоба: страницы иногда грузятся по 16 секунд. С чем связано – не ясно. Методом проб и ошибок выяснил, что страницы грузятся неприлично долго только тогда, когда корзина пустая. Казалось, с чего бы? Как выяснилось, у корзины при наведении появлялось всплывающее окно, в котором отображались изображения товара, положенного в корзину. Ну что сделал предыдущий разработчик? Взял результат работы компонента «маленькая корзина» и в файле result_modifier.php сделал вызов GetList() товаров для выборки изображений с фильтром из массива ID товаров, потом из результатов выборки в массив соответствующего товара добавлял src изображения. В итоге, когда товаров в корзине не было, фильтр уходил пустой, и в выборку попадал ВЕСЬ каталог товаров. Ну а дальше цикл по каждому и… имеем то, что имеем. Ясно, что на этапе разработки при тестовых 15 товарах это было незаметно, и проблемы возникли уже в боевых условиях. Хотя, казалось бы, чего стоило поставить проверку на empty($arResult[‘ITEMS’])…

На этом я заканчиваю свой личный топ «worst practice», касательно разработки на Битрикс. Если хоть кому-то данная информация поможет избежать ошибок в будущем и улучшить свой стиль разработки, значит это было не зря.

Вы можете помочь и перевести немного средств на развитие сайта

За все время своей работы с Битрикс мне довелось поработать с очень большим количеством проектов, которые кто-то разрабатывал до меня. Тут и мелкие доработки, фикс различных багов и ошибки работы логики, редизайн сайта и глобальные изменения существующего функционала. И, как и любой другой разработчик, я терпеть не могу разгребать чужой мусор, костыли и «временные» заплатки, которые на деле помнят еще 8 редакцию продукта.

Здесь я постараюсь не акцентировать внимание на стандартных «worst practice» при программировании на PHP, типа наплевательского отношения к выборам имен переменных и функций, излишних запросов к БД в цикле, отсутствия проверок пользовательских данных в формах, игнорирование комментариев и тому подобного. Я попытаюсь коснуться именно моментов, свойственных разработке на Битриксе, которые в последствии позволят избежать негодования и проклятий в ваш адрес от программиста, которому выпало сопровождать ваш код. И да, нередко этим программистом будете оказываться вы сами через год, или более, когда уже совершенно забудете, зачем вы вставляли сюда тот или иной костыль.

«Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте» © Джон Ф. Вудс

Первое, и самое, на мой взгляд, важное - ради всего святого, используйте папку local . Это просто жизненно необходимо при использовании системы контроля версий — все, что вам нужно — добавить в исключения папку /bitrix/. Всё. Далее практически вся разработка ведется только в ней. Это заметно упрощает поиск нужных файлов и компонентов в последствии, помогает не засорять репозиторий лишними файлами, да и вообще — приводит дерево проекта в более опрятный, «человеческий» вид.

Не модифицируйте ядро . Даже если вы уверены, что оно не будет обновляться. Даже если так быстрее. Даже если вам лень. Забудьте эту мысль, как страшный сон. Если необходимо изменить логику работы стандартного компонента — перенесите его в новое пространство имен /local/components/modify/ и работайте с ним. То же самое касается модулей, гаджетов и activities бизнес-процессов.

Не засоряйте файл init.php . Объединяйте функции для работы с каким-то конкретным модулем или функционалом в класс, весь этот класс записывайте в отдельный файл, а в init.php просто подключайте эти файлы и прописывайте обработчики событий. Мне встречались файлы init.php по 500Kb, где в кашу были смешаны функции, определение констант, классы и инициализация обработчиков. Разумеется, когда приходилось разбираться в этих файлах, я сыпал проклятиями на своих предшественников.

Следующий пункт не касается случая разработки готовых решений для Marketplace, когда целью ставится сделать максимально настраиваемый функционал из публичной части для конечного потребителя. Если вы работаете над конкретным проектом, по конкретному ТЗ — не стоит пытаться сделать унифицированный шаблон для компонента на все случаи жизни . Лично я придерживаюсь философии — лучше несколько простых шаблонов, использующихся для разных целей, чем один универсальный, но в котором сам черт потом ногу сломит. Разумеется, в каждом конкретном случае нужно отталкиваться от того, что есть — техзадание, варианты реализации и тому подобное, но забывать про «Бритву Оккама» все-таки не стоит. Как пример приведу один проект лизинговой компании, который мне довелось править. Сам проект, конечно, был реализован ужасно, на настоящий ужас был в страницах раздела каталога услуг. У каждого из пяти разделов была собственная верстка, на которых отличалось как положение блоков на странице, так и в принципе наличие некоторых из них. И для всех пяти страниц использовался один шаблон с кучей if-else, дублированием вызовов компонентов, подключением стилей и скриптов, которые, к тому же, периодически конфликтовали друг с другом. Как итог — огромный файл, в котором разобраться «без поллитры» было смерти подобно. Хотя, казалось бы, что мешало сделать 5 разных шаблонов и не создавать трудностей на ровном месте?

Используйте API . Не изобретайте велосипеды там, где это не нужно. Юзайте документацию — весь продукт довольно хорошо описан, а так же каждую функцию можно посмотреть детально на bxapi.ru.

Избегайте прямых запросов к базе . Это частный случай предыдущего пункта — используйте API. Необдуманные, незащищенные запросы могут привести к порче, утере или даже к компрометации данных.

Не используйте компоненты с ЧПУ из корня сайта . Последствия, как правило, довольно печальны, так как ЧПУ использует файл обработчика адресов, попытка использовать его из корня легко ломает вам адресацию других компонентов, а так же 404 страницы. Ничего страшного не будет, если статьи у вас будут адресоваться относительно папки /articles/, а товары относительно /catalog/.

Подключайте css и js с помощью API. До сих пор повсеместно встречаю подключение скриптов и стилей с помощью html-тегов. Используйте объект класса \Bitrix\Main\Page\Asset и функции addJs () и addCss (). Это позволит объединять файлы и, в последствии, кешировать их одним нажатием чекбокса в настройках главного модуля

Ну и напоследок, ошибка касается не только Битрикса, но уж больно часто я стал встречать проблемы, связанные с ней. Проверяйте на пустоту массив с результатами выборки . Как пример, последний раз встретился с данной проблемой при работе с одним интернет-магазином. Жалоба: страницы иногда грузятся по 16 секунд. С чем связано — не ясно. Методом проб и ошибок выяснил, что страницы грузятся неприлично долго только тогда, когда корзина пустая. Казалось, с чего бы? Как выяснилось, у корзины при наведении появлялось всплывающее окно, в котором отображались изображения товара, положенного в корзину. Ну что сделал предыдущий разработчик? Взял результат работы компонента «маленькая корзина» и в файле result_modifier.php сделал вызов GetList () товаров для выборки изображений с фильтром из массива ID товаров, потом из результатов выборки в массив соответствующего товара добавлял src изображения. В итоге, когда товаров в корзине не было, фильтр уходил пустой, и в выборку попадал ВЕСЬ каталог товаров. Ну, а дальше цикл по каждому и… имеем то, что имеем. Ясно, что на этапе разработки при тестовых 15 товарах это было незаметно, и проблемы возникли уже в боевых условиях. Хотя, казалось бы, чего стоило поставить проверку на empty ($arResult[«ITEMS»])…

На этом я заканчиваю свой личный топ «worst practice», касательно разработки на Битрикс. Если хоть кому-то данная информация поможет избежать ошибок в будущем и улучшить свой стиль разработки, значит это было не зря.

Станислав Шашалевич

Настало время, когда владельцам бизнеса не надо объяснять, зачем нужен сайт или интернет-магазин. Теперь они это самостоятельно впитывают на этапе становления бизнеса. Пришло время объяснять клиенту: какая же CMS платформа лучше подходит для его бизнеса? А объяснить это куда сложнее, когда у клиента уже есть проект на своей платформе, то убедить его в необходимости перехода на другую платформу – очень сложная задача. Но, на наш взгляд, с платформой 1С-Битрикс это задача решается куда легче, нежели с другими e-commerce платформами.

Поэтому приглашаем вас к рассмотрению 10 причин , почему необходимо переходить на 1С-Битрикс .


1. 1С-интеграция

Это одна из самых приятных «плюшек» платформы 1С-Битрикс. В 2007 году «Битрикс» создал совместное предприятие с компанией «1С» «1С-Битрикс» . На наш взгляд, именно этот факт придал активное развитие данной платформе. Наступила новая эра, когда 1С-интеграция превратилась из сложнейшей задачи в четкую схему простых действий.

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

  • Шаблон сайта разработан без понимания особенностей 1С-интеграции
  • Сама 1С уже хорошо перепилена
  • Низкая квалификация разработчиков
Если же у нас идет стандартный сайт от 1С-Битрикс и стандартная , то проблем с интеграцией быть просто не должно. Уникальность и сложность ваших внутренних бизнес-процессов добавляют сложности к 1С-интеграции . Но это не вина Битрикс - это особенности вашей компании.

А в доказательство нашей правоты мы предоставляем видеоурок, на котором наши специалисты показывают, как сделать интеграцию с всего за 30 минут . И никаких фокусов. Только факты!

2. CRM интеграция

Если 1С-интеграцией уже никого не удивить и это является обязательным функционалом любой e-commerce системы, то вот CRM-интеграция только набирает обороты. Но и тут Битрикс старается быть впереди всех.

В коробке 1С-Битрикс уже идет стандартный функционал по синхронизации данных с CRM Bitrix24 . Это позволяет отделу продаж более эффективно работать с лидами, сделками и новыми контактами. Прямо из коробки вы получаете готовый инструмент по работе с продажами.

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

С 1 февраля 2017 года контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - новые правила установлены в 54-ФЗ ст.2 п.2.

В полную силу закон заработает с 1 июля 2017 года . Каждый интернет-магазин должен иметь кассовый аппарат (ККТ), подключенный к интернету и соединенный с оператором фискальных данных (ОФД).

Что же это значит? Если простыми словами, то с 1 июля 2017 года по каждому заказу, оплаченному онлайн (не по выставленному счету) через ваш интернет-магазин, нужно выбивать чек ККМ , заносить его в базу сайта, отправлять в электронном виде покупателю, да еще множество данных сразу же предоставлять в налоговую. И на все это отводится всего 5 минут , иначе вас ждет штраф.

Как вам такая задачка? На наш взгляд, очень нетривиальная. Что нам нравится в Битриксе , так это то, что он оперативно реагирует на все изменения рынка. Он не зацикливается на идеализации своего продукта, а просто мерит пульс всех составляющих е-commerce и мгновенно реагирует.

Вот и тут 1С-Битрикс оперативно отреагировал и сразу же внедрил функционал, удовлетворяющий все требования 54-ФЗ . Насколько нам известно, на текущий момент Битрикс на своей собственной площадке тестирует связку: интернет-магазин – ККТ – налоговые органы. Поэтому к 1 июля мы будем во всеоружии вместе с Битрикс .

Мы считаем, что это очень весомый аргумент переноса проекта на платформу 1С-Битрикс именно в 2017 году – полное соответствие 54-ФЗ . Думаем, что в этом плане будут проблемы у многих платных e-commerce платформ, не говоря уже о бесплатных. Владельцу бизнеса будет просто необходимо обратить свое внимание именно на 1С-Битрикс , чтобы надежно закрыть вопрос с 54-ФЗ .

4. Маркетинговые инструменты

Мы все наслышаны о маркетинговых способностях 1С-Битрикс . Кто-то, тихо завидуя, говорит, что это главная составляющая успеха этой компании. Но давайте не будем завидовать, а просто будем перенимать опыт Битрикс . Благо, сама компания 1С-Битрикс с удовольствием делится всеми своими инструментами непосредственно в самой платформе.

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

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

5. SEO инструменты

SEO – было, есть и будет важным инструментом привлечения трафика на сайт. Мы, как разработчики собственного SEO решения , уделяем этому особое внимание.

К сожалению, до 2013 года SEO составляющая платформы 1С-Битрикс была очень слабо развита. Невозможно было гибко генерировать обычные мета-теги, не говоря уже о более сложных задачах. Но с 14 версии Битрикс все изменилось. Теперь SEO инструменты платформы включают в себя:

  • Шаблонизаторы мета-тегов
  • Умная генерация карты сайта
  • Генерация robots.txt
  • Отправка уникального текста в Яндекс
  • И многое другое
Сейчас можно с уверенность говорить, что платформа 1С-Битрикс станет отличным помощником для SEO-специалиста .

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

Компания Битрикс и в этом направлении отреагировала оперативно и запустила свой облачный сервис «1C-Битрикс BigData» . Это позволяет делать персональные предложения клиенту, то есть, анализируя его поведенческие действия по определенным алгоритмам, предлагать необходимый ему товар. Вывод персональных товаров может происходить как в публичной части сайта, так и в рассылках.

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

7. Партнерская сеть

Партнерская сеть – это то, благодаря чему растет 1С-Битрикс . Сейчас в сети насчитывается более 13 000 партнеров. И с каждым днем их становится все больше.

Что же такая обширная сеть дает бизнесу?

Во-первых, вы получаете возможность подобрать разработчика по следующим параметрам:

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

Что касается выбора непосредственного партнера, то, на наш взгляд, это самый важный и ответственный этап. Именно от него зависит, каким получится ваш проект. Битрикс , конечно, пытается как-то отфильтровать и подобрать для вас подходящих разработчиков, но, как мы думаем, пока это не всегда хорошо получается. Тот же статус «Золотой партнер» не дает никаких гарантий вашему проекту. Ведь, как мы считаем, слишком низок порог входа для получения этого статуса и стоило бы его поднять.

Хоть это и не тема текущей статьи, но все же, исходя из выше изложенного мы можем вам дать пару рекомендаций:

  • Кейсы партнера. Тщательно ознакамливайтесь с проектами, которые уже реализовал разработчик, похожие по тематике на ваш. Задавайте уточняющие вопросы по кейсам. Не стесняйтесь.
  • Экспертность. Обязательно необходимо проверять квалификацию партнера. Проверка начинается с первого касания. Грамотными уточняющими вопросами партнер раскроет ваш проект, а своими убедительными ответами на вопросы разобьет все ваши сомнения.
Более подробно данную тему мы постараемся раскрыть в следующих статьях. Проблема очень важная. Ведь часто из-за недобросовестных партнеров весь негатив выплескивается в сторону Битрикс . Чтобы как-то оправдать себя, придумываются якобы недоработки и упущения самой платформы. От подобных партнеров страдает все сообщество 1С-Битрикс . Именно после таких разработчиков владельцы интернет-магазинов не хотят работать с Битрикс вообще.

8. E-commerce платформа №1

Как ни парадоксально, но это самый простой и немаловажный аргумент в пользу перехода на Битрикс .



Исходя из графика, видно, что около 60% рынка коммерческих CMS сейчас занимает именно компания 1С-Битрикс . А 6 из 10, навряд ли, могут ошибаться. Они сделали свой выбор, тщательно анализируя все плюсы и минусы продукта. Вам же теперь намного проще принять правильное решение, следуя их примеру.

Хочется пожелать Битриксу , чтобы он на этом не останавливался и постарался не просто удерживать текущую долю рынка, но и увеличил ее. А расти есть куда: 40% рынка коммерческих CMS + бесплатные системы. 1С-Битрикс просто обязан создавать такие условия и такую платформу, на которую просто захочется переходить.

9. 1С-Битрикс.Маркетплейс

Самое вкусное мы решили оставить на потом. Создание собственной площадки продаж Маркетплейс в 2011 году открыло перед 1С-Битрикс новые возможности. Ведь благодаря этому шагу популяризация Битрикс возросла как в среде разработчиков, так и у непосредственно участников онлайн-продаж. И причин этому несколько:

  • Типовые решения – Быстрый старт продаж. После запуска 1 С -Битрикс.Маркетплейс был большой бум на типовые шаблонные решения. Благодаря этому клиенты реально запускали интернет-магазины от нескольких дней до недель, вместо многомесячных и дорогостоящих проектов «с нуля». Это позволяло им быстро набраться опыта в онлайн-продажах и уже более осознанно и профессиональнее относиться к развитию своего проекта.
  • Увеличение функциональности 1С-Битрикс. Теперь то, что не успевает сделать сам Битрикс , делают его партнеры. Это расширяет возможности платформы и делает их практически безграничными.
  • Повышение квалификации разработчиков. Площадка открыла новые возможности непосредственно для исполнителей. Тем самым способствовала росту квалификации технических специалистов в разработке решений под 1С-Битрикс .
Сейчас Маркетплейс все также пестрит готовыми решениями и модулями. Правда, качество многих из них оставляет желать лучшего. Поэтому бесплатно можем дать вам один полезный совет: прежде, чем приобрести решение, обязательно протестируйте его работу на вашем проекте. Обязательно убедитесь, что модуль имеет демо-режим . Если такого режима нет, то запросите у разработчика возможность протестировать его решение. Лично мы даже не рассматриваем продукты, у которых нет демо-режима . Тоже самое советуем всем нашим клиентам. Приобретать «кота в мешке» желания нет. Владельца интернет-магазина надо: зажечь, заинтересовать и убедить. А демо-режим – как раз тот инструмент, который может это сделать.

10. Постоянное развитие и обновления

Как уже упоминалось выше, 1С-Битрикс тщательно следит за всеми тенденциями и изменениями е-commerce рынка. Вы получаете не просто актуальный только на сегодня продукт, как это происходит с самописными CMS – вы получаете постоянно развивающуюся платформу.

При вы получаете год бесплатных обновлений. Это значит, что в течение этого времени ваш проект будет всегда в актуальном состоянии. А если вы приобретаете продукты 1С-Битрикс через нас, то вы еще и получаете бонусы в размере 20% от суммы заказа, которые можете потратить на приобретение наших модулей.

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

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

За все время своей работы с Битрикс мне довелось поработать с очень большим количеством проектов, которые кто-то разрабатывал до меня. Тут и мелкие доработки, фикс различных багов и ошибки работы логики, редизайн сайта и глобальные изменения существующего функционала. И, как и любой другой разработчик, я терпеть не могу разгребать чужой мусор, костыли и «временные» заплатки, которые на деле помнят еще 8 редакцию продукта.

Здесь я постараюсь не акцентировать внимание на стандартных «worst practice» при программировании на PHP, типа наплевательского отношения к выборам имен переменных и функций, излишних запросов к БД в цикле, отсутствия проверок пользовательских данных в формах, игнорирование комментариев и тому подобного. Я попытаюсь коснуться именно моментов, свойственных разработке на Битриксе, которые в последствии позволят избежать негодования и проклятий в ваш адрес от программиста, которому выпало сопровождать ваш код. И да, нередко этим программистом будете оказываться вы сами через год, или более, когда уже совершенно забудете, зачем вы вставляли сюда тот или иной костыль.

«Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте» (с) Джон Ф. Вудс
Первое, и самое, на мой взгляд, важное - ради всего святого, используйте папку local . Это просто жизненно необходимо при использовании системы контроля версий – все, что вам нужно – добавить в исключения папку /bitrix/. Всё. Далее практически вся разработка ведется только в ней. Это заметно упрощает поиск нужных файлов и компонентов в последствии, помогает не засорять репозиторий лишними файлами, да и вообще – приводит дерево проекта в более опрятный, «человеческий» вид.

Не модифицируйте ядро . Даже если вы уверены, что оно не будет обновляться. Даже если так быстрее. Даже если вам лень. Забудьте эту мысль, как страшный сон. Если необходимо изменить логику работы стандартного компонента – перенесите его в новое пространство имен /local/components/modify/ и работайте с ним. То же самое касается модулей, гаджетов и activities бизнес-процессов.

Не засоряйте файл init.php . Объединяйте функции для работы с каким-то конкретным модулем или функционалом в класс, весь этот класс записывайте в отдельный файл, а в init.php просто подключайте эти файлы и прописывайте обработчики событий. Мне встречались файлы init.php по 500Kb, где в кашу были смешаны функции, определение констант, классы и инициализация обработчиков. Разумеется, когда приходилось разбираться в этих файлах, я сыпал проклятиями на своих предшественников.

Следующий пункт не касается случая разработки готовых решений для Marketplace, когда целью ставится сделать максимально настраиваемый функционал из публичной части для конечного потребителя. Если вы работаете над конкретным проектом, по конкретному ТЗ – не стоит пытаться сделать унифицированный шаблон для компонента на все случаи жизни . Лично я придерживаюсь философии – лучше несколько простых шаблонов, использующихся для разных целей, чем один универсальный, но в котором сам черт потом ногу сломит. Разумеется, в каждом конкретном случае нужно отталкиваться от того, что есть – техзадание, варианты реализации и тому подобное, но забывать про «Бритву Оккама» все-таки не стоит. Как пример приведу один проект лизинговой компании, который мне довелось править. Сам проект, конечно, был реализован ужасно, на настоящий ужас был в страницах раздела каталога услуг. У каждого из пяти разделов была собственная верстка, на которых отличалось как положение блоков на странице, так и в принципе наличие некоторых из них. И для всех пяти страниц использовался один шаблон с кучей if-else, дублированием вызовов компонентов, подключением стилей и скриптов, которые, к тому же, периодически конфликтовали друг с другом. Как итог – огромный файл, в котором разобраться «без поллитры» было смерти подобно. Хотя, казалось бы, что мешало сделать 5 разных шаблонов и не создавать трудностей на ровном месте?

Используйте API . Не изобретайте велосипеды там, где это не нужно. Юзайте документацию – весь продукт довольно хорошо описан, а так же каждую функцию можно посмотреть детально на bxapi.ru.

Избегайте прямых запросов к базе . Это частный случай предыдущего пункта – используйте API. Необдуманные, незащищенные запросы могут привести к порче, утере или даже к компрометации данных.

Не используйте компоненты с ЧПУ из корня сайта . Последствия, как правило, довольно печальны, так как ЧПУ использует файл обработчика адресов, попытка использовать его из корня легко ломает вам адресацию других компонентов, а так же 404 страницы. Ничего страшного не будет, если статьи у вас будут адресоваться относительно папки /articles/, а товары относительно /catalog/.

Подключайте css и js с помощью API. До сих пор повсеместно встречаю подключение скриптов и стилей с помощью html-тегов. Используйте объект класса \Bitrix\Main\Page\Asset и функции addJs() и addCss(). Это позволит объединять файлы и, в последствии, кешировать их одним нажатием чекбокса в настройках главного модуля

Ну и напоследок, ошибка касается не только Битрикса, но уж больно часто я стал встречать проблемы, связанные с ней. Проверяйте на пустоту массив с результатами выборки . Как пример, последний раз встретился с данной проблемой при работе с одним интернет-магазином. Жалоба: страницы иногда грузятся по 16 секунд. С чем связано – не ясно. Методом проб и ошибок выяснил, что страницы грузятся неприлично долго только тогда, когда корзина пустая. Казалось, с чего бы? Как выяснилось, у корзины при наведении появлялось всплывающее окно, в котором отображались изображения товара, положенного в корзину. Ну что сделал предыдущий разработчик? Взял результат работы компонента «маленькая корзина» и в файле result_modifier.php сделал вызов GetList() товаров для выборки изображений с фильтром из массива ID товаров, потом из результатов выборки в массив соответствующего товара добавлял src изображения. В итоге, когда товаров в корзине не было, фильтр уходил пустой, и в выборку попадал ВЕСЬ каталог товаров. Ну а дальше цикл по каждому и… имеем то, что имеем. Ясно, что на этапе разработки при тестовых 15 товарах это было незаметно, и проблемы возникли уже в боевых условиях. Хотя, казалось бы, чего стоило поставить проверку на empty($arResult[‘ITEMS’])…

На этом я заканчиваю свой личный топ «worst practice», касательно разработки на Битрикс. Если хоть кому-то данная информация поможет избежать ошибок в будущем и улучшить свой стиль разработки, значит это было не зря.

Если вам необходимо реализовать какой-то проект, вы можете создать группу, пригласить в нее только тех сотрудников, которые имеют отношение к этому проекту, поставить им задачи, загрузить необходимые файлы. Группы помогают сгруппировать все данные, задачи, файлы, сообщения, встречи в одном месте. Вы всегда сможете просмотреть какие действия, какие задачи были выполнены в той или иной группе.

В Битрикс24 есть группы и проекты. Основное отличие группы от проекта – в проекте можно задать сроки реализации проекта, сроки задач в проекте не могут выходить за рамки сроков проекта.

Поэтому если вам нужны конкретные сроки в проекте, то при создании группы вы можете выбрать тип группы - Проект . Если сроки не важны, то это может быть обычная рабочая группа.

Подробнее о создании группы или проекта можно прочитать .

2. Кто может создавать группы и проекты?

Каждый сотрудник может создавать группу или проект и приглашать в нее участников. Количество групп и проектов в Битрикс24 неограниченно на всех тарифах.

3. Как посмотреть все группы (проекты), которые есть на портале?

Все группы на портале может посмотреть сотрудник с правами администратора. Для этого нужно .

4. Как архивировать группу (проект)?

Для этого во вкладке группы Основное выбрать меню Действия и в нем пункт Редактировать группу (проект) . В открывшемся окне отметить Тип группы (проекта): Архивный .

Архивные группы и проекты не отображаются в общем списке групп. Найти их можно по фильтру Архивные либо с помощью поискового запроса.

Вернуть архивную группу (проект) в работу можно аналогичным способом – снять галочку с типа группы Архивная .

5. Как удалить группу?

Для удаления группы выберите во вкладке группы Основное пункт меню Действия > Удалить группу :

После клика откроется форма подтверждения удаления группы.

Если к группе (проекту) привязаны какие-то задачи, то нужно сначала открепить или удалить задачи, а потом уже можно будет удалить саму группу (проект).

6. Как удалить группу (проект), которая принадлежит уволенному сотруднику?

Удалить такую группу может администратор портала. Для этого нужно на странице Моя страница и далее в меню Действия выбрать пункт Удалить группу :

Если группа или проект еще нужны, то можно просто поменять владельца группы (руководителя проекта) через меню Действия : либо в Редактировании группы (проекта) , либо в Редактировании состава .

7. Можно ли запретить участникам группы (проекта) видеть друг друга?

Если вам необходимо разделить видимость сотрудников именно по группам, есть функция Экстранет (внешние пользователи) , которая доступна на коммерческих тарифных планах Битрикс24 . Этот инструмент позволяет работать с внешними сотрудниками, приглашать их в группы (проекты) и вести всю работу именно в рамках группы. При этом внутренние и внешние сотрудники будут видеть друг друга, только если являются участниками одной экстранет-группы (проекта).

При этом если у вас несколько экстранет-групп (проектов), то между собой участники не видят друг друга.

8. Как пригласить экстранет-пользователя в группу (проект)?

Пользователей можно пригласить как непосредственно при создании рабочей группы (проекта), так в любой момент после создания рабочей группы (проекта) на закладке Основное страницы уже существующей группы или проекта (меню Действия > Пригласить в группу ).