Не так давно мы закончили писать первую версию документации по смарт-процессам и новому API CRM. Спасибо Роберту и его команде за оперативную публикацию.
Документация тут -
Если её внимательно прочитать (а ещё лучше - ознакомиться с исходным кодом), то станет понятно, что у разработчиков появляется возможность внедриться очень глубоко в API "малой кровью" (без модификации ядра). Мы почти не ставили final у классов и методов, только местами.
Однако наличие этой возможности не значит, что ей необходимо очень активно пользоваться.
Как вы знаете, мы поддерживаем обратную совместимость. Но цена этой поддержки - довольно высока. Это в буквальном смысле сковывает нам руки - нам всё время приходится держать в голове необходимость поддержания совместимости, рефакторить сильно нельзя и т.д. Код становится "закостенелым" и буквально превращается в легаси с момента выхода первой его версии.
Теперь, когда у разработчиков есть возможность наследовать классы продукта, это становится ещё сложнее. Т.к. по-хорошему, мы не можем менять даже сигнатуру protected методов.
В связи с этим большая просьба - при наследовании классов придерживайтесь рекомендаций, изложенных на этой странице
Здесь я изложу их ещё раз немного другими словами
1. Не надо наследовать стандартные классы без особой необходимости вообще. Делайте это только в крайнем случае и когда вы полностью отдаете себе отчет, как и что вы делаете
2. Не надо использовать / наследовать те классы, которые в документации помечены соответствующим образом (ParentFieldManager и другие).
3. Если вы наследуете класс, ни в коем случае не меняйте сигнатуру методов добавлением новых аргументов / изменением типов возвращаемых значений и т.д. Если надо передать какие-то дополнительные данные, сделайте отдельный метод для этого
4. Не стоит слишком полагаться на структуру массивов внутри классов. При использовании делайте проверки.
5. Даже следуя этим рекомендациям можно столкнуться с тем, что после установки обновления что-то отвалится из-за каких-то изменений. Пишите тесты, тестируйте обновления не на продакшн-окружении, используйте фича-флаги.
Если после ознакомления с кодом или документацией вам что-то не понравилось - не стесняйтесь писать.
По поводу нового API для старых сущностей - будет, но не сразу. Не так давно мы сделали возможность читать данные о лидах, сделках, контактах и компаниях (выйдет в районе crm 21.800.0). Позже добавим возможность и делать изменения через новое API.
По поводу реста - доделываем прямо сейчас, будет классно.