Это случилось! Наконец-то [https://marketplace.1c-bitrix.ru/solutions/maximaster.coupanda/](CouPanda! поселилась в публичном маркетплейсе). Был пройден большой путь. На страницах моего блога можно проследить за развитием модуля от идеи и до полноценно работающего решения. Много работы уже было сделано, и еще больше предстоит впереди. Еще на этапе идеи у меня было очень много задумок, а в процессе разработки появилось еще больше всего. Ниже немного мыслей о том, как все это было, и что меня ожидает в будущем.

Odin ass bee tricks …

Основная проблема, с которой пришлось столкнуться - это то, как вендор организовал архитектурную составляющую для модулей сторонних разработчиков. Давно изживший своё подход к модульности, очень неудобный способ инсталляции модуля, еще более неудобный способ обновления. Кодировки - это вообще сказка. Это приводит к тому, что у опытных разработчиков нет никакого желания работать с подобным инструментарием, а неопытные натыкаются на подводные камни, которые вендор мог бы исключить ещё в зародыше, обратившись к общепринятым мировым практикам.

По правде сказать, битрикс во многом использует подобный подход. Обычно почти не думают об архитектурной составляющей решения, а если и думают, то в итоге получается далеко не лучшее решение. Образовывается технический долг. Много технического долга … и после выпуска он почти не контролируется, никак не исправляется. Бизнес требует от разработчика добавления новых фич, которые будут способствовать бОльшей выручке, а о «красоте» кода и стройности архитектуры думать совсем не остается ресурсов. А может и не хочется им, не знаю.

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

Модерация

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

В процессе модерации я немного доработал решение. Модератору не понравилось, что не очень детально расписана инструкция по использованию модуля. Для решения этого недостатка я решил добавить в сам модуль отдельную страницу, на которой будет расписано всё о его возможностях.

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

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

Однако, что тоже стало удивлением для меня, эту ошибку исправили в течение одного дня и на этом вся модерация окончилась, больше никаких проблем не возникло.

В общем, впечатления от модерации модуля у меня пока только положительные. Понятно, что модерацией занимаются не прошаренные разработчики, а девочки без опыта разработки скоре всего. Оно и к лучшему, ведь работа с модулем не должна вызывать трудностей даже у самых далеких от IT личностей.

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

Эксперименты

В процессе разработки модуля я хотел провести пару экспериментов над продуктом. И теперь настало время подвести первые результаты этих экспериментов.

Версия php

Модуль я с самого начала писал на php 5.6. Битрикс обещал, что они повысят порог минимальной версии для решений на маркете с 5.3 до 5.6 с 1 января 2018 года, что не может не радовать. В процессе модерации на версию никто не поругался, а значит пока можно считать, что работаем с 5.6 без нареканий 🙂 Ждем 7+

Модификация схемы БД

Мне нужно было где-то хранить идентификатор процесса генерации. Был выбор между тремя вариантами:

  • создать UF-свойство (отдельная таблица, где будет отдельная запись для каждого купона 1 к 1)
  • создать свою таблицу (тоже отдельная таблица 1 к 1)
  • добавить кастомное поле в существующую таблицу битрикса

Несмотря на всю рискованность последнего варианта я выбрал именно его, и не прогадал (по крайней мере пока). Допускаю, что в будущем я очень сильно об этом пожалею, но модераторы не обратили на это решение никакого внимания. Не могу сказать, что это правильный подход на 100%, но пока не было предпосылок к тому, что этого делать нельзя. В общем, поживем - увидим 🙂

Компоненты в админке

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

Планы на будущее

Нельзя стоять на месте, нужно двигаться вперёд. В процессе разработки стало понятно, что не менее важными функциями для купонов является их импорт и экспорт. Многие владельцы магазинов для работы с программами лояльности используют внешние системы и уже заранее сформированные пулы купонов, и сейчас нет никакой возможности этот пул быстренько залить в битрикс, нужно просить разработчиков сделать уникальный для их проекта функционал. Также нет удобной возможности выгрузить список купонов. Да, если стандартный экспорт в xls (который совсем не xls), но на больших данных он может отвалиться, да и прогресса формирования не видно.

Есть также проблемы с менеджментом купонов - их просмотр, поиск, удаление. Все это требует проработки и будет реализовано в данном модуле. Следите за обновлениями!

Буду очень благодарен за фидбек и, конечно же, за покупки 🙂 Всех с наступившим новым и старым новым годами 🙂 Да пребудет CouPanda вместе с вами!