Files
crm.clientright.ru/n8n_format_dates_code.js
Fedor 01c4fe80b5 chore: snapshot current working tree changes
Save all currently accumulated repository changes as a backup snapshot for Gitea so no local work is lost.
2026-03-26 14:19:01 +03:00

113 lines
4.1 KiB
JavaScript
Raw 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.

// Код для ноды "форматируем даты" в 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
}
};
});