Files
crm.clientright.ru/ticket_form/docs/N8N_WORKFLOW_ADD_POSTGRESQL_CONTACT.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

3.3 KiB
Raw Blame History

Добавление ноды 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

  1. CreateWebContacКлиентправ → создаёт/находит контакт
  2. PostgreSQL: Get Contact Data → получает полные данные контакта
  3. 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) - SMS
  • cf_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 напрямую для скорости.