Files
crm.clientright.ru/ticket_form/docs/N8N_MYSQL_GET_CONTACT_DATA.md
Fedor e114231541 feat: Получение cf_2624 из MySQL при загрузке черновика
- Добавлен сервис CrmMySQLService для подключения к MySQL БД vtiger CRM
- Обновлён get_draft() для прямого SQL запроса к MySQL вместо webservice API
- Получение cf_2624 и всех данных контакта из MySQL
- Обновлена документация и SQL файлы для n8n
- Добавлено логирование для отладки

Преимущества:
- Проще: один SQL запрос вместо цепочки HTTP запросов
- Быстрее: прямой запрос к БД
- Надёжнее: не зависит от webservice API
- Актуальнее: всегда свежие данные из БД
2025-12-03 16:04:25 +03:00

2.2 KiB
Raw Blame History

Получение данных контакта из MySQL в n8n

Задача

В n8n workflow нужно получить полные данные контакта из MySQL БД vtiger CRM перед формированием финального ответа.

SQL запрос

Файл: ticket_form/docs/N8N_POSTGRESQL_GET_CONTACT_DATA.sql (название файла устарело, но запрос для MySQL)

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:

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.