Как получить текущую дату в запросе: проверка на пустую дату, текущая и произвольная дата
/// Как в запросе задать константу типа дата в 1с 8.3, 8.2 &НаСервере Процедура КакВЗапросеЗадатьКонстантуТипаДатаНаСервере() // Нужное значение даты можно передать в запрос через // параметр, либо указать значение даты прямо // в тексте запроса. Запрос = Новый Запрос( "ВЫБРАТЬ | ДАТАВРЕМЯ(2013, 12, 31, 23, 59, 59) КАК ЗаСекундуДоНовогоГода" ); ВыполнитьЗапросИВывестиНаФорму(Запрос); КонецПроцедуры /// Функции работы с датами в запросах в 1с 8.3, 8.2 &НаСервере Процедура ФункцииДляРаботыСДатамиВЗапросахНаСервере() // Как получить начало или конец периода в запросах 1С 8.3, 8.2 // НАЧАЛОПЕРИОДА(Дата, Период) // КОНЕЦПЕРИОДА(Дата, Период) // Как добавить сдвиг к дате в запросах 1С 8.3, 8.2 // ДОБАВИТЬКДАТЕ(Дата, Период, Количество) // Как вычислить разность между датами в запросах 1С 8.3, 8.2 // РАЗНОСТЬДАТ(Дата1, Дата2, Период) // Как вычислить квартал, месяц или день даты в запросах 1С 8.3, 8.2 // КВАРТАЛ(Дата), Месяц(Дата), День(Дата) // Период принимает одно из значений // Секунда // Минута // Час // День // Неделя // Декада // Месяц // Квартал // Полугодие // Год Запрос = Новый Запрос( "ВЫБРАТЬ | Ссылка, | ДОБАВИТЬКДАТЕ(Дата, Квартал, 1) КАК ПлюсКвартал, | РАЗНОСТЬДАТ(Дата, &ВыбДата, Месяц) КАК РазностьВМесяцах, | КВАРТАЛ(Дата) КАК Квартал, | МЕСЯЦ(Дата) КАК Месяц, | ДЕНЬ(Дата) КАК День |ИЗ | Документ.ПродажаЕды |ГДЕ | Дата МЕЖДУ | НАЧАЛОПЕРИОДА(&ВыбДата, Год) И | КОНЕЦПЕРИОДА(&ВыбДата, Год)" ); Запрос.УстановитьПараметр("ВыбДата", '20140601'); ВыполнитьЗапросИВывестиНаФорму(Запрос); КонецПроцедуры /// Как в запросе указать значение поля предопределенной записи /// одной из таблиц в 1с 8. 3, 8.2 &НаСервере Процедура КакУказатьПредопределенноеЗначениеВЗапросеНаСервере() // К примеру, требуется вывести только тех котрагентов, у которых // значение поля Пол равно значению перечисления Мужской. Запрос = Новый Запрос( "ВЫБРАТЬ | Наименование, | Пол |ИЗ | Справочник.Контрагенты |ГДЕ | Пол = ЗНАЧЕНИЕ(Перечисление.Пол.Мужской) |" ); ВыполнитьЗапросИВывестиНаФорму(Запрос); // Или требуется выбрать проводки по дебету бухгалтерского счёта 50.01, // обратившись к нему через предопределенное имя КассаОрганизации. Запрос = Новый Запрос( "ВЫБРАТЬ | СчетДт, | СчетКт, | Сумма |ИЗ | РегистрБухгалтерии.Хозрасчетный |ГДЕ | СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.КассаОрганизации)" ); ВыполнитьЗапросИВывестиНаФорму(Запрос); КонецПроцедуры /// Как использовать условный оператор выбора в запросе в 1с 8.3, 8.2 &НаСервере Процедура КакИспользоватьУсловныйОператорВыбораВЗапросеНаСервере() // При помощи условного оператора выбора добавим // в результат запроса новое поле описывающее // количество жира в продукте. Запрос = Новый Запрос( "ВЫБРАТЬ | Наименование, | Жиры, | ВЫБОР | КОГДА Жиры = 0 ТОГДА | ""Здесь жира нет"" | КОГДА Жиры < 10 ТОГДА | ""Средняя жирность"" | ИНАЧЕ | ""Очень жирный продукт"" | | КОНЕЦ КАК ОписаниеЖирности | ИЗ | Справочник.Номенклатура |" ); ВыполнитьЗапросИВывестиНаФорму(Запрос); КонецПроцедуры /// Как в запросе проверить поле на соответствие ссылочному типу /// в 1с 8.3, 8.2 &НаСервере Процедура КакВЗапросеПроверитьПолеНаСсылочныйТипНаСервере() // Сделаем отбор только тех бухгалтерских проводок, у которых // регистратором является документ типа "ПродажаЕды" Запрос = Новый Запрос( "ВЫБРАТЬ | Регистратор, | СчетДт, | СчетКт, | Сумма |ИЗ | РегистрБухгалтерии. // К примеру, выберем контрагентов, которые содержат // слова, оканчивающиеся на "ов ". Запрос = Новый Запрос( "ВЫБРАТЬ | Наименование |ИЗ | Справочник.Контрагенты |ГДЕ | Наименование ПОДОБНО ""%_[о][в][ ]%""" ); ВыполнитьЗапросИВывестиНаФорму(Запрос); КонецПроцедуры /// Как проверить в запросе на отсутствие поля (то есть значение NULL) /// в 1с 8.3, 8.2 &НаСервере Процедура КакВЗапросеПроверитьПолеНаNULLНаСервере() // Ну, например, выберем из справочника Контрагенты только // те элементы, у которых нет поля "Пол" (очевидно, что // такими элементами окажутся группы). Запрос = Новый Запрос( "ВЫБРАТЬ | Наименование, | Пол |ИЗ | Справочник.Контрагенты |ГДЕ | Пол ЕСТЬ NULL" ); ВыполнитьЗапросИВывестиНаФорму(Запрос); // Обратите внимание, что сюда не попали элементы, // у которых это поле есть, но просто не заполнено. КонецПроцедуры /// Как в запросе проверить и заменить NULL на другое значение в 1с 8.3, 8.2 &НаСервере Процедура КакВЗапросеЗаменитьNULLНаДругоеЗначениеНаСервере() // Добавим в предыдущем примере вывод фразы "NULL", если // Пол ЕСТЬ NULL. Запрос = Новый Запрос( "ВЫБРАТЬ | Наименование, | ЕСТЬNULL(Пол, ""NULL"") |ИЗ | Справочник.Контрагенты" ); ВыполнитьЗапросИВывестиНаФорму(Запрос); КонецПроцедуры /// Как получить пустую ссылку в запросе в 1с 8.3, 8.2 &НаСервере Процедура КакВЗапросеПолучитьПустуюСсылкуНаСервере() // Получим только тех контрагентов, у которых поле Пол есть, // но оно не заполнено. Запрос = Новый Запрос( "ВЫБРАТЬ | Наименование, | Пол |ИЗ | Справочник.Контрагенты |ГДЕ | Пол = ЗНАЧЕНИЕ(Перечисление.Пол.ПустаяСсылка)" ); ВыполнитьЗапросИВывестиНаФорму(Запрос); // аналогично пишутся // ЗНАЧЕНИЕ(Справочник. Контрагенты.ПустаяСсылка) // ЗНАЧЕНИЕ(Документ.ПродажаЕды.ПустаяСсылка) // и т.д. КонецПроцедуры /// Как использовать значение Неопределено в запросе /// в 1с 8.3, 8.2 &НаСервере Процедура КакВЗапросеИспользоватьНеопределеноНаСервере() // Значение данного типа применяются, когда необходимо // использовать пустое значение, не принадлежащее ни к // одному другому типу. // Например, такое значение изначально имеют реквизиты // с составным типом значения. // Для примера отберём только те города, у которых // не заполнено поле ОтличительныйПризнак (оно имеет // составной тип). Запрос = Новый Запрос( "ВЫБРАТЬ | Наименование, | ОтличительныйПризнак |ИЗ | Справочник.Города |ГДЕ | ОтличительныйПризнак = Неопределено" ); ВыполнитьЗапросИВывестиНаФорму(Запрос); КонецПроцедуры /// Скачать и выполнить эти примеры на компьютере |
Срез последних | e-1c.ru
Для периодических регистров сведений доступны две виртуальные таблицы: СрезПервых и СрезПоследних Рассмотрим работу с этими виртуальными таблицами с использованием языка запросов 1С. Гораздо чаще применяется СрезПоследних, поэтому с него и начнем.
Срез последних позволяет получить последнюю запись регистра сведений на указанную дату в разрезе измерений. Для таблицы среза последних(первых) есть возможность в скобках указать два параметра через запятую. В первом параметре передается дата на которую делается срез (если параметр не указан срез делается на текущую дату). Второй параметр представляет из себя условие на языке запросов 1С и позволяет устанавливать различные отборы. Как правило в этих отборах используются измерения. Все это звучит достаточно туманно, поэтому без примера никак не обойтись.
Итак пусть у нас есть периодический регистр сведений Цена в котором храняться цены в разрезе товаров и поставщиков. Периодичность регистра — день.
В регистре имеются следующие записи
Период | Товар | Поставщик | Сумма
01.01.2017 | Карандаш | ООО «Леспром» | 10
25.01.2017 | Карандаш | ООО «Леспром» | 15
01.01.2017 | Карандаш | ПАО «Канцтовары» | 27
01.02.2017 | Карандаш | ПАО «Канцтовары» | 31
03.01.2017 | Ручка | ПАО «Канцтовары» | 137
01.02.2017 | Ручка | ПАО «Канцтовары» | 145
Для начала получим срез последних без использования параметров выполнив вот такой запрос
ВЫБРАТЬ ЦенаСрезПоследних.Период КАК Период, ЦенаСрезПоследних.Товар КАК Товар, ЦенаСрезПоследних.Поставщик КАК Поставщик, ЦенаСрезПоследних.Сумма КАК Сумма ИЗ РегистрСведений.Цена.СрезПоследних КАК ЦенаСрезПоследних
Так как параметры не указаны срез выполняется на текущую дату – 01.02.2017. В результате получаем вот такую таблицу
Период | Товар | Поставщик | Сумма
25.01.2017 | Карандаш | ООО «Леспром» | 15
01.02.2017 | Карандаш | ПАО «Канцтовары» | 31
01.02.2017 | Ручка | ПАО «Канцтовары» | 145
Здесь мы видим, что комбинация измерений Товар + Поставщик уникальна, т.е. для каждой комбинации измерений регистра была взята запись с максимальной датой, и дата записи меньше или равна текущей дате.
Допустим нам надо сделать то же самое но записи мы хотим получить с датой меньшей или равной 15.01.2017. Для этого необходимо в запросе изменить строку с таблицей среза последних следующим образом
ИЗ РегистрСведений.Цена.СрезПоследних(&ДатаСреза, ) КАК ЦенаСрезПоследних
Перед выполнением запроса в него конечно же надо передать параметр &ДатаСреза. Теперь результат запроса будет выглядеть так
Период | Товар | Поставщик | Сумма
01.01.2017 | Карандаш | ООО «Леспром» | 10
01.01.2017 | Карандаш | ПАО «Канцтовары» | 27
03.01.2017 | Ручка | ПАО «Канцтовары» | 137
И наконец представим, что нам надо получить срез последних на ту же дату с условием, что товар у нас Карандаш, а поставщик Канцтовары. Для этого укажем в запросе второй параметр
ИЗ РегистрСведений.Цена.СрезПоследних( &ДатаСреза, Товар = &Товар И Поставщик = &Поставщик) КАК ЦенаСрезПоследних
В итоге получим только одну запись
Период | Товар | Поставщик | Сумма
01.01.2017 | Карандаш | ПАО «Канцтовары» | 27
Чтобы не запутаться во всех этих скобочках и запятых, лучше воспользоваться конструктором запросов. Покажу на примере последнего запроса.
После выбора в конструкторе запроса таблицы со срезом последних необходимо нажать на кнопку Параметры виртуальной таблицы и в открывшемся окне прописать
Нетрудно догадаться, что для среза первых принцип действия такой же за исключением того, что выбирается первая запись после даты среза.
Функции Google BigQuery — подробный обзор
Чем больше информации накапливает бизнес, тем острее встает вопрос, где ее хранить. Если у вас нет возможности или желания содержать собственные серверы, выручит Google BigQuery. Это быстрое, экономичное и масштабируемое хранилище для работы с Big Data, в котором можно писать запросы с помощью SQL-like синтаксиса, стандартных и пользовательских функций (User-defined function).
В этой статье мы рассмотрим основные функции BigQuery и покажем их возможности на конкретных примерах. Вы узнаете, как писать базовые запросы, и сможете опробовать их на demo данных.
Стройте отчеты на данных GBQ без технической подготовки и знаний SQL
Вам регулярно нужны отчеты по рекламным кампаниям, но нет времени изучать SQL? C OWOX BI Smart Data вам не нужно разбираться в структуре данных. Просто выберите в конструкторе отчетов параметры и показатели, которые хотите видеть в отчете. Сервис мгновенно выдаст в ответ понятный график и таблицу.
Содержание
Что такое SQL и какие у него диалекты
SQL (Structured Query Language) — язык структурированных запросов для работы с базами данных. С его помощью можно получать, добавлять в базу и изменять большие массивы данных. Google BigQuery поддерживает два диалекта: Standard SQL и устаревший Legacy SQL.
Какой диалект выбрать, зависит от ваших предпочтений, но Google рекомендует использовать Standard SQL, так как он обладает преимуществами:
- Гибкость и функциональность при работе с вложенными и повторяющимися полями.
- Поддержка языков DML и DDL, которые позволяют менять данные в таблицах, а также управлять таблицами и представлениями в GBQ.
- Скорость обработки больших объемов данных выше, чем у Legasy SQL.
- Поддержка всех текущих и будущих обновлений в BigQuery.
Подробнее о разнице между диалектами вы можете узнать в справке.
Читайте также: в чем преимущества нового SQL-диалекта Google BigQuery перед старым, и какие бизнес-задачи вы сможете решать с его помощью.
По умолчанию запросы в Google BigQuery запускаются на Legacy SQL.
Переключиться на Standard SQL можно несколькими способами:
- В интерфейсе BigQuery в окне редактирования запроса выберите «Show Options» и снимите галочку возле опции «Use Legacy SQL»:
- Перед запросом добавьте строку #standardSQL и начните запрос с новой строки:
С чего начать
Чтобы вы могли параллельно тренироваться и запускать запросы вместе с нами, мы подготовили таблицу с demo данными. Заполните форму, и мы пришлем таблицу вам на email.
Скачайте demo данные и загрузите их в ваш проект Google BigQuery. Проще всего это сделать с помощью аддона OWOX BI BigQuery Reports.
- Установите аддон.
- Откройте таблицу, которую вы сохранили в Google Sheets, и в разделе «Дополнения» выберите «OWOX BI BigQuery Reports» — «Upload Data to BigQuery»:
- В появившемся окне выберите ваш проект Google BigQuery, набор данных (dataset) и придумайте название таблицы, в которой будут храниться загружаемые данные.
- Укажите формат загружаемых данных, как показано на скриншоте:
Если у вас еще нет проекта в GBQ, создайте его. Для этого понадобится активный биллинг-аккаунт в Google Cloud Platform. Пусть вас не пугает, что нужно привязать банковскую карту — без вашего ведома ничего с нее не спишется. Кроме того, при регистрации вы получите 300$ на 12 месяцев, который сможете потратить на хранение и обработку данных.
OWOX BI поможет вам объединить в BigQuery данные из разных систем: действия пользователей на сайте, звонки и заказы из CRM, email-рассылки и расходы на рекламу. Вы сможете настроить сквозную аналитику и автоматизировать отчеты любой сложности.
Прежде, чем переходить к функциям Google BigQuery, давайте вспомним, как выглядят базовые запросы в зависимости от диалекта:
Вопросы | Legacy SQL | Standard SQL |
---|---|---|
Какие поля выбрать из таблицы | SELECT field1,field2 | SELECT field1,field2 |
Из какой таблицы выбрать поля | FROM [projectID:dataSet.tableName] | FROM `projectID.dataSet.tableName` |
По какому параметру отфильтровать значения | WHERE field1=value | WHERE field1=value |
По каким полям сгруппировать результаты | GROUP BY field1, field2 | GROUP BY field1, field2 |
В каком порядке сортировать результаты | ORDER BY field1 ASC (по возрастанию) или DESC (по убыванию) | ORDER BY field1 ASC (по возрастанию) или DESC (по убыванию) |
Функции Google BigQuery
При построении запросов чаще всего используются следующие группы функций: Aggregate function, Date function, String function и Window function. Рассмотрим каждую группу подробнее.
Читайте также: как начать работу с облачным хранилищем — создаем набор данных и таблицы, настраиваем импорт и экспорт данных в Google BigQuery.
Функции агрегирования данных (Aggregate function)
Функции агрегирования позволяют получить сводные значения по всей таблице. Например, рассчитать средний чек, суммарный доход за месяц или выделить сегмент пользователей, совершивших максимальное количество покупок.
В таблице мы привели самые популярные функции из этого раздела:
Legacy SQL | Standard SQL | Что делает функция |
---|---|---|
AVG(field) | AVG([DISTINCT] (field)) | Возвращает среднее значение столбца field.В Standard SQL при добавлении условия DISTINCT среднее считается только для строк с уникальными (не повторяющимися) значениями из столбца field |
MAX(field) | MAX(field) | Возвращает максимальное значение из столбца field |
MIN(field) | MIN(field) | Возвращает минимальное значение из столбца field |
SUM(field) | SUM(field) | Возвращает сумму значений из столбца field |
COUNT(field) | COUNT(field) | Возвращает количество строк в столбце field |
EXACT_COUNT_DISTINCT(field) | COUNT([DISTINCT] (field)) | Возвращает количество уникальных строк в столбце field |
С перечнем всех функций вы можете ознакомиться в справке: Legacy SQL и Standard SQL.
Давайте посмотрим на примере demo данных, как работают перечисленные функции. Вычислим средний доход по транзакциям, покупки с наибольшей и наименьшей суммой, общий доход и количество всех транзакций. Чтобы проверить, не дублируются ли покупки, рассчитаем также количество уникальных транзакций. Для этого пишем запрос, в котором указываем название своего Google BigQuery проекта, набора данных и таблицы.
#legasy SQL
SELECT
AVG(revenue) as average_revenue,
MAX(revenue) as max_revenue,
MIN(revenue) as min_revenue,
SUM(revenue) as whole_revenue,
COUNT(transactionId) as transactions,
EXACT_COUNT_DISTINCT(transactionId) as unique_transactions
FROM
[owox-analytics:t_kravchenko. Demo_data]
SELECT
AVG(revenue) as average_revenue,
MAX(revenue) as max_revenue,
MIN(revenue) as min_revenue,
SUM(revenue) as whole_revenue,
COUNT(transactionId) as transactions,
COUNT(DISTINCT(transactionId)) as unique_transactions
FROM
`owox-analytics.t_kravchenko.Demo_data`
В итоге получаем такие результаты:
Проверить результаты расчетов вы можете в исходной таблице с demo данными, используя стандартные функции Google Sheets (SUM, AVG и другие) или сводные таблицы.
Как видим из скриншота выше, количество транзакций и уникальных транзакций отличается. Это говорит о том, что в нашей таблице есть 2 транзакции, у которых дублируется transactionId:
Поэтому, если вас интересуют именно уникальные транзакции, используйте функцию, которая считает уникальные строки. Либо вы можете сгруппировать данные с помощью выражения GROUP BY, чтобы избавиться от дублей перед тем, как применять функцию агрегации.
Функции для работы с датами (Date function)
Эти функции позволяют обрабатывать даты: менять их формат, выбирать необходимую часть (день, месяц или год), смещать дату на определенный интервал.
Они могут вам пригодится в следующих случаях:
- При настройке сквозной аналитики — чтобы привести даты и время из разных источников к единому формату.
- При создании автоматически обновляемых отчетов или триггерных рассылок. Например, когда нужны данные за последние 2 часа, неделю или месяц.
- При создании когортных отчетов, в которых необходимо получить данные в разрезе дней, недель, месяцев.
Функции для работы с датами, используемые чаще всего:
Legacy SQL | Standard SQL | Описание функции |
---|---|---|
CURRENT_DATE() | CURRENT_DATE() | Возвращает текущую дату в формате %ГГГГ-%ММ-%ДД |
DATE(timestamp) | DATE(timestamp) | Преобразует дату из формата %ГГГГ-%ММ-%ДД %Ч:%M:%С. в формат %ГГГГ-%ММ-%ДД |
DATE_ADD(timestamp, interval, interval_units) | DATE_ADD(timestamp, INTERVAL interval interval_units) | Возвращает дату timestamp, увеличивая ее на указанный интервал interval.interval_units. В Legacy SQL может принимать значения YEAR, MONTH, DAY, HOUR, MINUTE и SECOND, а в Standard SQL — YEAR, QUARTER, MONTH, WEEK, DAY |
DATE_ADD(timestamp, — interval, interval_units) | DATE_SUB(timestamp, INTERVAL interval interval_units) | Возвращает дату timestamp, уменьшая ее на указанный интервал interval |
DATEDIFF(timestamp1, timestamp2) | DATE_DIFF(timestamp1, timestamp2, date_part) | Возвращает разницу между двумя датами timestamp1 и timestamp2. В Legacy SQL возвращает разницу в днях, а в Standard SQL — в зависимости от указанного значения date_part (день, неделя, месяц, квартал, год) |
DAY(timestamp) | EXTRACT(DAY FROM timestamp) | Возвращает день из даты timestamp. Принимает значения от 1 до 31 включительно |
MONTH(timestamp) | EXTRACT(MONTH FROM timestamp) | Возвращает порядковый номер месяца из даты timestamp. Принимает значения от 1 до 12 включительно |
YEAR(timestamp) | EXTRACT(YEAR FROM timestamp) | Возвращает год из даты timestamp |
Список всех функций вы найдете в справке: Legacy SQL и Standard SQL.
Рассмотрим на demo данных, как работает каждая из приведенных функций. К примеру, получим текущую дату, приведем дату из исходной таблицы в формат %ГГГГ-%ММ-%ДД, отнимем и прибавим к ней по одному дню. Затем рассчитаем разницу между текущей датой и датой из исходной таблицы и разобьем текущую дату отдельно на год, месяц и день. Для этого вы можете скопировать примеры запросов ниже и заменить в них название проекта, набора данных и таблицы с данными на свои.
#legasy SQL
SELECT
CURRENT_DATE() AS today,
DATE( date_UTC ) AS date_UTC_in_YYYYMMDD,
DATE_ADD( date_UTC,1, 'DAY') AS date_UTC_plus_one_day,
DATE_ADD( date_UTC,-1, 'DAY') AS date_UTC_minus_one_day,
DATEDIFF(CURRENT_DATE(), date_UTC ) AS difference_between_date,
DAY( CURRENT_DATE() ) AS the_day,
MONTH( CURRENT_DATE()) AS the_month,
YEAR( CURRENT_DATE()) AS the_year
FROM
[owox-analytics:t_kravchenko. Demo_data]
SELECT
today,
date_UTC_in_YYYYMMDD,
DATE_ADD( date_UTC_in_YYYYMMDD, INTERVAL 1 DAY) AS date_UTC_plus_one_day,
DATE_SUB( date_UTC_in_YYYYMMDD,INTERVAL 1 DAY) AS date_UTC_minus_one_day,
DATE_DIFF(today, date_UTC_in_YYYYMMDD, DAY) AS difference_between_date,
EXTRACT(DAY FROM today ) AS the_day,
EXTRACT(MONTH FROM today ) AS the_month,
EXTRACT(YEAR FROM today ) AS the_year
FROM (
SELECT
CURRENT_DATE() AS today,
DATE( date_UTC ) AS date_UTC_in_YYYYMMDD
FROM
`owox-analytics.t_kravchenko.Demo_data`)
После применения запроса вы получите вот такой отчет:
Читайте также: примеры отчетов, которые можно построить с помощью SQL-запросов к данным в Google BigQuery. А также, какими уникальными метриками можно дополнить данные Google Analytics благодаря OWOX BI.
Функции для работы со строками (String function)
Строковые функции позволяют формировать строку, выделять и заменять подстроки, рассчитывать длину строки и порядковый номер индекса подстроки в исходной строке. Например, с их помощью вы можете:
- Сделать в отчете фильтры по UTM-меткам, которые передаются в URL страницы.
- Привести данные к единому формату, если название источников и кампании написаны в разных регистрах.
- Заменить некорректные данные в отчете, к примеру, если название кампании передалось с опечаткой.
Самые популярные функции для работы со строками:
Legacy SQL | Standard SQL | Описание функции |
---|---|---|
CONCAT(‘str1’, ‘str2’) или’str1’+ ‘str2’ | CONCAT(‘str1’, ‘str2’) | Объединяет несколько строк ‘str1’ и ‘str2’ в одну |
‘str1’ CONTAINS ‘str2’ | REGEXP_CONTAINS(‘str1’, ‘str2’) или ‘str1’ LIKE ‘%str2%’ | Возвращает true если строка ‘str1’ содержит строку ‘str2’. В Standard SQL строка ‘str2’ может быть записана в виде регулярного выражения с использованием библиотеки re2 |
LENGTH(‘str’ ) | CHAR_LENGTH(‘str’ ) или CHARACTER_LENGTH(‘str’ ) | Возвращает длину строки ‘str’ (количество символов в строке) |
SUBSTR(‘str’, index [, max_len]) | SUBSTR(‘str’, index [, max_len]) | Возвращает подстроку длиной max_len, начиная с символа с индексом index из строки ‘str’ |
LOWER(‘str’) | LOWER(‘str’) | Приводит все символы строки ‘str’ к нижнему регистру |
UPPER(str) | UPPER(str) | Приводит все символы строки ‘str’ к верхнему регистру |
INSTR(‘str1’, ‘str2’) | STRPOS(‘str1’, ‘str2’) | Возвращает индекс первого вхождения строки ‘str2’ в строку ‘str1’, иначе — 0 |
REPLACE(‘str1’, ‘str2’, ‘str3’) | REPLACE(‘str1’, ‘str2’, ‘str3’) | Заменяет в строке ‘str1’ подстроку ‘str2’ на подстроку ‘str3’ |
Детальнее со всеми строковыми функциями вы можете ознакомиться в справке: Legacy SQL и Standard SQL.
Разберем на примере demo данных, как использовать описанные функции. Предположим, у нас есть 3 отдельных столбца, которые содержат значения дня, месяца и года:
Работать с датой в таком формате не очень удобно, поэтому объединим ее в один столбец. Чтобы сделать это, используйте SQL-запросы, приведенные ниже, и не забудьте подставить в них название своего проекта, набора данных и таблицы в Google BigQuery.
#legasy SQL
SELECT
CONCAT(the_day,'-',the_month,'-',the_year) AS mix_string1,
the_day+'-'+the_month+'-'+the_year AS mix_string2
FROM (
SELECT
`31` AS the_day,
`12` AS the_month,
`2018` AS the_year
FROM
[owox-analytics:t_kravchenko.Demo_data])
GROUP BY
mix_string1,
mix_string2
SELECT
CONCAT(the_day,'-',the_month,'-',the_year) AS mix_string1
FROM (
SELECT
ཛ' AS the_day,
' AS the_month,
' AS the_year
FROM
`owox-analytics. t_kravchenko.Demo_data`)
GROUP BY
mix_string1
После выполнения запроса мы получим дату в одном столбце:
Часто при загрузке определенной страницы на сайте в URL записываются значения переменных, которые выбрал пользователь. Это может быть способ оплаты или доставки, номер транзакции, индекс физического магазина, в котором покупатель хочет забрать товар и т. д. С помощью SQL-запроса можно выделить эти параметры из адреса страницы. Рассмотрим два примера, как и зачем это делать.
Пример 1. Предположим, мы хотим узнать количество покупок, при которых пользователи забирают товар из физических магазинов. Для этого нужно посчитать количество транзакций, отправленных со страниц, в URL которых есть подстрока shop_id (индекс физического магазина). Делаем это с помощью следующих запросов:
#legasy SQL
SELECT
COUNT(transactionId) AS transactions,
check
FROM (
SELECT
transactionId,
page CONTAINS 'shop_id' AS check
FROM
[owox-analytics:t_kravchenko.Demo_data])
GROUP BY
check
SELECT
COUNT(transactionId) AS transactions,
check1,
check2
FROM (
SELECT
transactionId,
REGEXP_CONTAINS( page, 'shop_id') AS check1,
page LIKE '%shop_id%' AS check2
FROM
`owox-analytics.t_kravchenko.Demo_data`)
GROUP BY
check1,
check2
Из полученной в результате таблицы мы видим, что со страниц, содержащих shop_id, отправлено 5502 транзакции (check = true):
Пример 2. Допустим, вы присвоили каждому способу доставки свой delivery_id и прописываете значение этого параметра в URL страницы. Чтобы узнать, какой способ доставки выбрал пользователь, нужно выделить delivery_id в отдельный столбец.
Используем для этого следующие запросы:
#legasy SQL
SELECT
page_lower_case,
page_length,
index_of_delivery_id,
selected_delivery_id,
REPLACE(selected_delivery_id, 'selected_delivery_id=', '') as delivery_id
FROM (
SELECT
page_lower_case,
page_length,
index_of_delivery_id,
SUBSTR(page_lower_case, index_of_delivery_id) AS selected_delivery_id
FROM (
SELECT
page_lower_case,
LENGTH(page_lower_case) AS page_length,
INSTR(page_lower_case, 'selected_delivery_id') AS index_of_delivery_id
FROM (
SELECT
LOWER( page) AS page_lower_case,
UPPER( page) AS page_upper_case
FROM
[owox-analytics:t_kravchenko. Demo_data])))
ORDER BY
page_lower_case ASC
SELECT
page_lower_case,
page_length,
index_of_delivery_id,
selected_delivery_id,
REPLACE(selected_delivery_id, 'selected_delivery_id=', '') AS delivery_id
FROM (
SELECT
page_lower_case,
page_length,
index_of_delivery_id,
SUBSTR(page_lower_case, index_of_delivery_id) AS selected_delivery_id
FROM (
SELECT
page_lower_case,
CHAR_LENGTH(page_lower_case) AS page_length,
STRPOS(page_lower_case, 'selected_delivery_id') AS index_of_delivery_id
FROM (
SELECT
LOWER( page) AS page_lower_case,
UPPER( page) AS page_upper_case
FROM
`owox-analytics.t_kravchenko.Demo_data`)))
ORDER BY
page_lower_case ASC
В результате получим в Google BigQuery такую таблицу:
Функции для работы с подмножествами данных или оконные функции (Window function)
Эти функции похожи на функции агрегирования, которые мы рассмотрели выше. Их основное отличие заключается в том, что вычисления проводятся не на всем множестве данных, выбранных с помощью запроса, а на его части — подмножестве или окне.
С помощью оконных функций вы можете агрегировать данные в разрезе групп, не используя оператор JOIN для объединения нескольких запросов. Например, рассчитать средний доход в разрезе рекламных кампаний, количество транзакций в разрезе устройств. Добавив еще одно поле в отчет, вы сможете легко узнать, к примеру, долю дохода от рекламной кампании на Black Friday или долю транзакций, сделанных из мобильного приложения.
Вместе с каждой функцией в запросе необходимо прописывать выражение OVER, которое определяет границы окна. OVER содержит 3 компоненты, с которыми вы можете работать:
- PARTITION BY — определяет признак, по которому вы будете делить исходные данные на подмножества, например PARTITION BY clientId, DayTime.
- ORDER BY — определяет порядок строк в подмножестве, например ORDER BY hour DESC.
- WINDOW FRAME — позволяет обрабатывать строки внутри подмножества по определенному признаку. Например, можно посчитать сумму не всех строк в окне, а только первых пяти перед текущей строкой.
В этой таблице мы собрали оконные функции, используемые чаще всего:
Legacy SQL | Standard SQL | Описание функции |
---|---|---|
AVG(field) COUNT(field) COUNT(DISTINCT field) MAX() MIN() SUM() | AVG([DISTINCT] (field)) COUNT(field) COUNT([DISTINCT] (field)) MAX(field) MIN(field) SUM(field) | Возвращает среднее значение, количество, максимальное, минимальное и суммарное значение из столбца field в рамках выбранного подмножества. DISTINCT используется, если нужно посчитать только уникальные (неповторяющиеся) значения |
DENSE_RANK() | DENSE_RANK() | Возвращает номер строки в рамках подмножества |
FIRST_VALUE(field) | FIRST_VALUE (field[{RESPECT | IGNORE} NULLS]) | Возвращает значение первой строки из столбца field в рамках подмножества. По умолчанию строки с пустыми значениями из столбца field включаются в расчет. RESPECT или IGNORE NULLS определяет, включать или игнорировать строки со значением NULL |
LAST_VALUE(field) | LAST_VALUE (field [{RESPECT | IGNORE} NULLS]) | Возвращает значение последней строки из столбца field в рамках подмножества. По умолчанию строки с пустыми значениями из столбца field включаются в расчет. RESPECT или IGNORE NULLS определяет, включать или игнорировать строки со значением NULL |
LAG(field) | LAG (field[, offset [, default_expression]]) | Возвращает значение предыдущей строки по отношению к текущей из столбца field в рамках подмножества. Offset определяет количество строк, на которое необходимо смещаться вниз по отношению к текущей строке. Является целым числом. Default_expression — значение, которое будет возвращать функция, если в рамках подмножества нет необходимой строки |
LEAD(field) | LEAD (field[, offset [, default_expression]]) | Возвращает значение следующей строки по отношению к текущей из столбца field в рамках подмножества. Offset определяет количество строк, на которое необходимо смещаться вверх по отношению к текущей строке. Является целым числом. Default_expression — значение, которое будет возвращать функция, если в рамках текущего подмножества нет необходимой строки |
Список всех функций вы можете посмотреть в справке для Legacy SQL и для Standard SQL: Aggregate Analytic Functions, Navigation Functions.
Пример 1. Допустим, мы хотим проанализировать активность покупателей в рабочее и нерабочее время. Для этого необходимо разделить транзакции на 2 группы и рассчитать интересующие нас метрики:
- 1 группа — покупки в рабочее время с 9:00 до 18:00 часов.
- 2 группа — покупки в нерабочее время с 00:00 до 9:00 и с 18:00 до 00:00.
Кроме рабочего и нерабочего времени, еще одним признаком для формирования окна будет clientId, то есть на каждого пользователя у нас получится по два окна:
Подмножество (окно) | clientId | DayTime |
---|---|---|
1 окно | clientId 1 | Рабочее время |
2 окно | clientId 2 | Нерабочее время |
3 окно | clientId 3 | Рабочее время |
4 окно | clientId 4 | Нерабочее время |
N окно | clientId N | Рабочее время |
N+1 окно | clientId N+1 | Нерабочее время |
Давайте на demo данных рассчитаем средний, максимальный, минимальный, и суммарный доход, количество транзакций и количество уникальных транзакций по каждому пользователю в рабочее и нерабочее время. Сделать это нам помогут запросы, приведенные ниже.
#legasy SQL
SELECT
date,
clientId,
DayTime,
avg_revenue,
max_revenue,
min_revenue,
sum_revenue,
transactions,
unique_transactions
FROM (
SELECT
date,
clientId,
DayTime,
AVG(revenue) OVER (PARTITION BY date, clientId, DayTime) AS avg_revenue,
MAX(revenue) OVER (PARTITION BY date, clientId, DayTime) AS max_revenue,
MIN(revenue) OVER (PARTITION BY date, clientId, DayTime) AS min_revenue,
SUM(revenue) OVER (PARTITION BY date, clientId, DayTime) AS sum_revenue,
COUNT(transactionId) OVER (PARTITION BY date, clientId, DayTime) AS transactions,
COUNT(DISTINCT(transactionId)) OVER (PARTITION BY date, clientId, DayTime) AS unique_transactions
FROM (
SELECT
date,
date_UTC,
clientId,
transactionId,
revenue,
page,
hour,
CASE
WHEN hour>=9 AND hour<=18 THEN 'рабочее время'
ELSE 'нерабочее время'
END AS DayTime
FROM
[owox-analytics:t_kravchenko.Demo_data]))
GROUP BY
date,
clientId,
DayTime,
avg_revenue,
max_revenue,
min_revenue,
sum_revenue,
transactions,
unique_transactions
ORDER BY
transactions DESC
#standardSQL
SELECT
date,
clientId,
DayTime,
avg_revenue,
max_revenue,
min_revenue,
sum_revenue,
transactions,
unique_transactions
FROM (
SELECT
date,
clientId,
DayTime,
AVG(revenue) OVER (PARTITION BY date, clientId, DayTime) AS avg_revenue,
MAX(revenue) OVER (PARTITION BY date, clientId, DayTime) AS max_revenue,
MIN(revenue) OVER (PARTITION BY date, clientId, DayTime) AS min_revenue,
SUM(revenue) OVER (PARTITION BY date, clientId, DayTime) AS sum_revenue,
COUNT(transactionId) OVER (PARTITION BY date, clientId, DayTime) AS transactions,
COUNT(DISTINCT(transactionId)) OVER (PARTITION BY date, clientId, DayTime) AS unique_transactions
FROM (
SELECT
date,
date_UTC,
clientId,
transactionId,
revenue,
page,
hour,
CASE
WHEN hour>=9 AND hour<=18 THEN 'рабочее время'
ELSE 'нерабочее время'
END AS DayTime
FROM
`owox-analytics. t_kravchenko.Demo_data`))
GROUP BY
date,
clientId,
DayTime,
avg_revenue,
max_revenue,
min_revenue,
sum_revenue,
transactions,
unique_transactions
ORDER BY
transactions DESC
Посмотрим, что получилось в результате, на примере одного из пользователей с clientId=’102041117.1428132012′. В исходной таблице по этому пользователю у нас были следующие данные:
Применив запрос, мы получили отчет, который содержит средний, минимальный, максимальный и суммарный доход с этого пользователя, а также количество транзакций. Как видно на скриншоте ниже, обе транзакции пользователь совершил в рабочее время:
Пример 2. Теперь немного усложним задачу:
- Проставим порядковые номера для всех транзакций в окне в зависимости от времени их совершения. Напомним, что окно мы определяем по пользователю и рабочему / нерабочему времени.
- Выведем в отчет доход следующей / предыдущей транзакции (относительно текущей) в рамках окна.
- Выведем доход первой и последней транзакций в окне.
Для этого используем следующие запросы:
#legasy SQL
SELECT
date,
clientId,
DayTime,
hour,
rank,
revenue,
lead_revenue,
lag_revenue,
first_revenue_by_hour,
last_revenue_by_hour
FROM (
SELECT
date,
clientId,
DayTime,
hour,
DENSE_RANK() OVER (PARTITION BY date, clientId, DayTime ORDER BY hour) AS rank,
revenue,
LEAD( revenue, 1) OVER (PARTITION BY date, clientId, DayTime ORDER BY hour) AS lead_revenue,
LAG( revenue, 1) OVER (PARTITION BY date, clientId, DayTime ORDER BY hour) AS lag_revenue,
FIRST_VALUE(revenue) OVER (PARTITION BY date, clientId, DayTime ORDER BY hour) AS first_revenue_by_hour,
LAST_VALUE(revenue) OVER (PARTITION BY date, clientId, DayTime ORDER BY hour) AS last_revenue_by_hour
FROM (
SELECT
date,
date_UTC,
clientId,
transactionId,
revenue,
page,
hour,
CASE
WHEN hour>=9 AND hour<=18 THEN 'рабочее время'
ELSE 'нерабочее время'
END AS DayTime
FROM
[owox-analytics:t_kravchenko. Demo_data]))
GROUP BY
date,
clientId,
DayTime,
hour,
rank,
revenue,
lead_revenue,
lag_revenue,
first_revenue_by_hour,
last_revenue_by_hour
ORDER BY
date,
clientId,
DayTime,
hour,
rank,
revenue,
lead_revenue,
lag_revenue,
first_revenue_by_hour,
last_revenue_by_hour
SELECT
date,
clientId,
DayTime,
hour,
rank,
revenue,
lead_revenue,
lag_revenue,
first_revenue_by_hour,
last_revenue_by_hour
FROM (
SELECT
date,
clientId,
DayTime,
hour,
DENSE_RANK() OVER (PARTITION BY date, clientId, DayTime ORDER BY hour) AS rank,
revenue,
LEAD( revenue, 1) OVER (PARTITION BY date, clientId, DayTime ORDER BY hour) AS lead_revenue,
LAG( revenue, 1) OVER (PARTITION BY date, clientId, DayTime ORDER BY hour) AS lag_revenue,
FIRST_VALUE(revenue) OVER (PARTITION BY date, clientId, DayTime ORDER BY hour) AS first_revenue_by_hour,
LAST_VALUE(revenue) OVER (PARTITION BY date, clientId, DayTime ORDER BY hour) AS last_revenue_by_hour
FROM (
SELECT
date,
date_UTC,
clientId,
transactionId,
revenue,
page,
hour,
CASE
WHEN hour>=9 AND hour<=18 THEN 'рабочее время'
ELSE 'нерабочее время'
END AS DayTime
FROM
`owox-analytics.t_kravchenko.Demo_data`))
GROUP BY
date,
clientId,
DayTime,
hour,
rank,
revenue,
lead_revenue,
lag_revenue,
first_revenue_by_hour,
last_revenue_by_hour
ORDER BY
date,
clientId,
DayTime,
hour,
rank,
revenue,
lead_revenue,
lag_revenue,
first_revenue_by_hour,
last_revenue_by_hour
Результаты расчетов проверим на примере уже знакомого нам пользователя с clientId=’102041117.1428132012′:
Из скриншота выше мы видим, что:
- Первая транзакция была в 15:00, а вторая — в 16:00.
- После текущей транзакции в 15:00 была транзакция в 16:00, доход которой равен 25066 (столбец lead_revenue).
- Перед текущей транзакцией в 16:00 была транзакция в 15:00, доход которой равен 3699 (столбец lag_revenue).
- Первой в рамках окна была транзакция в 15:00, доход по которой равен 3699 (столбец first_revenue_by_hour).
- Запрос обрабатывает данные построчно, поэтому для рассматриваемой транзакции последней в окне будет она сама и значения в столбцах last_revenue_by_hour и revenue будут совпадать.
Полезные статьи о Google BigQuery:
Если вы хотите собирать несемплированные данные с сайта в Google BigQuery, но не знаете с чего начать, запишитесь на демо. Мы расскажем вам о всех возможностях, которые вы получите с BigQuery и OWOX BI.
Наши клиенты
растут на
22%
быстрее
Растите быстрее, анализируя, что лучше сработает в вашем маркетинге
Измеряйте KPI, находите зоны роста и увеличивайте свой ROI
Записаться на демо
Выводы
В этой статье мы рассмотрели самые популярные функции из разделов Aggregate function, Date function, String function, Window function. Однако в Google BigQuery есть еще много полезных функций, например:
- Casting functions — позволяют приводить данные к определенному формату.
- Table wildcard functions — позволяют обращаться к нескольким таблицам из набора данных.
- Regular expression functions — позволяют описывать модель поискового запроса, а не его точное значение.
О них мы обязательно еще напишем в нашем блоге, а пока вы можете опробовать на demo данных все функции, описанные в этой статье.
Использованные инструменты
Часто задаваемые вопросы
Открыть все
Закрыть все
Что такое SQL и какие у него диалекты?
SQL (Structured Query Language) — язык структурированных запросов для работы с базами данных. С его помощью можно получать, добавлять в базу и изменять большие массивы данных. Google BigQuery поддерживает два диалекта: Standard SQL и устаревший Legacy SQL.
org/Question»>Что можно делать с помощью основных функций BigQuery?
- Агрегировать данные с помощью Aggregate function.
- Обрабатывать даты с помощью Date function.
- Работать со строками с помощью String function.
- Проводить вычисления на отдельных частях данных (подмножествах) с помощью Window function.
Какие функции используются в Google BigQuery?
При построении SQL-запросов чаще всего используются следующие группы функций: Aggregate function, Date function, String function и Window function. В статье мы рассмотрели каждую группу подробнее.
Как в запросе 1C получить последний по дате документ? | SoftMaker.
Kz
Приветсвую вас, уважаемые читатели блога SoftMaker.kz! Использование запросов в 1С помогает справляться с различными задачами, которые возникают на практике. Мы уже рассматривали примеры запросов, связанных с соединением и объединением, а также пакетные запросы. Еще есть целая статья, которая посвящена теме запросов. А сегодня, с помощью примеров, мы рассмотрим, как получить последние документы в 1С запросе. Давайте начнем!
Для начала отсортируем документы по убыванию момента времени и используем конструкцию «ВЫБРАТЬ ПЕРВЫЕ 1»:
Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ ПЕРВЫЕ 1 | РеализацияТоваровУслуг.Ссылка |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг |ГДЕ | РеализацияТоваровУслуг.Контрагент = &Контрагент |УПОРЯДОЧИТЬ ПО | РеализацияТоваровУслуг.МоментВремени УБЫВ"; Запрос.УстановитьПараметр("Контрагент", Контрагент); РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл Возврат Выборка.Ссылка; КонецЦикла;
В результате запрос вернёт одну строку, с данными последнего документа по одному контрагенту. Мы берем не дату, так как в одну секунду может быть много документов, поэтому нельзя быть уверенным, что будет взят последний из этих документов. Поэтому в запросе нужно сортировать по моменту времени и отбор первого документа. Такой запрос вернет последний документ. Момент времени это сочитание даты документа и ссылки, поэтому можно написать и так:
Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ ПЕРВЫЕ 1 | РеализацияТоваровУслуг.Ссылка |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг |ГДЕ | РеализацияТоваровУслуг.Контрагент = &Контрагент |УПОРЯДОЧИТЬ ПО | РеализацияТоваровУслуг.Дата УБЫВ, | РеализацияТоваровУслуг.Ссылка УБЫВ"; Запрос.УстановитьПараметр("Контрагент", Контрагент); РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл Возврат Выборка. Ссылка; КонецЦикла;
А как сделать запрос, который вернёт последние документы по всем контрагентам, а не по одному конкретному? Используем функцию МАКСИМУМ в запросе для решения данной задачи:
Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | ПоследниеДокументыКонтрагентов.Ссылка, | ПоследниеДокументыКонтрагентов.Контрагент |ИЗ Документ.РеализацияТоваровУслуг КАК ПоследниеДокументыКонтрагентов |ВНУТРЕННЕЕ СОЕДИНЕНИЕ | (ВЫБРАТЬ | Доки.Контрагент КАК Контрагент, | МАКСИМУМ(Доки.Дата) КАК ДатаПоследнегоДокумента | ИЗ Документ.РеализацияТоваровУслуг КАК Доки |СГРУППИРОВАТЬ ПО Доки.Контрагент) |КАК ДатыПоследнихДокументовКонтрагентов |ПО ПоследниеДокументыКонтрагентов.Контрагент = |ДатыПоследнихДокументовКонтрагентов.Контрагент |И ПоследниеДокументыКонтрагентов.Дата = |ДатыПоследнихДокументовКонтрагентов.ДатаПоследнегоДокумента"; РезультатЗапроса = Запрос.Выполнить();
Этот запрос выбирает последние документы по всем контрагентам.
А как сделать запрос, который вернёт последние документы по всем номенклатурам и их ценам? Вот код:
"ВЫБРАТЬ | ПоследниеДокументыНоменклатуры.Ссылка КАК Ссылка, | ПоследниеДокументыНоменклатуры.Номенклатура КАК Номенклатура, | ПоследниеДокументыНоменклатуры.Цена КАК Цена |ИЗ | Документ.ПоступлениеТоваровУслуг.Товары КАК ПоследниеДокументыНоменклатуры | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | Доки.Номенклатура КАК Номенклатура, | МАКСИМУМ(Доки.Ссылка.Дата) КАК ДатаПоследнегоДокумента | ИЗ | Документ.ПоступлениеТоваровУслуг.Товары КАК Доки | | СГРУППИРОВАТЬ ПО | Доки.Номенклатура) КАК ДатыПоследнихДокументовНоменклатуры | ПО ПоследниеДокументыНоменклатуры.Номенклатура = ДатыПоследнихДокументовНоменклатуры.Номенклатура | И ПоследниеДокументыНоменклатуры.Ссылка.Дата = ДатыПоследнихДокументовНоменклатуры.ДатаПоследнегоДокумента"
Ниже вы можете посмотреть короткое видео (3 минуты), которое поможет в решении похожих на рассмотренную нами задачу:
youtube.com/embed/zCdc0Vd7qlo» frameborder=»0″ allow=»accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture» allowfullscreen=»»/>
Этот блог читают уже более 3000 человек — читай и ТЫ!
Обязательная маркировка товаров 2020 — 2021 — официальный сайт Честный ЗНАК
Аналог онлайн-кассы. Необходим в местах, где выводятся из оборота бесплатные ЛП.
Руководство пользователя для регистратора выбытия 1.0
Руководство пользователя для регистратора выбытия 2.0
Руководство пользователя для регистратора выбытия 3.0
Для организаций, участвующих в программе высокозатратных нозологий, заявка на регистратор выбытия доступна для заполнения в личном кабинете системы мониторинга оборота лекарственных препаратов с 1 июля 2019 года (согласно ППРФ № 1557 от 14.12.18). Для остальных участников оборота сроки подачи заявок будут определены отдельными нормативными актами.
Инструкция по оформлению заявки на регистратор выбытия
Регистраторы выбытия выдаются:
1) Медицинским организациям, а также всем организациям, имеющим медицинскую лицензию — в соответствии с количеством мест осуществления деятельности по оказанию медицинской помощи.
Кроме:
- медицинских организации, подведомственных Минобороны России;
- кабинетов врачебной помощи (медицинские кабинеты), расположенных в дошкольных образовательных организациях, общеобразовательных организациях, иных организациях, и являющиеся структурными подразделениями медицинской организации;
- обособленных структурных подразделений медицинских организаций, получающих лекарственные препараты, предназначенные для оказания медицинской помощи, из головной медицинской организации.
2) Аптекам, осуществляющим выдачу лекарственных препаратов по программе высокозатратных нозологий — по списку мест осуществления деятельности, задействованных в данной программе, согласованному Росздравнадзором.
3) Аптекам, осуществляющим отпуск лекарственных препаратов по льготе или по частичной льготе.
Кроме:
- аптечных организаций (аптеки, аптечные пункты, аптечные киоски), осуществляющих только розничную торговлю лекарственными препаратами.
Согласно п. 51 ППРФ1556 от 14.12.2018, оснащение будет производиться на основании типовой, утвержденной Министерством промышленности и торговли РФ формы договора.
Типовая форма договора по предоставлению регистратора выбытия
При автономном использовании регистратора выбытия (РВ) требуется только подключение к сети Интернет. Дополнительного программного обеспечения или оборудования не требуется.
При подключении РВ к компьютеру используется подключение к сети интернет, установленное на данном компьютере. Если на компьютере установлена информационная система (товаро-учетная система или ИС Вашей организации), умеющая управлять РВ (настроена интеграция методами API), то возможно использование сторонних 2D сканеров.
Если РВ подключен в локальную вычислительную сеть организации и не находится непосредственно на рабочем месте сотрудника, регистрирующего вывод ЛП из оборота, подключение к нему и его использование возможно с любого компьютера в локальной сети организации. При этом использование встроенного сканера кодов маркировки невозможно и такие рабочие места должны быть оснащены сканерами 2D-штрихкодов. Также возможно использование серийно выпускаемых терминалов сбора данных с последующей передачей информации в РВ. Данное использование РВ невозможно без установки на рабочих местах пользователей информационной системы, управляющей работой РВ.
Информация о результатах попытки вывода из оборота ЛП через РВ недоступна на самом РВ, ее можно увидеть только на компьютере, имеющем прямое подключение к МДЛП через личный кабинет участника оборота или в информационной системе участника оборота, интегрированной с ИС МДЛП и загружающей оттуда сведения.
Регистратор можно перепривязать на другое место деятельности, например, если текущее место деятельности закрылось, но у организации имеется другое.
Для осуществления перепривязки, обратитесь в службу поддержки [email protected] и предоставьте следующие данные:
-
Причина перепривязки - Идентификатор и адрес места деятельности, к которому привязан РВ на текущий момент
- Идентификатор и адрес места деятельности, на которое необходимо перепривязать РВ
- Серийный номер РВ
- Контактное лицо и номер телефона
Алгоритм использования регистратора выбытия (РВ) для медицинских организаций:
При работе РВ в автономном режиме (РВ подключен к сети интернет, интеграция с информационными системами не используется):
1. Сотрудник медицинской организации получает или создает документ-основание для регистрации вывода из оборота. Это может быть требование-накладная, акт списания при использовании для оказания медицинской помощи или любой другой документ в соответствии с внутренней учетной политикой участника оборота.
2. Входит в меню «Регистрация выбытия — Автономный режим — Прочее» (для РВ 1.0 и 2.0) или «Выбытие — Начать выбытие — Новый документ» (для РВ 3.0) и вводит реквизиты документа основания.
3. Подбирает упаковки лекарственных препаратов (ЛП) в соответствии с документом-основанием и сканирует коды маркировки (КМ). При сканировании КМ РВ выводит на экран результат локальной проверки кода маркировки, GTIN и серийный номер ЛП.
4. Завершив подбор ЛП, сотрудник выбирает действие «Завершить» (для РВ 1.0 и 2.0) или «Выбытие» (для РВ 3.0).
Если используется информационная система (ИС), интегрированная с ФГИС МДЛП и РВ, реквизиты документов основания вводятся в ИС и сканируются КМ с помощью сканера. Выбытие осуществляется через интерфейс ИС.
При использовании РВ создается документ на выбытие, выбирается тип выбытия (для мед применения или льготный рецепт), сканируются выбываемые лекарственные препараты. Затем сформированный документ отправляется на выбытие и РВ формирует и передает в ИС МДЛП схему 10531 (при выборе типа для мед применения) или 10521 (при выборе типа льготный рецепт).
Установка сторонних мобильных приложений на регистраторы выбытия не предусмотрена.Согласно пункту договора на предоставление регистратора выбытия 2.5.2. Г «Участник не имеет права без письменного согласия Оператора осуществлять вмешательство в программную и аппаратную часть Оборудования, вскрытие корпуса Оборудования, нарушение целостности разъёмов, интерфейсных кабелей, подключение к Оборудованию каких-либо устройств кроме тех, для подключения к которым Оборудование непосредственно предназначено».
Регистратор выбытия (далее — РВ) предназначен для отправки в ИС МДЛП информации о выводе лекарственных препаратов из оборота при отпуске лекарств без оплаты получателем и при отпуске ЛП в медицинских и иных организациях с мед. лицензией для оказания медицинской помощи.
РВ НЕ предназначен для отправки в сведений о приемке товара, операциям внутреннего перемещения и другим логистическим операциям.
Также РВ НЕ предназначен для отправки сведений по операциям вывода из оборота ЛП, если они не заканчиваются применением ЛП (передача на уничтожение, списание в ходе инвентаризации и т.п.) и по продаже ЛП с частичной льготой (в этом случае должна использоваться контрольно-кассовая техника — ККТ).
РВ может использоваться для проверки информации по упаковкам ЛП, имеющейся в ИС МДЛП и для автоматизации работы с маркированными ЛП в информационной системе мед. организации или аптеки. Такие функции предусмотрены в РВ, но их использование необязательно.
Для решения данного вопроса необходимо составить обращение оператору ЦРПТ:
— написав письмо на электронную почту службы технической поддержки: [email protected]
— зарегистрированные в ИС МДЛП участники оборота для создания обращений в службу технической поддержки могут использовать портал https://support.crpt.ru, на котором можно посмотреть статус работы с созданными обращениями и получить другую полезную информацию.
В обращении необходимо указать:
1. Описание поломки
2. Полный адрес места деятельности
3. Серийный номер РВ
4. Контактное лицо
5. Номер телефона для связи
6. Фото ошибки / дефекта
Возможность смены модели регистратора выбытия на другую (1.0 / 2.0 / 3.0) не предусмотрена.
Регистратор выбытия не относится к измерительным приборам, поэтому метрологическую проверку производить не требуется.
РВ — являются мобильными устройствами и предполагают использование по типу соединения:
— Ethernet (только модели 1.0 и 3.0, для модели 2.0 в комплекте идет роутер MicroTic)
— GSM Modem (только модель 3.0, модем приобретается участником самостоятельно, в комплект не входит)
— WI-FI (все модели)
— Sim-карта (только модель 1.0)
Тип подключения определяется участником самостоятельно, исходя из процессов и технических возможностей, используемых при обороте ЛП на стороне участника оборота товаров.
Закупка ЛП в розницу в аптеке:
Организации обладающие лицензией на розничную торговлю ЛП могут осуществлять отпуск ЛП только физ. лицам.
Для продажи ЛП юридическим лицам в целях дальнейшего предоставления услуги, аптека должна обладать лицензией на оптовую продажу ЛП и производить реализацию ЛП в рамках отгрузки от одного юр. лица другому.
Соответственно частные организации с медицинской лицензией в целях предоставления услуги обязаны закупать ЛП через юр. лицо, а не в рамках розничной продажи.
ФАС России от 19.09.2017 N ИА/64899/17 «О необходимости наличия у участников закупки лекарственных препаратов лицензии на оптовую торговлю лекарственными препаратами»
https://legalacts.ru/doc/pismo-fas-rossii-ot-19092017-n-ia6489917-o-neobkhodimosti/
Федеральный закон от 12.04.2010 N 61-ФЗ (ред. от 02.08.2019)
В ИС МДЛП необходимо передавать сведения о приемке / перемещении / выбытии.
Приемка ЛП: возможно получение ЛП по прямому акцептированию и обратному.
При прямом акцептировании сначала поставщик передает сведения по 415 схеме, затем получатель подтверждает приемку по 701 схеме.
При обратном акцептировании сначала получатель отправляет 416 схему, затем поставщик подтверждает по 701. При этом поставщик должен добавить получателя в доверенные контрагенты.
Перемещение ЛП: при наличии нескольких мест деятельности и перемещении ЛП между ними, необходимо передавать данные по 431 схеме.
Выбытие ЛП: производится через регистратор выбытия (предоставляется бесплатно всем организациям с медицинской лицензией) перед использованием ЛП.
Выбывать ЛП через кассу при оказании платных услуг не требуется, при этом по желанию можно просто указывать в чеке SGTIN использованного ЛП.
На момент получения регистратора выбытия (РВ) в личном кабинете на вкладке «Договоры» должен быть акт приема-передачи (по одному акту на каждый РВ).
В акте приема-передачи указан адрес места деятельности и серийный номер регистратора выбытия.
На коробке с РВ имеется наклейка, с серийными номерами РВ и модуля безопасности.
Серийные номера РВ 3.0 начинаются с символов IZM, серийные номера РВ 1.0 и 2.0 состоят полностью из цифр.
Сопоставив серийные номера на коробках с РВ с серийными номерами из актов приема-передачи можно определить, к какому адресу места деятельности привязан данный РВ.
Также серийные номера можно посмотреть в меню самого РВ. Подробную инструкцию по нахождению данной информации можно найти в руководстве пользователя РВ.
На усмотрение участника оборота оставлен вопрос определения места вывода из оборота в медицинских организациях — при отпуске в отделение в больничной аптеке или в отделении при выдаче со склада отделения.
1.Получатель ЛП предоставляет сотруднику (первостольнику) льготный рецепт.
2.Сотрудник подбирает препараты в соответствии с полученным рецептом, при этом сканирует коды маркировки на них. Важно: отсканирована должна быть каждая упаковка. При повторном сканировании упаковки РВ не добавит ее в список для вывода из оборота, а сообщит пользователю об ошибочном сканировании.
3.Сотрудник вводит дату, серию и номер рецепта (на РВ или в программе, которая умеет управлять РВ) и выбирает действие «Зарегистрировать выбытие». После индикации на РВ, что запрос отправлен, отдает ЛП получателю. Важно: ожидать ответ ФГИС МДЛП о результатах попытки вывода ЛП из оборота в момент отпуска ЛП не нужно. Для минимизации вероятности нарушений в сфере оборота ЛП желательно проверить возможность вывода из оборота всех упаковок ЛП до того, как они могут быть выданы получателю. Это не обязательно делать при приемке товара, это не следует делать при отпуске товара, это может быть сделано в любой момент времени, начиная с приемки товара и до момента подбора ЛП с целью отпуска получателю.
Взаимодействие будет осуществляться по открытому API.
Алгоритмы взаимодействия, а так же методы API описаны в документе «Выдержка из технической спецификации на поставку регистратора выбытия» по ссылке.
РВ предназначен только для выбытия ЛП, с помощью него нельзя принимать товар.
Сканер необходим для приемки лекарственных препаратов в организации. Единственным критерием к нему является умение считывать Data-matrix код.
Если же в вашей организации очень небольшой оборот товара (менее 10 упаковок в день), для внесения сведений о приёмке в ИС МДЛП можно пользоваться человекочитаемой информацией на упаковке лекарственного препарата — вносить её в систему вручную.
Согласно договору, регистратор выбытия предоставляется на безвозмездной основе.
Арендная стоимость не предусмотрена. Залоговая стоимость оборудования указана в акте приема-передачи.
Вопрос постановки на балансовый учет находится в компетенции отдела бухгалтерии Вашей организации. Все необходимые документы можно скачать в личном кабинете с оттисками электронных подписей.
При использовании РВ, в ИС МДЛП автоматически отправляется документ 10531 или 10521, в зависимости от типа выбытия (мед. применение или льготный рецепт), загружать вручную более ничего не требуется.
При осуществлении тестового выбытия в ИС МДЛП отправляется документ 20521 — подключение регистратора выбытия.
Согласно договору, пункт 7.7: Оператор вправе потребовать от Участника возвратить Оператору Оборудование, в случае если Оборудование не используется Участником в течение 6 месяцев подряд.
В связи с переносом срока начала обязательной маркировки, время между получением регистратора выбытия и началом обязательной маркировки не будет учитываться при подсчете времени по пункту 7.7 договора.
Регистратор выбытия настроен на промышленный контур ИС МДЛП. Настройка РВ на тестовый контур «Песочница» не реализована. К реализации не планируется.
Выбытие можно произвести только вторичной упаковки. Если вторичная упаковка вложена в третичную, необходимо SSCC распаковать, предварительно получив из ИС МДЛП содержимое SSCC.
1. При подключении к компьютеру:
Регистратор выбытия может быть подключен к персональному компьютеру сотрудника, регистрирующего вывод из оборота лекарственных препаратов. В этом случае:
— РВ использует подключение к сети интернет, установленное на данном компьютере.
— РВ может использовать как встроенный в него сканер кодов маркировки, так и подключенный к этому же компьютеру сканер 2D-штрихкодов стороннего производителя (например, стационарного типа), если на компьютере установлена информационная система, умеющая управлять РВ.
2. При подключении к локальной вычислительной сети организации:
Если РВ подключен в сеть организации и не находится непосредственно на рабочем месте сотрудника, регистрирующего вывод ЛП из оборота, подключение к нему и его использование возможно с любого компьютера в локальной сети организации. При этом использование встроенного сканера кодов маркировки невозможно и такие рабочие места должны быть оснащены сканерами 2D-штрихкодов. Также возможно использование серийно выпускаемых терминалов сбора данных с последующей передачей информации в РВ.
Данное использование РВ невозможно без установки на рабочих местах пользователей информационной системы, управляющей работой РВ.
3. Автономное использование РВ:
При отсутствии подключения РВ к информационной системе участника оборота, РВ может отправлять данные о выводе ЛП из оборота через любое подключение к Интернет. В этом случае:
— дополнительные сведения, необходимые для регистрации вывода ЛП из оборота (кроме содержащихся в коде маркировки), например, дату льготного рецепта или документа-основания, необходимо будет ввести с клавиатуры РВ;
— необходимо помнить, что отсутствие в ИС МДЛП сведений о приемке ЛП участником оборота приведет к ошибке при попытке вывода этих ЛП у этого участника оборота и может служить сигналом о нарушении правил оборота маркированных ЛП.
4. Если в организации используется облачное решение для автоматизации учета лекарств:
В ряде регионов РФ реализованные облачные решения для ведения учета ЛП в государственных медицинских организациях. Возможно использование подобных решений по автоматизации в крупных аптечных сетях или сетях медицинских организаций. В этом случае возможна установка РВ в центре обработки данных. При этом оснащение рабочих мест сканерами 2D-штрихкодов должно выполняться за счет участника оборота.
Оборудование — регистратор выбытия, доставляется до участника в подготовленном, проверенном и готовом к эксплуатации состоянии.
Подключение к локальной сети учреждения, а также интеграция устройства с программным обеспечением участника, производится участником самостоятельно.
В комплекте с регистратором выбытия прикладываются необходимые инструкции.
Также инструкции в электронном виде можно скачать на сайте Честный ЗНАК, в разделе «Регистраторы выбытия».
Для корректной работы и обновления ПО РВ КМ необходима точная настройка внутренних часов реального времени. Настройка часов производится по сигналам ГНСС ГЛОНАСС. Для настройки требуется, чтобы РВКМ имел связь как минимум с тремя спутниками ГЛОНАСС. В случае, если в течение суток, связи со спутниками не было, РВ блокируется до тех пор, пока связь не будет установлена. Других блокировок (более длительной или окончательной) по этой причине не предусмотрено.
Все инструкции по интеграции находятся на сайте.
Согласно пункту 2.3.3 Договора по предоставлению регистратора выбытия лекарственных препаратов субъектам обращения лекарственных средств на безвозмездной основе:
Участник принимает на себя следующие обязательства:
Осуществлять действия по подключению оборудования к своему программно-аппаратному комплексу согласно требованиям, установленным инструкцией по эксплуатации оборудования и иной технической документацией, размещенной на официальном сайте Оператора в информационно-телекоммуникационной сети «Интернет» (далее — Сайт Оператора, Правила), а также самостоятельно осуществлять интеграцию оборудования со своим программно-аппаратным комплексом.
Если Вы используете программного обеспечение, предоставляемое другой организацией, рекомендуется обратиться в данную организацию.
Перед началом работы с регистратором выбытия 1.0 / 2.0, необходимо произвести обновление прошивки согласно инструкции пользователя.
Если данного информационного окна не появилось «обновление OC», необходимо открыть меню настройки => об устройстве => обновление системы => обновить. Также после активации приложения «клиент оператора», необходимо зайти настройки => обновление прошивки платы МБ, дождаться окончания обновления ПО.
Инструкцию по настройке можно найти в руководстве пользователя, на 11 странице, раздел «Подключение к Wi-Fi».
Нажмите кнопку «F1», далее кнопкой стрелкой спуститесь до пункта «Выход» и нажмите кнопку «Ent».
Кнопкой «Esc» можно выйти только до ввода PIN кода.
Клавишей F1 можно менять раскладку между 3 режимами: русская, английская, цифры.
При необходимости ввести заглавные буквы требуется несколько раз нажимать на кнопку с соответствующими буквами — после строчных букв последуют заглавные.
Выполните обновление прошивки регистратора выбытия:
1. Выйти из приложения «Клиент оператора» (нажать F1, пролистать появившееся меню вниз и выбрать «Выход».
2. Открыть меню с приложениями (кнопка внизу экрана в виде круга с 6 точками).
3. Открыть приложение «Обновление системы».
4. Нажать «Обновить».
Появление уведомления «Срок МБ истёк» возможно. Необходимо выключить/включить РВ. Все устройства приходят активированными и дополнительных манипуляций по активации не требуют.
Рекомендуется убедиться, что встроенный сканер 2D не заклеен защитной пленкой. Если имеется защитная пленка, то необходимо её удалить.
Сканируемый лекарственный препарат желательно размещать не далее, чем на расстоянии 10-15 см от луча лазера сканера. Сканер следует направлять немного под углом относительно DataMatrix. При поиске оптимального положения можете перемещать сканер вверх и вниз относительно кода маркировки.
Если произвести сканирование кода маркировки вне предназначенных для этого меню, ничего не произойдет.
Для проверки кода маркировки в приложении клиент оператора необходимо выбрать «Проверка КМ» и когда появится надпись «Отсканируйте 2D штрих код» выполнить сканирование на кнопку «SCAN».
Для тестового выбытия необходимо перейти в меню «Диагностика — Тестовое выбытие» и когда появится надпись «Просканируйте штрихкод нажав кнопку SCAN» выполнить сканирование на кнопку «SCAN».
Аналогичный алгоритм сканирования при формировании выбытия по льготному рецепту или для мед. применения.
Устройство активировано. Кратковременное появление надписи «Активация РВ» до ввода Пин-кода возможно.
Выполните выключение и включение регистратора выбытия (РВ): зажать кнопку выключения, затем выбрать «Отключить питание», затем включить устройство зажав кнопку включения (внизу слева для РВ 2.0 / внизу посередине для РВ 1.0 ).
Если после включения устройства и ввода пин-кода ошибка повторилась, подождите 10-15 секунд и введите пин-код повторно. Если ошибка осталась после перезагрузки и двух попыток ввода пин-кода — сообщите об этом, указав какие действия Вы уже произвели, в службу поддержки [email protected].
Регистратор выбытия 1.0 и 2.0 не поддерживает работу через прокси сервер.
Для упрощения старта работы с регистраторами выбытия (РВ) для участников оборота, РВ активируются перед доставкой.
Перед началом работы с РВ, Вам достаточно включить РВ, установить связь со спутниками и произвести тестовое выбытие.
Для проверки успешности отправки данных с регистратора выбытия (РВ) можно выполнить тестовое выбытие кода маркировки (КМ): в приложении «Клиент оператора» вызвать боковое меню (кнопка F1 для РВ 1.0 или провести из левого края экрана вправо для РВ 2.0), выбрать «Диагностика» — «Тестовое выбытие».
При переходе в режим тестового выбытия предлагается отсканировать тестовый КМ, который можно увидеть в «Паспорте» на используемый экземпляр РВ КМ. При корректно выполненных настройках на экране будет отображено уведомление: тестовое выбытие успешно зарегистрировано.
Значком в виде ключа отображается VPN соединение.
Оно необходимо, если требуется с РВ подключиться к защищённой (VPN) сети организации.
При необходимости увеличить объем внутренней памяти, можно установить съемный внешний носитель — микро-SD. Слот для микро-SD расположен в отсеке АКБ, поэтому первоначально необходимо открыть крышку отсека АКБ, извлечь аккумулятор и отсоединить кабель. Правильная установка карты в слот изображено в отсеке АКБ. Микро-SD устанавливается в верхнюю часть смежного разъема (более углубленный разъем), сим-карта — в нижнюю. Сим-карту/микро-SD необходимо медленно вставлять в соответствующий слот до щелчка. Микро-SD считается «установленной» (подключенной), когда устройство распознает карту и откроет к ней доступ.
Необходимый IP адрес и порт для подключения можно найти в меню регистратора выбытия, после его подключения к сети. Приложение клиент оператора — Диагностика — Диагностика составных модулей — Сетевой режим.
Выключите и включите устройство и повторите поиск спутников. Следите за уровнем сигнала / шума в приложении «Клиент оператора», меню «Диагностика — Диагностика составных модулей — Модуль ГНСС». Для получения актуальной информации на текущий момент необходимо периодически возвращаться в предыдущее меню и снова заходить в «Диагностика составных модулей».
В регистратор выбытия 1.0 можно вставить свою SIM-карту.
Для установки SIM-карты необходимо открыть крышку отсека АКБ, извлечь аккумулятор и отсоединить кабель. Правильная установка карты в слот изображена в отсеке АКБ. Микро-SD устанавливается в верхнюю часть смежного разъема (более углубленный разъем), SIM-карта — в нижнюю. SIM-карту/микро-SD необходимо медленно вставлять в соответствующий слот до щелчка.
Обращаем Ваше внимание, что ООО «Оператор-ЦРПТ» не несет ответственность за работоспособность устанавливаемых SIM-карт. По вопросам работы SIM-карты необходимо обращаться к поставщику SIM-карты.
Выбор поставщика услуг по SIM-картам не регламентируется Оператором ЦРПТ и осуществляется участником оборота товаров самостоятельно.
Если регистратор выбытия (РВ) выводит сообщение о доступности обновления, то необходимо обновить РВ.
Подробная инструкция по обновлению имеется в руководстве пользователя в разделе «Обновление ОС»:
РВ 1.0 (желтая кнопка)
РВ 2.0 (красная кнопка)
Красный символ означает, что регистратор не подключен к сети. Нужно попробовать подключить регистратор к каналу, который точно имеет доступ к сети. Дополнительно необходимо проверить не настроен ли регистратор для статического подключения в случае, если подключение динамическое (сервис => настройки => настройка сети => конфигурация ethernet => способ настройки («авто» для динамического соединения, «ручной» для статического). Также можно воспользоваться подключением по WiFi.
Необходимый IP адрес для подключения можно найти в меню регистратора выбытия, после его подключения к сети. Главное меню — Информация — строка «IP». Порт по умолчанию — 8080.
Поиск устройством спутников может занимать до 30 минут.
Перезагрузите устройство и повторите поиск спутников. Следите за уровнем сигнала CNR в меню «Сервис — Проверка РВ — Спутники».
а. Выберите пункт меню «Сервис» и нажмите зеленую клавишу .
б. В меню «Сервис» выберите пункт меню «Настройки» и нажмите зеленую клавишу .
в. В меню «Настройки» выберите пункт меню «Управление интерфейсами» и
нажмите зеленую клавишу.
г. В меню «Настройки сети» выберите пункт меню «Настройки сети» и нажмите зеленую
клавишу .
д. С помощью клавиш курсора «вверх», «вниз» выберите интерфейс WI-FI и нажмите зеленую клавишу.
е. На появившееся приглашение сохранить настройки ответе «Да», нажав зеленую клавишу.
ж. После возврата в меню «Настройка сети» выберите пункт «Конфигурация WIFI».
з. В самой верхней строчке окна выберите, в зависимости от настроек вашей сети, способ получения IP-адреса «Авто (DHCP)» или «Ручной» (выбор нужного значения в поле осуществляется центральной белой кнопкой).
и. В случае выбора «Авто (DHCP)» никакие другие настройки в окне менять не нужно, в противном случае необходимо заполнить все оставшиеся поля( «IP адрес», «Маска подсети», «Адрес шлюза», «Адрес DNS»).
к. Сохраните настройки, нажав зеленую клавишу и подтвердив сохранение.
л. После возврата в меню «Настройка сети» выберите пункт «Выбор сети WI-FI».
м. В появившемся окне заполните поля «Ввод SSID» и «Ввод пароля». Если сеть является скрытой необходимо выбрать пункт «Скрытая». Просмотреть список доступных сетей и выбрать нужную можно выбрав пункт-кнопку «Выбрать SSID».
н. Нажмите зеленую клавишу , чтобы подключиться к выбранной сети WI-FI.
о. После успешного подключения РВКМ к сети WI-FI в панели состояния появится значок подключения. Зелёный цвет этого значка обозначает, что РВКМ успешно подключился к СЭ.
Уровень приема сигнала Wi-fi на регистраторе выбытия определяется цветовой индикацией значка на дисплее устройства. Если цвет зеленый то прием сигнала отличный,если желтого цвета то средний (данный цвет индикатора не несет в себе критичности для отправки сведений с РВ), если индикатор красного цвета то рекомендуем осуществить проверку подключения.
РВ предоставляются Оператором ЦРПТ по заявкам участников оборота бесплатно.
Инструкция по формированию заявок
Связь регистратора выбытия со спутниками нужна только раз в сутки для синхронизации времени и контроля соответствия места выбытия лекарственного препарата фактическому. Для выполнения выбытия лекарственных препаратов связь со спутником не нужна.
Для получения сигнала достаточно нескольких минут, после чего регистратор может работать без связи еще 24 часа.
Внизу экрана должно быть сообщение от браузера «Эта веб-страница пытается запустить надстройку Модуль внешнего интерфейса усовершенствованной Э… издателя CRYPTO-PRO», справа от этого сообщения имеется кнопка «Разрешить». Нажмите, пожалуйста, кнопку «Разрешить» и попробуйте повторно подписать соглашение.
Адрес предоставления регистратора выбытия соответствует адресу места осуществления деятельности организации. Соответственно, если у Вашей организации несколько мест осуществления деятельности, то согласно лицензии на медицинскую деятельность, необходимо подать несколько заявок на предоставление регистратора выбытия — для каждого места осуществления деятельности организации.
Поле корреспондентского счета является обязательным для заполнения, потому что договор по форме Минпромторга предполагает заполнение реквизитов.
Согласно Постановлению Правительства Российской Федерации от 31.12.2019 № 1954 «О внесении изменений в постановление Правительства Российской Федерации от 14 декабря 2018 г. № 1556»», заявку (в электронной форме) на получение регистратора выбытия необходимо подать в срок до 15 февраля 2020 г. либо в течение 7 календарных дней со дня регистрации в МДЛП.
Срок начала обязательной маркировки перенесен на 01.07.2020 (кроме категории 7ВЗН), но промаркированные лекарственные препараты уже могут поступать в оборот.
Рекомендуем Вам подать анкету на предоставление регистратора выбытия (РВ) в максимально сжатые сроки, это позволит заблаговременно получить РВ и отработать Ваши бизнес процессы.
Если используется браузер Internet Explorer 11:
Для устранения ошибки необходимо изменить настройки безопасности браузера Internet Explorer .
Нажмите на кнопки в виде шестеренки в верхней правой части браузера (или сочетание клавиш Alt + x) и выберите пункт «Свойства браузера».
Перейдите на вкладку «Безопасность», в раздел «Интернет».
Установите уровень безопасности «средний» или «выше среднего». После этого необходимо перезапустить браузер.
Если после выполнения вышеописанных рекомендаций ошибка останется, воспользуйтесь, пожалуйста, браузером Google Chrome или Яндекс браузером последней версии.
Плагин КриптоПро для Google Chrome или Яндекс браузера можно установить, открыв ссылку в этих браузерах.
Если используется другой браузер:
Загрузка вкладки «Договоры» в виде пустой белой страницы связана с медленным интернет соединением или блокировкой загружаемых данных.
Для устранения данной ошибки попробуйте произвести следующие действия:
1. Очистить КЭШ и куки браузера
2. Отключить антивирус
3. Отключить плагины антивирусов в браузере
4. Отключить плагины VPN в браузере
5. Отключить блокировщики рекламы в браузере
Для устранения ошибки «Не удается построить цепочку сертификатов для доверенного корневого центра» необходимо установить корневой сертификат удостоверяющего центра и корневой сертификат головного удостоверяющего центра.
Необходимо подать заново анкету с лицензией на медицинскую деятельность.
Типовая форма договора на оснащение регистратором выбытия утверждена Приказом Министерства промышленности и торговли российской Федерации № 2973 от 13.08.2019 г.
Изменение типовой формы договора не предусмотрено.
Если руководитель организации действует на основании приказа или устава, то при заполнении анкеты на РВ, можно выбрать «учредительный документ». Выбор данного варианта не будет считаться ошибкой.
На одно место осуществления деятельности (МД) предполагается выдача одного регистратора выбытия (РВ).
Если на одном МД производится выбытие множества лекарственных препаратов (ЛП), используются разные товароучётные системы, то необходимо подключить РВ к сети организации. При этом устройство сможет по сети получать информацию из разных источников и регистрировать выбытие ЛП.
Если в несколько лицензий внесён один и тот же адрес, например, по которому производится бесплатная выдача лекарств, как по рецептам, так и для мед. применения, то это будет считаться одним местом деятельности. Для осуществления выбытия лекарств РВ так же можно будет подключить к сети организации.
Скачать и просмотреть договор можно в личном кабинете на вкладке «Профиль — Анкеты и договоры — Договоры». После подписания со стороны ООО «ЦРПТ» (статус «Подписан сторонами») в конце документа будут присутствовать оттиски электронных подписей.
Также с типовой формой договора можно ознакомиться по ссылке.
Акт выполненных работ из приложения № 5 к типовой форме договора по предоставлении регистратора выбытия оформляется в случае произведения ремонта регистратора выбытия.
Если у организации только лицевой счет в комитете финансов, то в поле «Наименование банка» необходимо заполнить: «л/с №хххххх в Комитете финансов» (вместо хххххх необходимо указать номер лицевого счета).
При этом поля «БИК», «Корреспондентский счет» и «Расчетный счет» заполняются нулями.
При отсутствии у ИП банковского счета, поля «БИК», «Наименование банка», «Корреспондентский счет» и «Расчетный счет» заполняются нулями.
Согласно договору по форме МинПромТорга, товарной накладной к РВ нет. Акт приема-передачи отображается в личном кабинете.
При заполнении анкеты на РВ В в графах «контакты руководителя организации», «контакты ответственного сотрудника», «контакты лиц, обеспечивающих доступ к месту установки» необходимо указать номер телефона и через запятую — имя контактного лица.
В случае возникновения ошибки «Отказано в доступе» при подписании документов на вкладке «Договоры» в браузере Internet Explorer, воспользуйтесь, пожалуйста, другим браузером, например, Google Chrome или Яндекс браузер.
В Договоре по предоставлению регистратора выбытия, приложения представлены как не заполненный образец типовой формы. Они формируются (заполняются) и подписываются как отдельный документ.
Заявка на предоставление регистратора выбытия (приложение 1) формируется на основании отправленных Вами анкет на РВ.
Акт приема-передачи (приложение 2) необходимо подписывать при получении регистратора выбытия.
Для устранения ошибки «Цепочка сертификатов обработана, но обработка прервана на корневом сертификате, у которого отсутствует отношение доверия с поставщиком доверия» необходимо установить корневой сертификат удостоверяющего центра и корневой сертификат головного удостоверяющего центра.
РВ предоставляются Оператором ЦРПТ по заявкам участников оборота бесплатно. В акте приема-передачи прописана залоговая сумма в случае утери оборудования (РВ).
При получении РВ платить залоговую сумму не требуется.
Если отсутствует корреспондентский счёт, данное поле необходимо заполнить нулями.
Согласно пункту 2.1.1 Договора по предоставлению регистратора выбытия, оборудование предоставляется в течении 30 календарных дней с момента подписания участником заявки на предоставление регистратора выбытия (приложение № 1 к Договору).
Для устранения ошибки «Не установлен корневой сертификат» необходимо установить корневой сертификат удостоверяющего центра и корневой сертификат головного удостоверяющего центра.
Для заполнения анкеты на РВ требуется предварительно добавить место деятельности с действующей фарм/мед лицензией на вкладке «Профиль — Адреса — Места деятельности».
После добавления адреса на вкладке «Профиль — Анкеты и договоры — Заполнение анкет на РВ», должна появиться строка с информацией о МД и в правой части этой строки будет кнопка «Плюс». При нажатии на эту кнопку откроется окно заполнения анкеты.
Подробную инструкцию по добавлению места деятельности можно найти в руководстве пользователя, раздел 4.5 (страница 75)
Руководство пользователя можно найти по ссылке.
В поле «IT служба» необходимо выбрать либо «Очная» — если в организации есть в штате сотрудник IT (например, системный администратор), либо «Заочная» — если нет сотрудника и организация использует сторонние услуги.
При отсутствии штатного сотрудника службы IT в полях «Время работы ИТ поддержки «с», «Время работы ИТ поддержки «по», «Дни недели работы ИТ поддержки» и «Контакты ответственного сотрудника ИТ поддержки» заполняются данные Вашего сотрудника, который будет получать и подключать РВ.
Необходимо указывать усредненное количество всех лекарственных препаратов, выводимых из оборота за сутки.
Нужно указывать количество окон, в которых производится выдача ЛП. Если из одного окна, то необходимо указать одно окно.
Необходимо указать полное наименование, версию программы и номер релиза, а также место развёртывания программы (на локальном рабочем месте, сетевое размещение, облачная реализация).
Если товаро-учетная система не используется, написать «не используется».
При заполнении граф с контактами необходимо указать номер телефона и имя контактного лица, например: «+11111111111, Имя».
1. Проверить актуальность прошивки программного обеспечения.
2. При попытке синхронизации внутри помещения устройство следует размещать в непосредственной близости к окну, при этом избегать северной стороны здания.
3. Синхронизация со спутниками происходит значительно быстрее при его регулярном использовании, и поиска спутников в одно и тоже время суток.
4. Синхронизация проходит значительно быстрее на открытом воздухе даже при наличии городской застройки.
5. Сроки синхронизации могут увеличиваться при наличии в непосредственной близости индустриальных и промышленных шумов (заводы, производства и другие предприятия, порождающие электромагнитные помехи).
Для отслеживания доступности спутников на РВ следует запустить приложение «Клиент оператора», вызвать информационное меню, проведя по экрану слева направо (или нажать F1, если экран не сенсорный), выбрать «Диагностика — Диагностика составных модулей». В строке «Модуль ГНСС» будет отображаться информация по поиску спутников. Для получения актуальной информации на текущий момент необходимо периодически возвращаться в предыдущее меню и снова заходить в «Диагностика составных модулей». Если на улице сигнал остается равным 0, выключите и включите РВ.
1. Проверить актуальность прошивки программного обеспечения.
2. При попытке синхронизации внутри помещения устройство следует размещать в непосредственной близости к окну, при этом избегать северной стороны здания.
3. Синхронизация со спутниками происходит значительно быстрее при его регулярном использовании, и поиска спутников в одно и тоже время суток.
4. Синхронизация проходит значительно быстрее на открытом воздухе даже при наличии городской застройки.
5. Сроки синхронизации могут увеличиваться при наличии в непосредственной близости индустриальных и промышленных шумов (заводы, производства и другие предприятия, порождающие электромагнитные помехи).
Для отслеживания доступности спутников на РВ следует зайти в «Сервис», «Проверка РВ», «Спутники». В данном меню будет отображаться информация по поиску спутников.
переменных текущей даты | LoadComplete Documentation
Переменная Current Date содержит текущую дату и / или время в указанном формате. Вы можете использовать его для замены дат в записанных запросах на текущую дату и / или время, например:
GET / report? Date = Oct + 4% 2C + 2010 HTTP 1.1 Записанный запрос с жестко заданной датой | GET / report? Date = @ Today HTTP 1.1 Параметризованный запрос |
Вы также можете использовать переменную Current Date в сочетании с константами, инкрементными переменными или случайными переменными типа Date , чтобы указать настраиваемый диапазон дат в параметрах запроса.Дополнительные сведения об использовании переменных в запросах см. В разделе «О переменных».
Мы рекомендуем выбирать переменную, тип данных которой соответствует типу данных параметра. Если LoadComplete не удается преобразовать значение переменной в тип данных параметра, тестовый сервер может вызвать ошибку. |
Параметры
Переменные текущей даты имеют следующие параметры:
Имя
Имя переменной, которое будет использоваться для ссылки на эту переменную в параметрах запроса.Имя может включать только буквы (A..Z, a..z), цифры (0..9) или символы подчеркивания (_) и должно быть уникальным в рамках проекта.
Формат
Формат даты и / или времени. По умолчанию переменная использует краткий формат даты, указанный в региональных и языковых параметрах вашей операционной системы. Чтобы использовать настраиваемый формат, укажите соответствующую строку формата. Список спецификаторов формата даты и времени, которые можно использовать в строке формата, см. В разделе «Спецификаторы формата даты» ниже.
LoadComplete автоматически применяет кодировку URL к значениям переменных перед их вставкой в запрос GET или POST. То есть пробелы кодируются как + , запятые (, ) — как % 2C , косые черты (/ ) — как % 2F, и так далее. Например, значение 4 октября 2010 г. будет заменено на Oct + 4% 2C + 2010 . |
Смещение времени (часы)
По умолчанию значение переменной содержит время, соответствующее местному времени, установленному на компьютере (см. Ниже).Смещение времени используется для добавления или вычитания часов из этого времени (чтобы вычесть часы, укажите отрицательное значение).
Используя эту функцию, вы можете легко настроить сгенерированное время в соответствии с часовым поясом, ожидаемым сервером. Например, если ваш часовой пояс GMT-05: 00 (восточная часть США и Канада) и тестируемому серверу требуется время в GMT 00:00, установите Time offset на +5. Точно так же, если ваш часовой пояс GMT + 01: 00 (Амстердам, Берлин, Берн) и серверу нужно время в GMT 00:00, установите -1.
О сгенерированных значениях
Для создания значения переменной LoadComplete использует текущую дату и время, установленные на компьютере, на котором «работает» смоделированный виртуальный пользователь.Если вы используете удаленный агент для имитации виртуальных пользователей на удаленном компьютере, время, генерируемое для пользователей, работающих на этом удаленном компьютере, будет соответствовать времени удаленного компьютера, а не времени компьютера LoadComplete.
Чтобы настроить сгенерированное время на время, ожидаемое сервером, используйте свойство Time offset.
Спецификаторы формата даты и времени
Спецификаторы стандартных форматов
В следующей таблице перечислены спецификаторы, соответствующие стандартным форматам даты и времени.Эти форматы задаются региональными и языковыми параметрами на панели управления Windows.
с | Дата в коротком формате даты плюс время в длинном формате. | 23.04.2007 10:39:55 |
ддддд | Дата в кратком формате даты. | 23.04.2007 |
dddddd (плюс любое количество дополнительных d символов) | Дата в длинном формате даты. | 23 апреля 2007 г., понедельник |
т | Время в коротком формате времени. | 10:39 |
тт | Время в длинном формате. | 10:39:55 |
Спецификаторы формата даты
Чтобы отформатировать дату определенным образом, вы можете создать строку настраиваемого формата, используя следующие спецификаторы:
д | День месяца без нуля в начале для дней с одной цифрой (от 1 до 31). | 4 25 |
дд | День месяца в виде двузначного числа с нулем в начале, если требуется (с 01 по 31). | 04 25 |
ддд | Сокращенное название дня недели в соответствии с региональными и языковыми параметрами вашей операционной системы. | Пн Вт |
дддд | Полное название дня недели в соответствии с региональными и языковыми параметрами вашей операционной системы. | понедельник вторник |
м | Месяц в виде числа без нуля в начале для однозначных номеров месяцев (от 1 до 12). | 2 11 |
мм | Месяц в виде двузначного числа с ведущим нулем, если требуется (от 00 до 12). | 02 11 |
ммм | Сокращенное название месяца в соответствии с региональными и языковыми параметрами вашей операционной системы. | янв. фев. |
мммм (плюс любое количество дополнительных м знаков) | Полное название месяца в соответствии с региональными и языковыми параметрами вашей операционной системы. | Январь Февраль |
г или г | Год в виде двузначного числа с ведущим нулем, если требуется (от 00 до 99). | 08 93 |
ггг или гггг (плюс любое количество дополнительных y символов) | Год в виде четырехзначного числа. | 2008 1993 |
/ | Разделитель дат в соответствии с региональными и языковыми параметрами вашей операционной системы. | / |
Спецификаторы формата времени
Чтобы отформатировать значение времени определенным образом, вы можете создать строку настраиваемого формата, используя следующие спецификаторы:
ч | Часы без нуля в начале для часов с одной цифрой.Если используется спецификатор AM / PM , A / P или AMPM , час представлен в 12-часовом формате (от 1 до 12), в противном случае — в 24-часовом формате (от 00 до 23). | 9 14 |
hh (плюс любое количество дополнительных h символов) | Час в виде двузначного числа с начальным нулем, если требуется. Если используется спецификатор AM / PM , A / P или AMPM , час представлен в 12-часовом формате (от 01 до 12), в противном случае — в 24-часовом формате (от 00 до 23). | 09 14 |
м или н | Минуты без нуля в начале для минут с одной цифрой (от 0 до 59). | 9 34 |
мм (плюс любое количество дополнительных м символов) nn (плюс любое количество дополнительных n символов) | Минуты в виде двузначного числа с ведущим нулем, если требуется (от 00 до 59). | 09 34 |
с | Секунды без нуля в начале для секунд с одной цифрой (от 0 до 59). | 5 47 |
ss (плюс любое количество дополнительных s символов) | Секунды в виде двузначного числа с ведущим нулем, если требуется (от 00 до 59). | 05 47 |
z | Миллисекунды без нуля в начале (от 0 до 999). | 15 374 |
zzz (плюс любое количество дополнительных z символов) | Миллисекунды в виде трехзначного числа с ведущими нулями, если требуется (от 000 до 999). | 015 374 |
AM / PM или AM / PM | Вставляет AM или am , если время до полудня, и PM или pm , если время после полудня. | утра вечера |
А / П или а / п | То же, что AM / PM , но использует A и P вместо AM и PM . | а пол |
AMPM или AMPM | Обозначение «до полудня» или «после полудня», как указано в параметрах «Региональный» и «Язык». | AM PM |
Примечание: | Если используется модификатор AM / PM , A / P или AMPM , час форматируется в 12-часовом формате, а не в 24-часовом формате. | |
: | Разделитель времени в соответствии с региональными и языковыми параметрами вашей операционной системы. | : |
Другие спецификации
В таблице ниже перечислены другие спецификаторы, которые можно использовать в параметре Format:
«ммм» или «ммм» | Значение в одинарных или двойных кавычках вставляется в результирующую строку как есть.Таким образом, вы можете добавить в строку символы, используемые в качестве спецификаторов (например, d или m ). Чтобы вставить кавычки («) в результирующую строку, используйте |
Любые другие символы | вставляются в форматированную строку как есть. |
Примечания
Как вы можете заметить, м и мм используются как указатели месяца и минуты.Их значение определяется на основе контекста, в котором используется спецификатор:
При использовании после указателя года или дня м и мм обрабатываются как указатели месяца.
При использовании после спецификатора часа м и мм обрабатываются как спецификаторы минут.
Чтобы избежать путаницы, вы можете использовать n и nn в качестве указателей минут или использовать прописные M и MM для месяцев и строчные m и мм для минут.
Примеры
Ниже приведены несколько примеров строк настраиваемого формата даты и времени и соответствующих форматированных значений даты и времени для английского языка (США).
М / д / гггг | 04.10.1993 | Короткий формат даты в США (такой же, как ddddd ) |
ММ / дд / гггг | 04.10.1993 | |
ММ / дд / гг | 04.10.93 | |
дддд, ММММ дд, гггг | Понедельник, 4 октября 1993 г. | Длинный формат даты в США (такой же, как дддддд ) |
дддд, ММММ дд, гггг чч ‘:’ нн ‘:’ сс AM / PM | Понедельник, 4 октября 1993 г., 04:32:07 | Полный формат даты и времени (с длинной датой и временем) |
ММММ дд, гггг | 4 октября 1993 г. | |
гггг-МММ-дд | 1993-окт-04 | |
гггг-ММ-дд | 1993-10-04 | |
дд-МММ-гг | 04 октября 93 | |
дд.ММ.гггг | 04.10.1993 | |
ММММ, гггг | Октябрь 1993 г. | Месяц года |
ММММ д | 4 октября | День месяца |
д ММММ гггг | 4 октября 1993 | |
гггг-ММ-ддTHH ‘:’ нн ‘:’ сс | 1993-10-04T14: 32: 07 | Дата и время с возможностью сортировки (формат ISO 8601) |
гггг-ММ-ддTHH ‘:’ nn ‘:’ sszzz | 1993-10-04T14: 32: 07152 | Дата и время с возможностью сортировки в миллисекундах |
ддд МММ дд чч ‘:’ мм ‘:’ сс гггг | Пн, 04 октября, 14:32:07 1993 |
См. Также
Постоянные переменные
Случайные переменные
Инкрементные переменные
СЕГОДНЯ: возврат текущей даты
СЕГОДНЯ: возврат текущей даты
СЕГОДНЯ: возврат текущей даты
Доступные языки:
отчетность
СЕГОДНЯ
функция извлекает текущую дату из операционной системы в
формат ММ / ДД / ГГ или ММ / ДД / ГГГГ.Он всегда возвращает дату,
в настоящее время. Поэтому, если вы запускаете приложение поздно в
ночь, используйте СЕГОДНЯ. Вы можете удалить встроенные косые черты по умолчанию с помощью
функция РЕДАКТИРОВАТЬ.
Вы также можете получить дату в том же формате (разделенные
косой чертой) с помощью системной переменной Dialogue Manager & DATE.
Вы можете получить дату без косой черты, используя системные переменные
& YMD, & MDY и & DMY. Системная переменная & DATEfmt получает
дата в указанном формате.
Икс
Синтаксис
: как получить текущую дату
СЕГОДНЯ (вывод)
где:
- вывод
Буквенно-цифровой, не менее A8
Имя поля, содержащего
результат или формат выходного значения, заключенный в одиночный
кавычки.Применяется следующее:
- Если DATEFNS = ON и
формат — A8 или A9, СЕГОДНЯ возвращает год из 2 цифр. - Если DATEFNS = ON и
формат A10 или выше, СЕГОДНЯ возвращает год из 4 цифр. - Если DATEFNS = OFF, СЕГОДНЯ
возвращает год, состоящий из двух цифр, независимо от формата вывода.
- Если DATEFNS = ON и
Пример: получение текущей даты
СЕГОДНЯ получает
текущую дату и сохраняет ее в поле ДАТА. Затем запрос отображает
дата в заголовке страницы.
ОПРЕДЕЛЕНИЕ ФАЙЛА СОТРУДНИКА ДАТА / A10 С EMP_ID = СЕГОДНЯ (ДАТА); КОНЕЦ
СОТРУДНИК ФАЙЛА ТАБЛИЦЫ SUM CURR_SAL ПО ОТДЕЛЕНИЯМ ЗАГОЛОВОК "СТРАНИЦА <ТАБПАГЕНО" «ОТЧЕТ О ЗАРПЛАТЕ <ДАТА» КОНЕЦ
вывод:
ОТЧЕТ О ЗАРПЛАТЕ 13.12.2006 DEPARTMENT CURR_SAL ---------- -------- MIS $ 108 002.00 ПРОИЗВОДСТВО $ 114 282,00
URL Динамическое обозначение даты | Uptrends
Динамическое значение даты в URL или теле запроса
Мы можем генерировать динамические значения даты в URL-адресах или содержимом HTTP-запроса. Это может быть полезно для веб-служб, которым требуется вводить значение даты как часть тела запроса для HTTP POST, например:
…
Вместо того, чтобы вводить фиксированную дату валютирования, мы можем использовать следующую нотацию для генерации значений на основе сегодняшней даты / времени:
…
Обратите внимание, что также возможны значения другого формата .Кроме того, мы можем использовать смещения для вычисления различных значений.
Затем это обозначение будет заменено фактическим значением с учетом сегодняшней даты / времени и вычисления / форматирования соответствующего значения.
Обозначение
Общий формат для использования динамических дат - :
{datetime; format; offset; skipdates}
- формат : определяет форматирование даты / времени, которое будет использоваться, с использованием идентификаторов для дня / месяца / года / часов / минут / секунд: дд, ММ, гггг, ЧЧ, мм, сс
- смещение : значение, определяющее смещение дня, которое будет использоваться относительно текущей даты и времени.Положительные значения вычисляют даты в будущем; отрицательные значения вычисляют даты в прошлом.
- skipdates : пропускает определенные даты (определенные в формате yyyy-MM-dd) или любой выходной день (определенный как "w")
Примеры
{datetime; MM / dd / yyyy; 1} «завтра» в американском формате
{datetime; dd-MM-yyyy; -1} «вчера» в голландском формате
{datetime; MM / dd / yyyy; 3; W} через три дня после сегодняшнего дня, но пропустить выходные дни
{datetime; MM / dd / yyyy; 1; W, 2013-12-25,2014-01-01} через три дня после сегодняшнего дня, но пропустить выходные дни, Рождество 2013 г. и Новый год 2014 г.
{datetime; yyyy-MM-ddTHH: mm: ss "GMT \ +00: 00"} «сейчас» в формате ISO
Также возможны смещения часов и минут .
Последний пример того, как это будет выглядеть в реальном URL-адресе, который указан в мониторе (генерируя две даты: сегодня + 7 дней и сегодня + 14 дней):
http://www.mysite.com/Search?startDate={datetime;yyyy-MM-dd;7}&endDate={datetime;yyyy-MM-dd;14}
Примечание : Вы также можете использовать эту нотацию в содержимом тела запроса для монитора HTTP / Webservice.
Python Получить текущую дату и время на сегодня
Как узнать текущую дату и время в Python? Какой модуль или функцию мне нужно использовать для получения текущего времени или даты на языке программирования Python? Как я могу получить сегодняшнюю дату и текущую дату и время в Python в разных форматах с помощью метода strftime ()?
Подробности руководства | |
---|---|
Уровень сложности | Easy (rss) |
Root-права | Нет |
Требования | Python v2.x + |
Приблиз. время чтения | 2m |
Вы можете использовать модуль времени (низкий уровень), который предоставляет различные функции, связанные со временем. Однако этот модуль доступен всегда, не все функции доступны на всех платформах. Следовательно, вам необходимо использовать модуль datetime (объектно-ориентированный интерфейс высокого уровня для дат и времени) в Python. Он предоставляет классы для управления датами и временем как простыми, так и сложными способами. Хотя арифметика даты и времени поддерживается, основное внимание в реализации уделяется эффективному извлечению атрибутов для форматирования и обработки вывода.
Как получить текущую дату и время в Python?
Синтаксис:
time.strftime (формат) ## 24-часовой формат ## time.strftime ("% H:% M:% S") ## 12-часовой формат ## time.strftime ("% I:% M:% S")
Вот еще один пример, выполненный с использованием модуля datetime:
#! / Usr / bin / python3 от даты импорта даты и времени сегодня = date.today () fdate = date.today (). strftime ('% d /% m /% Y') print ("Текущая дата сегодня -", сегодня) print ("Дата в формате дд / мм / ГГГГ -", fdate)
Получение текущего времени в Python с использованием модуля времени
Давайте посмотрим на несколько примеров модуля времени:
Примеры
Простая программа на Python для получения сегодняшней даты и времени:
#! / Usr / bin / python время импорта печать (время.strftime ("% H:% M:% S")) ## 12-часовой формат ## print (time.strftime ("% I:% M:% S"))
Примеры выходных данных:
23:46:08 11:46:08
Для печати текущей даты используйте:
#! / Usr / bin / python время импорта ## формат дд / мм / гггг print (time.strftime ("% d /% m /% Y"))
Примеры выходных данных:
10.04.2013
Получение даты и времени местных жителей в Python
#! / Usr / bin / python # Назначение: демонстрация текущей даты и времени Python # Автор: nixCraft # -------------------------------------------- время импорта сейчас = время.strftime ("% c") ## представление даты и времени print "Текущая дата и время" + time.strftime ("% c") ## Только представление даты print "Текущая дата" + time.strftime ("% x") ## Только представление времени print "Текущее время" + time.strftime ("% X") ## Отображение текущей даты и времени из текущей переменной print ("Текущее время% s"% сейчас)
Примеры выходных данных:
Текущая дата и время Сб 5 окт 00:04:59 2013 Текущая дата 13.10.13 Текущее время 00:04:59 Текущее время Сб 5 окт 00:04:59 2013
Строки формата для получения текущей даты и времени в Python
В строку формата могут быть встроены следующие директивы:
Директива | Значение |
---|---|
% | Название дня недели. |
% А | Полное название дня недели. |
% б | Сокращенное название месяца. |
% В | Полное название месяца. |
% в | Соответствующее представление даты и времени. |
% d | День месяца в виде десятичного числа [01,31]. |
% В | Час (в 24-часовом формате) как десятичное число [00,23]. |
% I | Час (12-часовой формат) как десятичное число [01,12]. |
% и | День года в виде десятичного числа [001,366]. |
% м | Месяц в виде десятичного числа [01,12]. |
% M | Минута в виде десятичного числа [00,59]. |
% п | Эквивалент AM или PM. |
% S | Секунда в виде десятичного числа [00,61]. |
% U | Номер недели в году (воскресенье как первый день недели) в виде десятичного числа [00,53]. Все дни нового года, предшествующие первому воскресенью, считаются нулевой неделей. |
% w | День недели в виде десятичного числа [0 (воскресенье), 6]. |
% З | Номер недели в году (понедельник как первый день недели) в виде десятичного числа [00,53]. Все дни нового года, предшествующие первому понедельнику, считаются нулевой неделей. |
% x | Соответствующее представление даты. |
% X | Соответствующее представление времени. |
% и | Год без века в виде десятичного числа [00,99]. |
% Y | Год с десятичным числом столетия. |
% Z | Имя часового пояса (без символов, если часовой пояс не существует). |
%% | Буквальный символ "%". |
Получите текущую дату и время в Python с помощью модуля datetime
Синтаксис:
сейчас = datetime.datetime.now () сейчас. час now.mintue сейчас год now.day сейчас.месяц
Примеры
#! / Usr / bin / python дата и время импорта я = datetime.datetime.now () print ("Текущая дата и время =% s"% i) print ("Дата и время в формате ISO =% s"% i.isoformat ()) print ("Текущий год =% s"% i.год) print ("Текущий месяц =% s"% i.month) print ("Текущая дата (день) =% s"% i.day) print ("формат дд / мм / гггг =% s /% s /% s"% (i.day, i.month, i.year)) print ("Текущий час =% s"% i.hour) print ("Текущая минута =% s"% i.minute) print ("Текущая секунда =% s"% i.second) print ("чч: мм: сс формат =% s:% s:% s"% (i.hour, i.month, i.second))
Примеры выходных данных:
Текущая дата и время = 2013-10-05 00: 15: 31.769049 Дата и время в формате ISO = 2013-10-05T00: 15: 31.769049 Текущий год = 2013 Текущий месяц = 10 Текущая дата (день) = 5 формат дд / мм / гггг = 10.05.2013 Текущий час = 0 Текущая минута = 15 Текущая секунда = 31 чч: мм: сс формат = 0:10:31
Я тестировал вышеуказанные программы с Python 2 и Python 3:
Как получить текущую дату и время в Python?
Вы можете использовать date.strftime (format) , чтобы получить строку, представляющую дату, управляемую явной строкой формата (см. Таблицу выше):
#! / Usr / bin / python from datetime import datetime я = дата и время.сейчас же() печать str (i) print i.strftime ('% Y /% m /% d% H:% M:% S')
Примеры выходных данных:
2013-10-05 00: 20: 30.495228 2013/10/05 00:20:30
Заключение
Вы узнали, как получить сегодняшнюю дату, текущую дату и время в Python, используя различные методы. См. Модуль времени и даты и времени python для получения дополнительной информации.
дата и время - npm
Эта библиотека представляет собой минималистичный набор функций для управления датой и временем JS.Это крошечный, простой, легкий в освоении.
Почему
Модули
JS в настоящее время становятся все более обширными и сложными, а также существует множество зависимостей. Имеет смысл стараться, чтобы каждый модуль был простым и маленьким.
Возможности
- Минималистский. Примерно 2к. (уменьшены и сжаты)
- Расширяемый. Поддержка системы плагинов.
- Поддержка нескольких языков.
- Универсальный / Изоморфный. Работает везде.
- Поддержка старых версий браузера. Работает даже на IE6.:)
Установить
npm install date-and-time --save
Последние изменения
0,14,2
- Исправлена уязвимость, связанная с отказом в обслуживании (ReDoS) регулярным выражением.
0,14,1
- Исправлена ошибка: символы в квадратных скобках
[]
не проверяются.
- Исправлена ошибка: символы в квадратных скобках
0,14.0
Фиксация функции
Мы решили заморозить эту функцию в этой версии (кроме следующей). Следующим будет 1.0.0.
Для поддержки модулей
ES
(без транспиляции) в следующей версии метод импорта был изменен в локали()
и подключаемом модуле()
. В этой версии вы увидите предупреждающее сообщение при использовании старого метода. Подробности см. На LOCALE.md и PLUGINS.md.Добавлена функция
transform ()
для преобразования формата строки даты.При изменении формата ранее вы должны были преобразовать строку даты в объект даты с помощью функцииparse ()
, а затем снова отформатировать ее в форматеformat ()
, но теперь вы можете сделать это с помощью одной функции.
// 08.03.2020 => 03.08.2020 date.transform ('3/8/2020', 'Д / М / ГГГГ', 'М / Д / ГГГГ'); // ранее const сегодня = date.parse ('8.03.2020', 'Д / М / ГГГГ'); date.format (сегодня, М / Д / ГГГГ); // => '03.08.2020'
Использование
const date = require ('дата-и-время');
дата импорта из 'date-and-time';
окно.Дата; // глобальный объект
API
формат (dateObj, formatString [, utc])
- Форматирование даты.
- @param { Date } dateObj - объект Date
- @param { string | Array.
- @param { boolean } [utc] - вывод в формате UTC
- @returns { string } форматированная строка
const now = new Date (); Дата.формат (теперь, 'ГГГГ / ММ / ДД ЧЧ: мм: сс'); // => '2015/01/02 23:14:05' date.format (теперь, 'ддд, МММ ДД ГГГГ'); // => 'Пт, 02 января 2015' date.format (теперь 'чч: мм A [GMT] Z'); // => '11: 14 PM GMT-0800 ' date.format (теперь 'чч: мм A [GMT] Z', истина); // => '07: 14 AM GMT + 0000 ' const pattern = date.compile ('ддд, МММ ДД ГГГГ'); date.format (теперь, шаблон); // => 'Пт, 02 января 2015'
Доступные токены и их значения следующие:
жетон | означает | примеры вывода |
---|---|---|
ГГГГ | год из четырех цифр | 0999, 2015 |
ГГ | год двузначный | 99, 01, 15 |
Y | год из четырех цифр без дополнения нулями | 2, 44, 888, 2015 |
ММММ | название месяца (длинное) | январь, декабрь |
МММ | название месяца (краткое) | янв, декабрь |
мм | месяц с дополнением нулями | 01, 12 |
М | месяц | 1, 12 |
DD | дата с дополнением нулями | 02, 31 |
D | дата | 2, 31 |
дддд | день недели (длинный) | Пятница, Воскресенье |
ддд | день недели (короткий) | пт, вс |
дд | день недели (очень короткий) | Пт, Вс |
HH | 24 часа с заполнением нулями | 23, 08 |
H | круглосуточно | 23, 8 |
чч | 12 часов с заполнением нулями | 11, 08 |
ч | 12 часов | 11, 8 |
А | меридием (прописные) | AM, PM |
мм | минута с заполнением нулями | 14, 07 |
м | минута | 14, 7 |
н.с. | секунда с заполнением нулями | 05, 10 |
с | секунда | 5, 10 |
SSS | миллисекунда (высокая точность) | 753, 022 |
SS | миллисекунда (средняя точность) | 75, 02 |
S | миллисекунда (низкая точность) | 7, 0 |
Z | смещение часового пояса | +0100, -0800 |
Вы также можете использовать следующие токены, импортировав плагины.Подробности см. На PLUGINS.md.
жетон | означает | примеры вывода |
---|---|---|
DDD | порядковое обозначение даты | 1-я, 2-я, 3-я |
AA | меридием (прописные буквы с многоточием) | A.M., P.M. |
а | меридием (строчная буква) | утра, вечера |
а.о. | меридием (строчная с многоточием) | а.м., после полудня |
ПРИМЕЧАНИЕ 1. Комментарии
Строка в скобках [...]
в формате Строка
будет проигнорирована как комментарии:
date.format (новая дата (), 'ДД- [ММ] -ГГГГ'); // => '02 -ММ-2015 ' date.format (новая Дата (), '[ДД- [ММ] -ГГГГ]'); // => 'ДД- [ММ] -ГГГГ'
ПРИМЕЧАНИЕ 2. Вывод в формате UTC
.
Эта функция обычно выводит локальную строку даты и времени. Установите значение true для опции utc
(третий параметр), если вы хотите получить строку даты и времени в формате UTC.
date.format (new Date (), 'чч: мм A [GMT] Z'); // => '11: 14 PM GMT-0800 ' date.format (new Date (), 'чч: мм A [GMT] Z', true); // => '07: 14 AM GMT + 0000 '
ПРИМЕЧАНИЕ 3. Больше токенов
Вы также можете определить свои собственные токены. Подробности см. На EXTEND.md.
parse (dateString, arg [, utc])
- Анализ строки даты.
- @param { string } dateString - строка даты
- @param { string | Array.
- @param { boolean } [utc] - вводится как UTC
- @returns { Date } дата постройки
дата.parse ('2015/01/02 23:14:05', 'ГГГГ / ММ / ДД ЧЧ: мм: сс'); // => 2 января 2015 г. 23:14:05 GMT-0800 date.parse ('02-01-2015 ',' ДД-ММ-ГГГГ '); // => 2 января 2015 г., 00:00:00 GMT-0800 date.parse ('11: 14: 05 PM ',' чч: мм: сс A '); // => 1 января 1970 г., 23:14:05 GMT-0800 date.parse ('11: 14: 05 PM ',' чч: мм: сс A ', истина); // => 1 января 1970 г., 23:14:05 GMT + 0000 (1 января 1970 г. 15:14:05 GMT-0800) date.parse ('23: 14: 05 GMT + 0900 ',' ЧЧ: мм: сс [GMT] Z '); // => 1 января 1970 г., 23:14:05 GMT + 0900 (1 января 1970 г., 06:14:05 GMT-0800) Дата.parse ('Jam 1 2017', 'MMM D YYYY'); // => Недействительная дата date.parse («29 февраля 2017 г.», «МММ Д ГГГГ»); // => Недействительная дата
Доступные токены и их значения следующие:
жетон | означает | пример приемлемой формы |
---|---|---|
ГГГГ | год из четырех цифр | 0999, 2015 |
Y | год из четырех цифр без дополнения нулями | 2, 44, 88, 2015 |
ММММ | название месяца (длинное) | январь, декабрь |
МММ | название месяца (краткое) | янв, декабрь |
мм | месяц с дополнением нулями | 01, 12 |
М | месяц | 1, 12 |
DD | дата с дополнением нулями | 02, 31 |
D | дата | 2, 31 |
HH | 24 часа с заполнением нулями | 23, 08 |
H | круглосуточно | 23, 8 |
чч | 12 часов с заполнением нулями | 11, 08 |
ч | 12 часов | 11, 8 |
А | меридием (прописные) | AM, PM |
мм | минута с заполнением нулями | 14, 07 |
м | минута | 14, 7 |
н.с. | секунда с заполнением нулями | 05, 10 |
с | секунда | 5, 10 |
SSS | миллисекунда (высокая точность) | 753, 022 |
SS | миллисекунда (средняя точность) | 75, 02 |
S | миллисекунда (низкая точность) | 7, 0 |
Z | смещение часового пояса | +0100, -0800 |
Вы также можете использовать следующие токены, импортировав плагины.Подробности см. На PLUGINS.md.
жетон | означает | пример приемлемой формы |
---|---|---|
ГГ | год двузначный | 90, 00, 08, 19 |
Y | год из двух цифр без дополнения нулями | 90, 0, 8, 19 |
А | меридием | утра, вечера, утра, вечера, утра, вечера, утра, вечера |
дддд | день недели (длинный) | Пятница, Воскресенье |
ддд | день недели (короткий) | пт, вс |
дд | день недели (очень короткий) | Пт, Вс |
SSSSSS | мкс (высокая точность) | 123456, 000001 |
SSSSS | мкс (средняя точность) | 12345, 00001 |
SSSS | мкс (низкая точность) | 1234, 0001 |
ПРИМЕЧАНИЕ 1.Недействительная дата
Если функция не справится с синтаксическим анализом, она вернет Invalid Date
. Обратите внимание, что Invalid Date
является объектом Date, а не NaN
или null
. Вы можете определить, является ли объект Date недействительным, следующим образом:
const сегодня = date.parse ('Jam 1 2017', 'MMM D YYYY'); if (isNaN (сегодня)) { // Отказ }
ПРИМЕЧАНИЕ 2. Введите как UTC
.
Эта функция обычно предполагает, что dateString
является местным указателем даты и времени.Установите значение true для опции utc
(3-й параметр), если это дата-время в формате UTC.
date.parse ('11: 14: 05 PM ',' чч: мм: сс A '); // => 1 января 1970 г., 23:14:05 GMT-0800 date.parse ('11: 14: 05 PM ',' чч: мм: сс A ', истина); // => 1 января 1970 г., 23:14:05 GMT + 0000 (1 января 1970 г., 15:14:05 GMT-0800)
ПРИМЕЧАНИЕ 3. Дата и время по умолчанию
Дата по умолчанию: 1 января 1970 г.
, время 00: 00: 00.000
. Непереданные значения будут дополнены ими:
дата.parse ('11: 14: 05 PM ',' чч: мм: сс A '); // => 1 января 1970 г., 23:14:05 GMT-0800 date.parse («Февраль 2000», «МММ ГГГГ»); // => 1 февраля 2000 г., 00:00:00 GMT-0800
ПРИМЕЧАНИЕ 4. Максимальная дата / минимальная дата
Максимальная дата для синтаксического анализа - 31 декабря 9999
, минимальная дата - 1 января 0001
.
date.parse ('31 декабря 9999', 'MMM D YYYY'); // => 31 декабря 9999 00:00:00 GMT-0800 date.parse ('31 декабря 10000', 'МММ Д ГГГГ'); // => Недействительная дата date.parse ('1 января 0001', 'МММ Д ГГГГ'); // => 1 января 0001 00:00:00 GMT-0800 Дата.parse ('1 января 0000', 'МММ Д ГГГГ'); // => Недействительная дата
ПРИМЕЧАНИЕ 5. 12-часовая нотация и Meridiem
Если используется токен hh
или h
(12-часовой), используйте вместе токен A
(меридием), чтобы получить правильное значение.
date.parse ('11: 14: 05 ',' чч: мм: сс '); // => 1 января 1970 г., 11:14:05 GMT-0800 date.parse ('11: 14: 05 PM ',' чч: мм: сс A '); // => 1 января 1970 г., 23:14:05 GMT-0800
ПРИМЕЧАНИЕ 6. Отключение токена
Используйте квадратные скобки []
, если строка даты и времени включает некоторые символы токена.Токены в квадратных скобках в формате Строка
будет интерпретироваться как обычные символы:
date.parse ('12 часов 34 минуты ',' ЧЧ часы мм минуты '); // => Недействительная дата date.parse ('12 часов 34 минуты ',' ЧЧ [часы] мм [минуты] '); // => 1 января 1970 г. 12:34:00 GMT-0800
ПРИМЕЧАНИЕ 7. Подстановочный знак
Пробел работает как маркер подстановки. Этот токен ни во что не интерпретируется. Это означает, что конкретную переменную строку можно игнорировать. Например, если вы хотите игнорировать часть времени из строки даты, вы можете написать следующее:
// Это будет ошибка.date.parse ('2015/01/02 11:14:05', 'ГГГГ / ММ / ДД'); // => Недействительная дата // Отрегулируйте длину строки формата, добавив пробелы той же длины, что и игнорируемая часть, в ее конец. date.parse ('2015/01/02 11:14:05', 'ГГГГ / ММ / ДД'); // => 2 января 2015 г. 00:00:00 GMT-0800
ПРИМЕЧАНИЕ 8. Многоточие
.
Синтаксический анализатор поддерживает токен ...
(эллипс). Приведенный выше пример также можно записать так:
date.parse ('2015/01/02 11:14:05', 'ГГГГ / ММ / ДД... '); // => 2 января 2015 г. 00:00:00 GMT-0800
скомпилировать (formatString)
- Составление строки формата для синтаксического анализатора.
- @param { string } formatString - строка формата
- @returns { Array.
const pattern = date.compile ('MMM D YYYY h: m: s A'); date.parse ('22 марта 2019 г. 14:54:21', шаблон); date.parse ('27 июля 2019 г. 4:15:24 AM', шаблон); date.parse ('25 декабря 2019 г., 3:51:11', шаблон); Дата.формат (новая Дата (), шаблон); // => 16 марта 2020 г., 18:24:56
Если вы собираетесь вызывать формат ()
, анализ ()
или isValid ()
много раз с одним строковым форматом, рекомендуется предварительно скомпилировать и повторно использовать его для повышения производительности.
препарс (dateString, arg)
- Предварительный анализ строки даты.
- @param { string } dateString - строка даты
- @param { string | Array.
- @ возвращает { Object } структуру даты
Эта функция принимает те же параметры, что и функция parse ()
, но в отличие от нее возвращает следующую структуру даты:
дата.Preparse ('Пт, янв 2015, 02 23:14:05 GMT-0800', 'МММ ГГГГ ДД ЧЧ: мм: сс [GMT] Z'); { Г: 2015, // Год M: 1, // Месяц D: 2, // День H: 23, // 24 часа А: 0, // Меридием ч: 0, // 12-часовой m: 14, // Минута s: 5, // Секунда S: 0, // Миллисекунда Z: 480, // смещение Timsezone _index: 33, // Смещение указателя _length: 33, // Длина строки даты _match: 7 // Подсчет совпадений токенов }
Эта структура даты обеспечивает результат синтаксического анализа.Вы сможете узнать по нему, как была проанализирована строка даты (или почему синтаксический анализ не удался).
isValid (arg1 [, arg2])
- Проверка.
- @param { Object | string } arg1 - структура даты или строка даты
- @param { string | Array.
- @returns { boolean }, является ли строка даты действительной датой
Эта функция принимает либо точно такие же параметры с parse ()
, либо структуру даты, которую возвращает prepare ()
, оценивает их достоверность.
date.isValid ('2015/01/02 23:14:05', 'ГГГГ / ММ / ДД ЧЧ: мм: сс'); // => правда date.isValid ('29-02-2015 ',' ДД-ММ-ГГГГ '); // => ложь
const result = date.preparse ('2015/01/02 23:14:05', 'ГГГГ / ММ / ДД ЧЧ: мм: сс'); date.isValid (результат); // => истина
преобразовать (dateString, arg1, arg2 [, utc])
- Преобразование строки даты.
- @param { string } dateString - строка даты
- @param { строка | Массив.
- @param { string | Array.
- @param { boolean } [utc] - вывод в формате UTC
- @returns { string } форматированная строка
Эта функция преобразует формат строки даты. Второй параметр, arg1
, является его форматной строкой.Список доступных токенов равен parse ()
. Третий параметр, arg2
, представляет собой преобразованную строку формата. Список доступных токенов соответствует формату ()
.
// 08.03.2020 => 03.08.2020 date.transform ('3/8/2020', 'Д / М / ГГГГ', 'М / Д / ГГГГ'); // 13:05 => 13:05 date.transform ('13: 05 ',' ЧЧ: мм ',' чч: мм A ');
addYears (dateObj, лет)
- Добавление лет.
- @param { Date } dateObj - объект Date
- @param { number } years - количество лет, на которое нужно добавить
- @returns { Date } дату после добавления значения
const now = new Date (); const next_year = дата.addYears (сейчас, 1);
addMonths (dateObj, месяцев)
- Добавление месяцев.
- @param { Date } dateObj - объект Date
- @param { number } months - количество месяцев, которые нужно добавить
- @returns { Date } дату после добавления значения
const now = new Date (); const next_month = date.addMonths (сейчас, 1);
addDays (dateObj, days)
- Добавление дней.
- @param { Date } dateObj - объект Date
- @param { number } days - количество дней для добавления
- @returns { Date } дату после добавления значения
const now = new Date (); const вчера = дата.addDays (сейчас, -1);
addHours (dateObj, часы)
- Добавление часов.
- @param { Date } dateObj - объект Date
- @param { number } hours - количество часов, которое нужно добавить
- @returns { Date } дату после добавления значения
const now = new Date (); const an_hour_ago = date.addHours (сейчас, -1);
addMinutes (dateObj, minutes)
- Добавление минут.
- @param { Date } dateObj - объект Date
- @param { number } minutes - количество минут, которое нужно добавить
- @returns { Date } дату после добавления значения
const now = new Date (); const two_minutes_later = дата.addMinutes (теперь 2);
addSeconds (dateObj, секунды)
- Добавление секунд.
- @param { Date } dateObj - объект Date
- @param { number } seconds - количество секунд, которое нужно добавить
- @returns { Date } дату после добавления значения
const now = new Date (); const three_seconds_ago = date.addSeconds (сейчас, -3);
addMilliseconds (dateObj, миллисекунды)
- Добавление миллисекунд.
- @param { Date } dateObj - объект Date
- @param { number } миллисекунды - количество миллисекунд для добавления
- @returns { Date } дату после добавления значения
const now = new Date (); const a_millisecond_later = date.addMilliseconds (сейчас, 1);
вычесть (дата1, дата2)
- Вычитание.
- @param { Date } date1 - объект Date
- @param { Date } date2 - объект Date
- @returns { Object } объект результата, вычитая date2 из date1
const сегодня = новая дата (2015, 0, 2); const вчера = новая дата (2015, 0, 1); Дата.вычесть (сегодня, вчера) .toDays (); // => 1 = сегодня - вчера date.subtract (сегодня, вчера) .toHours (); // => 24 date.subtract (сегодня, вчера) .toMinutes (); // => 1440 date.subtract (сегодня, вчера) .toSeconds (); // => 86400 date.subtract (сегодня, вчера) .toMilliseconds (); // => 86400000
isLeapYear (г)
- Високосный год.
- @param { number } y - год
- @returns { boolean }, является ли год високосным
дата.isLeapYear (2015); // => ложь date.isLeapYear (2012); // => истина
isSameDay (дата1, дата2)
- Сравнение двух дат.
- @param { Date } date1 - объект Date
- @param { Date } date2 - объект Date
- @returns { boolean }, совпадают ли даты с одним днем (время игнорируется)
const date1 = новая дата (2017, 0, 2, 0); // 2 января 2017 г. 00:00:00 const date2 = новая дата (2017, 0, 2, 23, 59); // 2 января 2017 23:59:00 const date3 = новая дата (2017, 0, 1, 23, 59); // 1 января 2017 23:59:00 Дата.isSameDay (дата1, дата2); // => правда date.isSameDay (дата1, дата3); // => ложь
языковой стандарт ([код [, языковой стандарт]])
- Измените языковой стандарт или установите новое определение языкового стандарта.
- @param { string } [code] - код языка
- @param { Object } [locale] - определение локали
- @returns { string } текущий код языка
Возвращает текущий языковой код, если вызывается без каких-либо параметров.
date.locale (); // => "ru"
Чтобы переключиться на любой другой язык, вызовите его с помощью кода языка.
date.locale ('es'); // Переключение на испанский
Подробности см. На LOCALE.md.
удлинить (расширение)
- Расширение локали.
- @param { Object } extension - определение локали
- @returns { void }
Расширить текущий языковой стандарт. Подробности см. На EXTEND.md.
плагин (имя [, расширение])
- Импорт или определение плагина.
- @param { string } name - имя плагина
- @param { Object } [extension] - определение локали
- @returns { void }
Плагин
- это именованное определение локали, определенное с помощью extend ()
. Подробности см. На PLUGINS.md.
Поддержка браузера
Chrome, Firefox, Safari, Edge и Internet Explorer 6+.
Лицензия
MIT
СЕГОДНЯ Функция | Smartsheet Learning Center
Используется в столбце «Дата» для возврата текущей даты.
Примечания по использованию
Smartsheet обновит все экземпляры функции СЕГОДНЯ на листе до текущей даты при выполнении любого из следующих действий:
- Вы открываете лист и сохраняете его
- Вы добавляете новую строку на лист из отправки формы
- Вы вносите изменения в лист с помощью запроса на обновление или утверждения (подробнее об этих предупреждениях здесь)
- Вы обновляете лист посредством отчета (подробнее об отчетах здесь)
- Связанная ячейка обновляет лист (подробнее о связывании ячеек здесь)
- Вы открываете лист, на который ссылается формула перекрестных листов (подробнее о формулах перекрестных листов здесь)
Следующий код , а не , обновит формулы, которые используют функцию СЕГОДНЯ, до текущей даты:
- Открывается отчет о функции на листе.
- Открывается информационная панель, отображающая информацию с листа.
Вы можете использовать СЕГОДНЯ для сравнения других дат с текущей датой. Например, формула = ЕСЛИ (СЕГОДНЯ ()> [Срок выполнения] 1, «Просроченный») вставит «Просроченный» в ячейку, как только текущая дата превысит предполагаемый срок выполнения.
Примеры
Этот пример ссылается на следующую информацию таблицы:
Всего транзакции | Продано квартир | В наличии? | Дата продажи | Дата заказа | |
---|---|---|---|---|---|
1 | 1,170.00 | 78 | правда | 12.02.19 | 12.02.19 |
2 | 1 491,00 | 42 | ложь | 15.02.19 | 15.02.19 |
3 | 812,00 | 217 | правда | 20.02.19 | 20.02.19 |
В приведенной выше таблице приведены несколько примеров использования СЕГОДНЯ на листе:
Формула | Описание | Результат |
---|---|---|
= СУММЕСЛИ ([Дата продажи]: [Дата продажи], <= СЕГОДНЯ (), [Всего транзакции]: [Сумма транзакции]) | СУММИРОВАТЬ значения в столбце «Сумма транзакции» для строк, в которых дата в столбце «Дата продажи» меньше или равна сегодняшней дате.Все 3 ряда соответствуют критериям. | 4,285 |
= ЕСЛИ (И ([В наличии?] 2 = ложь, [Дата заказа] 2 <= СЕГОДНЯ (7)), «Красный», «Зеленый») | Если флажок в поле «Есть в наличии?» столбец для строки 2 не отмечен (false), а дата в столбце «Дата заказа» для строки 2 меньше или равна дате через 7 дней от сегодняшнего дня, вернуть «Красный», если не вернуть «Зеленый». | Красный |
= СУММЕСЛИМН ([Продано единиц]: [Продано единиц], [Дата продажи]: [Дата продажи],> = СЕГОДНЯ (-30), [В наличии?]: [В наличии?], Верно) | СУММИРОВАТЬ значения в столбце «Продано единиц» для строк, в которых дата в столбце «Дата продажи» больше или равна дате 30 дней назад, а также установлен флажок в поле «В наличии?» столбец отмечен (истина). | 217 |
Параметры даты в запросах источников данных - Справочный центр Klipfolio
Параметр даты в запросе источника данных может иметь значение
.
- жестко запрограммированное значение, например, 2015-12-12
- переменная, например {props.dateVar}
- выражение даты, вычисляемое методами даты, обсуждаемыми в этой статье
Примечание: В этой статье упоминаются переменные. Обратите внимание, что переменные применимы только к Klips.
Выражение даты используется для определения даты / времени, обычно относительно текущей даты. Это полезно при извлечении данных для подвижного диапазона времени, например, при извлечении данных с начала месяца до сегодняшнего дня или с предыдущей недели.
ВАЖНО:
- Выражения даты должны быть введены в URL-адрес запроса, а не как параметр запроса во время создания источника данных.
- Выражения даты могут содержать переменные с использованием синтаксиса:
props.varName
.
Формат даты
В этой статье есть несколько ссылок на формат даты, который описывает, как представлена дата. Даты можно форматировать по-разному. Например, 1 декабря 2015 года можно представить как:
- 1 декабря 2015 г. (ММММ д, гггг)
- 12.01.2015 (дд-ММ-гггг)
- 1448
0 (формат времени Unix, количество секунд, прошедших с полуночи 1 января 1970 года по всемирному координированному времени) Для получения дополнительной информации см. Форматы даты.
Синтаксис
Выражение даты обозначается ключевым словом date, за которым следует цепочка из одного или нескольких методов даты и заключено в фигурные скобки:
{date.setMethod.dateSettings.dateManipulationMethods.dateShortcut.formatMethod}
Дата Описание методов
Все методы необязательны и должны использоваться в порядке, указанном в следующей таблице. По умолчанию методы даты возвращаются в EST.
МЕТОД ОПИСАНИЕ ПРИМЕР дата
Обязательное ключевое слово.Устанавливает дату / время на текущую дату / время. дата setMethods используются для установки даты / времени. Выражение даты может содержать ноль или один setMethod.
набор (dateString)
Устанавливает дату / время на значение, указанное в dateString, где dateString использует формат yyyy-MM-dd. Время установлено на 00:00:00 EST. комплект ("2016-01-31") набор (dateString, dateFormat)
Устанавливает дату равной значению, заданному параметром dateString, в формате, заданном параметром dateFormat. комплект («310116», «ддММгг») начало () Эквивалентно установленному («00:00:00», «чч: мм: сс»). начало () конец () Эквивалент установленному ("23:59:59", "чч: мм: сс"). конец () dateSettings используется для определения настроек часового пояса, первого дня недели и первого месяца года. Выражение даты может содержать ноль или более параметров dateSettings.
tz (tzCode) Установите дату / время в указанном часовом поясе. tz ("эст") firstDOW (dayOfWeek) Установите первый день недели на вс, пн, вт, ср, чт, пт, сб.
Используется с методами startOfWeek и endOfWeek.
Если этот метод не используется, первым днем недели по умолчанию является воскресенье.
firstDOW ("пн") firstMOY (месяц) Установите в качестве первого месяца года один из следующих чисел: январь, февраль, мар, апрель, май, июн, июл, авг, сен, октябрь, ноя, декабрь. Используется с методами startOfYear и endOfYear.
Если этот метод не используется, первым месяцем года по умолчанию является январь.
firstMOY ("ян") dateManipulationMethods используются для изменения выражения даты путем добавления или вычитания единиц времени. Выражение даты может содержать ноль или более dateManipulationMethods.
добавить (целое число) Добавить n дней к текущей дате / времени.Используйте отрицательные числа, чтобы вычесть дни. доб (-7)
доб. (14)
addMinutes (целое число) Добавьте n минут к текущей дате / времени. Для вычитания минут используйте отрицательные числа. addMinutes (30)
addMinutes (-15)
addHours (целое число) Добавить n часов к текущей дате / времени. Используйте отрицательные числа, чтобы вычесть часы. addHours (-1)
addHours (5)
addWeeks (целое число) Добавьте n недель к текущей дате / времени.Используйте отрицательные числа, чтобы вычесть неделю. недель (4)
addWeeks (-26)
addMonths (целое число) Добавьте n месяцев к текущей дате / времени. Используйте отрицательные числа, чтобы вычесть месяцы. addMonths (-1)
месяца (5)
addQuarters (целое число) Добавить n кварталов к текущей дате / времени. Для вычитания четвертей используйте отрицательные числа. addQuarters (1)
addQuarters (-3)
addYears (целое число) Добавьте n лет к текущей дате / времени.Используйте отрицательные числа, чтобы вычесть годы. addYears (-2)
доп. Лет (1)
dateShortcuts устанавливает дату / время в формате гггг-мм-дд. Выражение даты может содержать ноль или одну дату.
сегодня Установите дату / время на текущую дату / время EST. сегодня вчера Установите дату / время на вчерашний день, текущее время EST. вчера последний7дней Установите дату / время на 7 дней назад, текущее время EST. last7дней last30дней Установите дату / время на 30 дней назад / текущее время EST. last30дней последние60 дней Установите дату / время на 60 дней назад / текущее время EST. last60дней startOfWeek Установите дату / время на начало текущей недели / текущего времени EST, где начало недели указывается с помощью firstDOW. startOfWeek конец недели Установите дату / время на конец текущей недели / текущее время EST, где начало недели указывается с помощью firstDOW. конец недели начало месяца Установите дату / время на начало текущего месяца / текущего времени EST, где начало месяца указано в firstMOY. начало месяца конец месяца Установите дату / время на конец текущего месяца / текущего времени EST, где начало месяца указано в firstMOY. конец месяца startOfQuarter Устанавливает дату / время на начало текущего квартала / текущего времени EST, где начало квартала определяется параметром firstMOY. startOfQuarter конец квартала Устанавливает дату / время на конец текущего квартала / текущего времени EST, где начало квартала определяется параметром firstMOY. endOfQuarter начало года Установите дату / время на начало текущего года / текущего времени EST, где начало года указано в firstMOY. начало года конец года Установите дату / время на конец текущего года / текущего времени EST, где начало года указывается в firstMOY. конец года Формат Методы требуются, когда либо
- dateShortcut не используется в выражении даты, или
- dateShortcut используется в выражении даты, и требуемый формат даты отличается от yyyy-MM-dd (по умолчанию dateShortcuts возвращает формат yyyy-MM-dd)
Выражение даты может содержать ноль или один formatMethods.
формат () Форматировать дату в формате гггг-ММ-дд формат () формат (формат даты) Отформатируйте дату в указанном формате. Формат ("ддММгггг")
формат ("unixtime") или формат ("epochTime")
Примеры
Следующее извлекает данные с первого дня текущего квартала в 00:00:00 EST (начальная дата) до текущей даты в 12:00:00 EST (конечная дата), оба в формате по умолчанию yyyy-MM- формат dd.
https://www.webservice.com/data?start-date = {date.tz ("cst"). startOfQuarter} & end-date = {date.set ("12:00:00", "ЧЧ: мм: сс").сегодня}
Следующий код извлекает данные с начала предыдущего года в текущее время по Гринвичу (дата начала) до текущей даты / времени по Гринвичу (дата окончания).
https://www.webservice.com/data?start-date = {date.addYears (-1) .startOfYear.format ("unixtime")} и end-date = {date.today.format ("unixtime")}
Некоторые API-интерфейсы веб-служб требуют, чтобы дата / время указывались во времени Unix в миллисекундах; в этих случаях добавьте 000 к параметру
unixtime
; например:
https: // www.webservice.com/data?start-date = {date.add (-7) .format ('unixtime')} 000 & end-date = {date.today.format ("unixtime")} 000
Следующее извлекает данные с начала финансового года до сегодняшнего дня, когда финансовый год начинается 1 апреля. В этом примере используется firstMOY.
https://www.webservice.com/data?start-date = {date.firstMOY ("апр"). startOfYear.format ()} & end-date = {date.today}
Следующее извлекает данные за предыдущую неделю, где первый день недели - понедельник.В этом примере используется firstDOW.
https://www.webservice.com/data?start-date = {date.firstDOW ("mon"). addWeeks (-1) .startOfWeek.format ()} & end-date = {date.firstDOW ("mon"). addWeeks (-1) .endOfWeek.format ( )}
Ниже приведены примеры использования
установлена на часовой пояс CST. Синтаксис для включения переменных в выражения даты:
часовой пояс
Переменная
.
реквизит.
часовой пояс
https: // www.webservice.com/data?startDate = {date.tz (реквизиты.
часовой пояс
) .add (props.days) .format ()}
https://www.webservice.com/data?startDate = {date.tz (реквизиты.
часовой пояс
) .startOfMonth.format (props.format)}Общие запросы
Вы можете скопировать эти примеры запросов и изменить параметры даты, выделенные зеленым цветом, в соответствии с вашими данными.
Google Adwords
ВЫБЕРИТЕ Amount, Period, Ctr, Clicks, ConversionRate, Cost, CostPerConversion,
Date, Impressions, ConversionValue FROM CAMPAIGN_PERFORMANCE_REPORTВО ВРЕМЯ {дата.addMonths (-1) .format ('yyyyMMdd')}, {date.today.format ('yyyyMMdd')}
-
ВО ВРЕМЯ {date.add (-7) .format ('yyyyMMdd')}, {date.today.format ('yyyyMMdd')}
-
ВО ВРЕМЯ {date.addMonths (-1) .startOfMonth.format ('yyyyMMdd')}, {date.today.format ('yyyyMMdd')}
Google Analytics
https://www.googleapis.com/analytics/v3/data/ga?ids=ga:&dimensions=ga:country,ga:date&metrics=ga:sessions&
start-date = {дата.last30Days} & end-date = {date.today}
-
start-date = {date.addMonths (-3) .format ()} & end-date = {date.today}
-
start-date = {date.addMonths (-3) .startOfMonth.format ()} & end-date = {date.today}
-
дата начала = {date.addYears (-1) .startOfYear.format ()} & end-date = {date.addYears (-1) .endOfYear.format ()}
Facebook
https: // график.facebook.com/v2.5/insights/page_views/day?
с = {date.add (-90) .format ()} & до = {date.today}
-
с = {date.last30Days} и до = {date.today}
Для проверки результатов, возвращаемых выражением даты, создайте источник данных REST / URL в Klipfolio (сохранять его не обязательно).