// Код для ноды "форматируем даты" в n8n // Входные данные: { last_event: {...}, project_id: "...", ... } const items = $input.all(); return items.map(item => { // Получаем данные из last_event const lastEvent = item.json.last_event || {}; // Форматируем дату из DD.MM.YYYY в YYYY-MM-DD function formatDate(dateStr) { if (!dateStr) return ''; const match = dateStr.match(/^(\d{2})\.(\d{2})\.(\d{4})$/); if (match) { return `${match[3]}-${match[2]}-${match[1]}`; } // Если уже в формате YYYY-MM-DD if (dateStr.match(/^\d{4}-\d{2}-\d{2}$/)) { return dateStr; } return dateStr; } // Форматируем время из HH:MM в HH:MM:SS function formatTime(timeStr) { if (!timeStr) return '10:00:00'; const match = timeStr.match(/^(\d{1,2}):(\d{2})$/); if (match) { return `${match[1].padStart(2, '0')}:${match[2]}:00`; } return timeStr; } // Извлекаем данные из last_event const eventDate = lastEvent.event_date || lastEvent.Дата || ''; const eventTime = lastEvent.event_time || lastEvent.Время || ''; const eventName = lastEvent.event_name || lastEvent.Наименование || 'Судебное заседание'; const location = lastEvent.location || lastEvent.Место || ''; const eventResult = lastEvent.event_result || lastEvent.Результат || ''; const eventBasis = lastEvent.event_basis || lastEvent.Основание || ''; const note = lastEvent.note || lastEvent.Примечание || ''; const publicationDate = lastEvent.publication_date || lastEvent['Дата размещения'] || ''; const formattedDate = formatDate(eventDate); const formattedTime = formatTime(eventTime); // Формируем дату-время в формате, который понимает JavaScript (YYYY-MM-DD HH:MM:SS) const formattedDateTime = formattedDate && formattedTime ? `${formattedDate} ${formattedTime}` : null; // Вычисляем время окончания (+1 час) let endTime = '11:00:00'; let endDateTime = null; if (formattedDateTime) { try { // Создаём Date объект из отформатированной строки const startDate = new Date(formattedDateTime); // Проверяем, что дата валидна if (!isNaN(startDate.getTime())) { const endDate = new Date(startDate.getTime() + 3600000); // +1 час endTime = endDate.toTimeString().substring(0, 8); // HH:MM:SS endDateTime = endDate.toISOString().slice(0, 19).replace('T', ' '); } else { // Если дата невалидна, используем значения по умолчанию endTime = '11:00:00'; if (formattedDate) { endDateTime = `${formattedDate} 11:00:00`; } } } catch (e) { // В случае ошибки используем значения по умолчанию endTime = '11:00:00'; if (formattedDate) { endDateTime = `${formattedDate} 11:00:00`; } } } return { json: { // Данные из корня project_id: item.json.project_id, case_number: item.json.case_number, uid: item.json.uid, // Данные события (распакованные из last_event) event_name: eventName, event_date: eventDate, // Оригинальная дата (DD.MM.YYYY) event_time: eventTime, // Оригинальное время (HH:MM) location: location, event_result: eventResult, event_basis: eventBasis, note: note, publication_date: publicationDate, // Отформатированные значения formatted_date: formattedDate, // YYYY-MM-DD formatted_time: formattedTime, // HH:MM:SS formatted_datetime: formattedDateTime, // YYYY-MM-DD HH:MM:SS end_time: endTime, // HH:MM:SS end_datetime: endDateTime // YYYY-MM-DD HH:MM:SS } }; });