Files
crm.clientright.ru/ticket_form/docs/N8N_WORKFLOW_ADD_POSTGRESQL_CONTACT.md
Fedor 003210dcfc fix: исправлены проблемы с формами и циклическими ссылками
- Исправлена проблема с циклическими ссылками в Step1Phone.tsx при onPaste (добавлен setTimeout)
- Добавлены name атрибуты во все поля формы для правильной работы форм и автозаполнения
- Исправлены проблемы с label/input связями (все label имеют правильные for/id)
- Все поля теперь имеют id и name атрибуты (исправляет предупреждения в консоли)

Исправленные функции:
- createField: добавлен name атрибут
- createReadonlyField: добавлен name атрибут
- createDateField: добавлен name атрибут
- createMoneyField: добавлен name атрибут
- createTextarea: добавлен name атрибут
- createBankSelect: добавлен name атрибут для основного поля и скрытого bank_id
- createCheckbox: добавлен name атрибут, проверена связь label/input
2025-12-04 09:21:12 +03:00

3.3 KiB
Raw Permalink 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 напрямую для скорости.