- Добавлен сервис CrmMySQLService для прямого подключения к MySQL CRM - Обновлён метод get_draft() для получения cf_2624 напрямую из БД - Реализована блокировка полей (readonly) при contact_data_confirmed = true - Добавлен выбор банка для СБП выплат с динамической загрузкой из API - Обновлена документация по работе с cf_2624 и MySQL - Добавлен network_mode: host в docker-compose для доступа к MySQL - Обновлены компоненты формы для поддержки блокировки полей
3.3 KiB
3.3 KiB
Добавление ноды PostgreSQL для получения данных контакта
Задача
Добавить ноду PostgreSQL перед "Code in JavaScriptКлиентправ" для получения полных данных контакта из CRM.
Шаги
1. Добавить ноду PostgreSQL
Название ноды: PostgreSQL: Get Contact Data
Параметры:
- Operation: Execute Query
- Query: (см. файл
N8N_POSTGRESQL_GET_CONTACT_DATA.sql)
SQL запрос:
SELECT
cd.contactid,
cd.firstname,
cd.lastname,
cd.email,
cd.mobile,
cd.phone,
cs.birthday,
ca.mailingstreet,
ca.mailingcity,
ca.mailingstate,
ca.mailingzip,
ca.mailingcountry,
ccf.cf_1157 AS middle_name,
ccf.cf_1263 AS birthplace,
ccf.cf_1257 AS inn,
ccf.cf_1849 AS requisites,
ccf.cf_1580 AS code,
ccf.cf_1706 AS sms,
ccf.cf_2624 AS cf_2624
FROM vtiger_contactdetails cd
LEFT JOIN vtiger_contactscf ccf ON ccf.contactid = cd.contactid
LEFT JOIN vtiger_contactsubdetails cs ON cs.contactsubscriptionid = cd.contactid
LEFT JOIN vtiger_contactaddress ca ON ca.contactaddressid = cd.contactid
LEFT JOIN vtiger_crmentity ce ON ce.crmid = cd.contactid
WHERE cd.contactid = $1
AND ce.deleted = 0
LIMIT 1;
Параметры запроса:
$1={{ JSON.parse($node["CreateWebContacКлиентправ"].json.result).contact_id }}
2. Порядок нод в workflow
- CreateWebContacКлиентправ → создаёт/находит контакт
- PostgreSQL: Get Contact Data → получает полные данные контакта
- Code in JavaScriptКлиентправ → использует данные из обеих нод
3. Что получает Code node
После добавления ноды PostgreSQL, Code node получит доступ к:
$('PostgreSQL: Get Contact Data').first().json- полные данные контакта
Доступные поля:
contactid- ID контактаfirstname,lastname- ФИОemail,mobile,phone- Контактыbirthday- Дата рожденияmailingstreet,mailingcity, etc. - Адресmiddle_name(cf_1157) - Отчествоbirthplace(cf_1263) - Место рожденияinn(cf_1257) - ИННrequisites(cf_1849) - Реквизитыcode(cf_1580) - Кодsms(cf_1706) - SMScf_2624- Данные подтверждены
4. Использование в Code node
Код в "Code in JavaScriptКлиентправ" автоматически найдёт данные из PostgreSQL ноды и добавит их в sessionData.contact_from_db.
Альтернатива: если нет доступа к PostgreSQL
Если нет прямого доступа к PostgreSQL, можно использовать HTTP Request к backend API:
Название ноды: HTTP Request: Get Contact Data
Метод: GET
URL: {{ $env.BACKEND_URL }}/api/v1/contacts/{{ JSON.parse($node["CreateWebContacКлиентправ"].json.result).contact_id }}
Но лучше использовать PostgreSQL напрямую для скорости.