Создание нового модуля SugarCRM

Думаю, все, кто пользуется SugarCRM, рано или поздно задумывались о создании нового модуля, с собственными полями, связями и т.д. Отсутствие подробной документации по этому поводу – первое, с чем сталкивается разработчик. Цель моей статьи – не предоставить подробную документацию, а ознакомить вас с азами использования Sugar Module Builder (конструктор модулей) – модуля, который всю рутину по созданию нужных файлов и заполнению их возьмет на себя. Нам останется лишь в графическом интерфейсе создать нужный модуль.

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

Чтобы не объяснять «на пальцах», опишем реальную задачу, которую нам необходимо сделать. Предположим, необходимо написать модуль для объектов недвижимости. Модуль имеет следующие поля: Адрес (текстовое поле, 255 символов), Этаж (текстовое поле, 2 символа), Удаленность от метро (текстовое поле), Ремонт (текстовое поле), Количество комнат (выбор из опций:1,2,3,4,5,6), Метраж (текстовое поле), Ответственное лицо (связь с менеджером, за объект может быть ответственный только один менеджер, значит, нам необходимо реализовать связь «много объектов — один менеджер», т.к. один ко многим. Также нужна возможность прикреплять документы и фотографии (связь один один объект — много файлов).

Приступаем к созданию нашего модуля.

В режиме администратора переходим «Администрирование» — «Студия» — «Конструктор модулей» — «Новый пакет». Каждый пакет может содержать любое количество модулей.
Заполняем поля: название пакета, автор (не обязательно), ключ (будет добавляться в виде префикса к модулям пакета и обеспечивать его уникальное название), описание (не обязательно).

Создание нового пакета в конструкторе модулей

Далее создаем модуль, выбрав «Новый модуль».

Создание нового модуля

Заполняем следующие поля: имя модуля, надпись (под этим названием модуль будет отображаться в меню), импортирование (выбрать, если предусматривается возможность выполнять импорт данных в наш модуль), панель закладок (поставить галочку, чтобы модуль отображался в меню) и тип модуля.

Редактирование нового модуля

Существует 6 типов стандартных шаблонов в SugarCRM:

  • Базовый (содержит стандартные для каждого модуля поля, такие как Ответственный, Дата создания, Дата редактирования, а также данные о том, кто создавал запись, кто ее редактировал);
  • Документ (применяется для модулей хранения документов, кроме базовых полей, содержит такие поля, как Имя файла, Расширение файла, Статус, Дата публикации и т.д);
  • Компания (на основе этого шаблона сделан модуль «Контрагенты», содержит такие поля как Название компании, Физический адрес, отгрузочный адрес и т.д);
  • Описание (на основе этого шаблона сделаны модули «Обращения» и «Ошибки», содержит такие поля, как Номер, Статус, Приоритет и т.д);
  • Персона (на основе этого шаблона сделан модуль «Контакты»);
  • Сделка (содержит такие специфические поля, как Стадия сделки, Сумма, Источник контакта и т.д.)

Мы выберем базовый шаблон и добавим нужные поля. После создания шаблона наконец-то приступаем к наполнению нашего модуля. Начнем с добавления полей. Для этого нажимаем «Просмотр полей» и «Добавить поле». Таким образом добавляем все необходимые поля.
При создании поля нам доступны следующие опции (меняются в зависимости от типа переменной, приведем наиболее общие из них). Также при создании поля можно прочесть Help, находящийся в правой части экрана):

  • Тип данных (это поле характеризует тип переменной: обычная строка, целочисленная, с плавающей точкой, html, url, relate (связывает с записью из другого модуля), check box, radio button и т.д, я думаю, не составит особого труда разобраться в этих типах данных)
  • Название поля — под этим названием мы сможем обращаться к переменной из шаблона, а также это название для столбца таблицы базы данных. Так что название поля должно быть буквенно-цифровым и не должно содержать пробелов. Также допускается использование символа подчеркивания
  • Системная надпись — это label, использую который можно осуществлять перевод в разные языковые файлы
  • Значение по умолчанию (данное поле при создании записи будет содержать начальное значение)
  • Максимальный размер (максимальный размер текстового поля, либо же числовых полей, который будет хранится в базе данных)
  • Обязательное поле (невозможно будет сохранить запись без заполнения этого поля)
  • Аудит – отслеживание изменения значения данного поля и запись в специальную таблицу Аудит. Историю изменения таких полей при просмотре каждой записи можно посмотреть, нажав на кнопку «История изменения».
  • Отметьте опцию Объединение дубликатов для того, чтобы иметь возможность использовать соответствующую функцию при нахождении дублирующихся значений;
  • Массовое обновление — возможность обновлять поля с данным значением сразу для ряда записей.

Для количества комнат сделаем select с возможными вариантами выбора. Для этого выберем тип данных DropDown, возле пункта комбобокс нажмем кнопку Добавить и перечислим возможные варианты.

Добавление комбобокса для количества комнат в создании модуля

С добавлением полей закончено, у вас должен получиться следующий результат:

Просмотр всех полей созданного модуля

Возвращаемся в конструктор модуля. Как мы уже говорили, необходимо осуществить возможность прикрепления в ЦРМ к нашему модулю документов и фото. Для этого необходимо создать связь с модулем заметки. Переходим в пункт просмотр связей — добавить связь. Выбираем тип связи один-ко-многим: слева наш модуль, справа модуль заметки.

Создание связи между созданным модулем и заметками

Сохраняем связь.

Остался последний, самый простой пункт – настройка внешнего отображения форм нашего модуля. SugarCRM имеет следующие формы: редактирования, просмотра, списка, быстрого ввода (обычно содержит упрощенную форму ввода слева при просмотре списка), поиска, раздела (dashlet, форма для главной страницы), всплывающие формы (формы загружаемые в субпанель через ajax). Самый легкий, потому что настройка отображения осуществляется полностью с помощью мышки: взяли поле, перенесли в нужную ячейку в форме, и готово.

Настройка внешнего вида форм модуля

Возвращаемся в конструктор нашего модуля и сохраняем его. Возвращаемся в конструктор пакета. И теперь мы можем наш модуль либо установить непосредственно в CRM систему, либо сохранить в zip-архиве,который можно потом загрузить через загрузчик модулей. Рекомендую именно второй вариант. Сейчас вы получили основу вашего модуля, вы можете дописать необходимые изменения в bean файл, добавить джава скрипты в формы и т.д. И после этого установить пакет через загрузчик модулей Sugar в администрировании.

Вот результат, который должен у нас получиться:

1) Форма редактирования:

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

2) Прикрепляем фотографии и документы:

Форма просмотра записи и прикрепления

3) Просматриваем запись и прикрепленные документы:
Форма просмотра

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

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

Есть 20 коммент. к “Создание нового модуля SugarCRM”

  1. Владимир:

    Замечательный ресурс! А могу ли я с Вами связаться по почте?

  2. Андрей:

    День добрый. Помогите разобраться. Создал новый проэкт , модуль . Сделал экспорт его и загрузку через загрузчик. Но он не виден в главном меню шуги. Мой модуль не виден и в «настройке закладк модулей» . Что — то нужно еще проделать чтобы мой модуль отражался ?

    • Шуга Админ:

      1) Когда вы создаете новый модуль, присутствует чекбокс — панель закладок, проверьте чтобы он был отмечен.

      2) А ваш модуль успешно проинсталлировался и работает? Проверить это можно перейдя по url — ваш_url_crm/ index.php?module=Имя_вашего_модуля&action=index

      Не забывайте что если вы создаете модуль через студию SugarCRM, то к имени вашего модуля добавляется указанный при создании ключ. То есть окончательное имя вашего модуля = ключ_УказанноеВамиНазвание

      • Андрей:

        1.Да — чекбокс «Панель закладок» на модуле стоит

        2.Вы знаете пишет ошибку Error: Module kav01_bankposetitel does not exist.

        Здесь kav01 — ключ

        bankposetitel — название модуля

        Может я неправильно выполнил команду ?:

        sugarcrm/index.php?module...amp;action=index

        Здесь sugarcrm — IP мошины сервера шуги.

        P.S. У меня шуга настроена через Denwer .

      • Шуга Админ:

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

        • Андрей:

          Согласен , только почему шуга написал что Модуль успешно установлен . И я обратил внимание что появилась директория «-restore/custom/modulebilder/package/Posetileli»

          в которой и находится мой модуль. А как понять в чем у меня проблема ? Я его создавал исключительно через студию шуги ( руками ничего не делал ) .

        • Шуга Админ:

          Ваш модуль после инсталляции должен находится в папке modules. Та папку, которую вы назвали, выполняет всего лишь служебные роли и служит для восстановления. Включайте отображение об ошибках в php. Так же поищите ошибку в логе Sugarcrm, если не меняли название в настройках, то лог так и называется sugarcrm.log и лежит в корне вашей CRM.

        • Андрей:

          Большое спасибо за ответы.

          Тут видно все дело в том что я ставил шугу на Denwer а он по сути пустышка , т.е. урезок от php , apache .

          Теперь задача правильно наполнить и настроить php , apach . Кстати не подскажите может быть ссылкой — рекомендации по настройке Denwer под шугу ?

        • Шуга Админ:

          К сожалению со ссылкой помочь не могу. Не используем denwer даже для develop. Я так понимаю вы используете windows. Когда то давно под виндой пользовался xampp на локалке (это не реклама :) ), остались хорошие впечатления, да и модули все нужные для SugarCRM там были: curl, imap, gd и т.д.

        • sunma:

          день добрый, а не подскажете ли каким образом редактируется строка «действия», по умолчанию при создании нового модуля доступны только «создать» и «просмотр». очень нужен как минимум «импорт». заранее спасибо

        • Шуга Админ:

          Импорт тоже добавляется автоматом. Посмотрите на 3 скриншот. Необходимо отметить импортирование.

          Но в общем случае, вы можете настраивать ваше меню модуля как хотите, для этого в /modules/[ВАЩ_МОДУЛЬ] добавьте файл Menu.php описывающий меню. Примерное содержимое можете посмотреть в стандартных модулях, например, modules/Contacts/Menu.php

  3. Уважаемые, подскажите, пожалуйста, один момент. После создания нового модуля в конструкторе, на всех визуальных формах отображаются латинские названия полей. Хотя Лэйблы вроде бы присутствуют и правильно привязаны. И язык тоже верно установлен. Где рыть?

  4. igorpolt:

    Уважаемый жители Шугартауна, подскажите,пожалуйста, как правильно дизайнерить базу данных в ШугарЦРМ.

    Суть: Сделал я модуль в котором все фильмы, там поля- одно из них артисты, и их надо бы в отдельную таблицу, чтобы не задваивать записи.

    Вопрос: Нам разработчики оставили работу с массивом «Дикшенари» там есть поле Тэйбл и еще индексы, кто-нибудь владеет логикой класса Бин, как он на основании массива делает таблицы в БД?

    • Шуга Админ:

      На основании массива vardefs и делает)) Вы объявляете типы переменных, на основании них и производится создание БД.

      В вашем случае необходимо делать отдельно два модуля, один фильмы, второй артисты, и в том же конструкторе модулей добавляете связь многие-ко-многим между фильмами и артистами. И все у вас в фильме будет панель со списками артистов в который вы можете их добавлять, и так же для артистов будет панель со всеми фильмами в которых они участвовали. Это очень простая структура, делается без всяких знаний в конструкторе за 5 минут. Удачи!

  5. igorpolt:

    Спасибо, Сенсей)

  6. Yaroslav Bogutsky:

    А позваляет ли SugarCRM своим модулем влиять на поведение родных модулей? Например, переопределить действие какой-либо кнопки в форме родного модуля?

Написать комментарий

Вы должны войти чтобы комментировать.