Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Возвращает массив дат, представляющих каждый день в диапазоне между двумя датами.
- *
- * @param {SimpleDateTime} startDay - Объект SimpleDateTime, представляющий начальную дату.
- * @param {SimpleDateTime} endDay - Объект SimpleDateTime, представляющий конечную дату.
- * @returns {Array} Массив чисел, представляющих каждый день в диапазоне.
- */
- function getDaysBetween(startDay, endDay) {
- var days = [];
- // Клонируем текущую дату, чтобы избежать накопления изменений
- var day = new SimpleDateTime(startDay.getValue());
- // Цикл по каждому дню до достижения endDay
- while (day.getValue() <= endDay.getValue()) {
- days.push(day.getValue());
- // Переходим к следующему дню
- day.addDays(1);
- }
- return days;
- }
- /**
- * Проверяет, соответствовало ли значение поля в заданный момент времени указанному значению.
- *
- * @param {string} recordId - Идентификатор записи, для которой выполняется проверка.
- * @param {string} requestDate - Дата в виде строки, на которую нужно проверить значение поля.
- * @param {string} fieldName - Имя поля, значение которого нужно проверить.
- * @param {string} fieldValue - Ожидаемое значение поля.
- * @returns {boolean} Возвращает true, если значение поля совпадает с ожидаемым на момент времени, либо если записи не найдены.
- */
- function checkFieldValue(recordId, requestDate, fieldName, fieldValue) {
- /**
- * Преобразует строку с датой в объект SimpleDateTime, используя несколько форматов.
- *
- * @param {string} dateStr - Строка с датой, которую нужно преобразовать.
- * @returns {SimpleDateTime} Объект SimpleDateTime, соответствующий строке даты.
- * @throws {Error} Бросает исключение, если ни один из форматов не подходит.
- */
- function parseDate(dateStr) {
- var dateFormats = ['dd.MM.yyyy HH:mm:ss', 'yyyy-MM-dd HH:mm:ss', 'dd/MM/yyyy HH:mm:ss'];
- for (var i = 0; i < dateFormats.length; i++) {
- try {
- return new SimpleDateTime(dateStr, dateFormats[i]);
- } catch (e) {
- // Пробуем следующий формат
- }
- }
- throw new Error('Unsupported date format: ' + dateStr);
- }
- // Преобразуем строку с датой запроса в объект SimpleDateTime
- var requestDateTime = parseDate(requestDate);
- // Фильтр для журнала истории
- var gr = new SimpleRecord('sys_history');
- gr.addQuery('record_id', recordId);
- gr.addQuery('field_name', fieldName);
- gr.orderByDesc('sys_created_at');
- gr.query();
- // Перебор записей истории
- while (gr.next()) {
- var historyDateTime = new SimpleDateTime(gr.getValue('sys_created_at'), 'yyyy-MM-dd HH:mm:ss');
- // Проверяем, если дата в истории меньше или равна дате запроса
- if (historyDateTime.getValue() <= requestDateTime.getValue()) {
- var currentValue = gr.getValue('new_value');
- return (currentValue === fieldValue);
- }
- }
- // Если записи не найдены, возвращаем true по умолчанию
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment