# Решение проблемы с отображением событий в проектах ## Проблема События создавались в календаре CRM, привязывались к проектам в таблице `vtiger_seactivityrel`, но не отображались в интерфейсе проекта. ## Причина События создавались с неправильными параметрами, отличающимися от тех, что использует стандартный workflow CRM (workflow 3 "ACS Создание события на СЗ"). ## Решение ### 1. Анализ workflow 3 (блок 18 "Создаем Событие") Изучили настройки workflow 3 из таблицы `vtiger_wfp_blocks`: ```sql SELECT id, text, type, settings FROM vtiger_wfp_blocks WHERE workflow_id = 3 ORDER BY id; ``` Ключевые параметры workflow (блок 18): - **activitytype**: `судебное заседание` (кастомный тип) - **eventstatus**: `Planned` (Запланировано) - **visibility**: `Public` - **contact_id**: Связь с контактом через `$(linktoaccountscontacts: (Contacts) id)` - **assigned_user_id**: Владелец проекта - **subject**: `СЗ по проекту $projectname` ### 2. Исправления в CreateCourtEvent_v2.php #### 2.1. Статус события **Было:** ```php $activityType = 'судебное заседание'; $eventstatus = 'Held'; // Проведено ``` **Стало:** ```php $activityType = 'судебное заседание'; $eventstatus = 'Planned'; // Запланировано (как в workflow) ``` #### 2.2. Получение контакта из проекта **Было:** ```php $query = "SELECT e.smownerid, p.projectname FROM vtiger_crmentity e JOIN vtiger_project p ON p.projectid = e.crmid WHERE e.crmid = ? AND e.deleted = 0"; ``` **Стало:** ```php $query = "SELECT e.smownerid, p.projectname, p.linktoaccountscontacts FROM vtiger_crmentity e JOIN vtiger_project p ON p.projectid = e.crmid WHERE e.crmid = ? AND e.deleted = 0"; $contactId = $row['linktoaccountscontacts'] ?? null; ``` #### 2.3. Связь события с контактом Добавлена запись в `vtiger_cntactivityrel`: ```php // Связываем событие с контактом (если контакт указан в проекте) if (!empty($contactId) && $contactId > 0) { $sql = "INSERT INTO vtiger_cntactivityrel (contactid, activityid) VALUES (?, ?)"; $stmt = $mysqli->prepare($sql); $stmt->bind_param('ii', $contactId, $eventId); $stmt->execute(); log_event('SUCCESS', "Событие привязано к контакту: $contactId"); } ``` #### 2.4. Исправление неопределённой переменной **Было:** ```php log_event('DEBUG', "Тип события: $activityType, Статус: $status, Тема: $eventSubject"); ``` **Стало:** ```php log_event('DEBUG', "Тип события: $activityType, Статус: $eventstatus, Тема: $eventSubject"); ``` ## Результат ### Структура созданного события (ID 395462) ``` activityid: 395462 subject: [Бостанова ООО ЭДЭКС] Решение activitytype: судебное заседание eventstatus: Planned date_start: 2025-10-02 time_start: 10:00:00 project_id: 364118 (привязка к проекту) contactid: 364117 (привязка к контакту) ``` ### Связи в базе данных 1. **vtiger_crmentity**: Основная запись события (crmid=395462) 2. **vtiger_activity**: Данные события (дата, время, тип, статус) 3. **vtiger_seactivityrel**: Связь события с проектом (crmid=364118, activityid=395462) 4. **vtiger_cntactivityrel**: Связь события с контактом (contactid=364117, activityid=395462) ## Тестирование ```bash # Проверка события в базе данных mysql -u ci20465_72new -pEcY979Rn ci20465_72new -e " SELECT a.activityid, a.subject, a.activitytype, a.eventstatus, a.date_start, a.time_start, s.crmid as project_id, c.contactid FROM vtiger_activity a LEFT JOIN vtiger_seactivityrel s ON a.activityid = s.activityid LEFT JOIN vtiger_cntactivityrel c ON a.activityid = c.activityid WHERE a.activityid = 395462;" ``` ## Файлы изменены - `/var/www/fastuser/data/www/crm.clientright.ru/CreateCourtEvent_v2.php` ## Дата изменений 2025-10-17 18:45 ## Автор AI Assistant (Cursor)