feat: Получение cf_2624 из MySQL и блокировка полей при подтверждении данных
- Добавлен сервис CrmMySQLService для прямого подключения к MySQL CRM - Обновлён метод get_draft() для получения cf_2624 напрямую из БД - Реализована блокировка полей (readonly) при contact_data_confirmed = true - Добавлен выбор банка для СБП выплат с динамической загрузкой из API - Обновлена документация по работе с cf_2624 и MySQL - Добавлен network_mode: host в docker-compose для доступа к MySQL - Обновлены компоненты формы для поддержки блокировки полей
This commit is contained in:
74
docs/N8N_MYSQL_GET_CONTACT_DATA.md
Normal file
74
docs/N8N_MYSQL_GET_CONTACT_DATA.md
Normal file
@@ -0,0 +1,74 @@
|
||||
# Получение данных контакта из MySQL в n8n
|
||||
|
||||
## Задача
|
||||
|
||||
В n8n workflow нужно получить полные данные контакта из MySQL БД vtiger CRM перед формированием финального ответа.
|
||||
|
||||
## SQL запрос
|
||||
|
||||
**Файл:** `ticket_form/docs/N8N_POSTGRESQL_GET_CONTACT_DATA.sql` (название файла устарело, но запрос для MySQL)
|
||||
|
||||
```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 = ?
|
||||
AND ce.deleted = 0
|
||||
LIMIT 1;
|
||||
```
|
||||
|
||||
## Настройка ноды MySQL в n8n
|
||||
|
||||
1. **Тип ноды:** MySQL
|
||||
2. **Operation:** Execute Query
|
||||
3. **Query:** (см. выше)
|
||||
4. **Parameters:**
|
||||
- `?` = `{{ JSON.parse($node["CreateWebContacКлиентправ"].json.result).contact_id }}`
|
||||
|
||||
## Credentials для MySQL
|
||||
|
||||
- **Host:** `localhost`
|
||||
- **Port:** `3306`
|
||||
- **Database:** `ci20465_72new`
|
||||
- **User:** `ci20465_72new`
|
||||
- **Password:** `EcY979Rn`
|
||||
|
||||
## Использование в Code node
|
||||
|
||||
После выполнения MySQL запроса, данные доступны в Code node:
|
||||
|
||||
```javascript
|
||||
const pgContactNode = $('MySQL: Get Contact Data')?.first();
|
||||
if (pgContactNode && pgContactNode.json && pgContactNode.json.length > 0) {
|
||||
const contactFromDb = pgContactNode.json[0];
|
||||
// Используем contactFromDb.cf_2624, contactFromDb.firstname, и т.д.
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**Примечание:** Название файла `N8N_POSTGRESQL_GET_CONTACT_DATA.sql` устарело, но запрос работает для MySQL.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user