Files
crm.clientright.ru/EVENT_CREATION_SOLUTION.md
Fedor 75d3f7942b feat: Обновлены все URL Nextcloud с office.klientprav.tech на office.clientright.ru
Обновленные файлы:
- crm_extensions/nextcloud_api.php (2 места)
- modules/Documents/actions/NcPrepareEdit.php
- crm_extensions/nextcloud_editor/js/nextcloud-editor.js
- crm_extensions/file_storage/api/get_edit_urls.php
- crm_extensions/file_storage/api/simple_edit.php
- crm_extensions/README.md
- NEXTCLOUD_EDIT_BUTTON_IMPLEMENTATION.md
- crm_extensions/docs/NEXTCLOUD_EDITOR.md
- test_syntax_check.html
- crm_extensions/tests/test_edit_button.html

Все ссылки теперь указывают на новый сервер office.clientright.ru
Backup файлы и тестовые директории не изменены
2025-10-20 17:17:34 +03:00

126 lines
4.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Решение проблемы с отображением событий в проектах
## Проблема
События создавались в календаре 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)