Оригинал на GitHub
Вопрос
Есть крон, который каждый день отправляет по почте некую напоминалку в виде таблицы.
Код выглядит вот таким образом:
=: if(condition: $sel != $#lc; then: $send)
sel: selectList(table: 'requests'; field: 'id'; where: 'status' = "open")
send: emailSend(to: $userssend; title: "Daily report on open requests"; body: $body)
userssend: select(table: 'users'; field: 'email'; where: 'roles' = 4)
body: textByTemplate(template: "template_name"; data: $data)
data: rowCreate(field: "table" = $row)
row: rowCreate(field: "template" = "inner_template_row"; field: "data" = $rowlist)
rowlist: selectRowList(table: 'requests'; sfields: json`["customer","suppliers","offers"]`; field: 'number'; field: 'application_deadline'; field: 'request_sent'; field: 'proposal_client'; where: 'status' = "open"; order: 'number' asc)
application_deadline'
, request_sent
, proposal_client
— это поля типа "дата" и при наличии в данных полях null необходимо, что бы подставлялось значение в шаблоне в ячейках "Пусто"/"Нет"/"---" (в общем что угодно, но не "").
Ответ
Так-как поля application_deadline'
, request_sent
, proposal_client
это поля типа Дата и хранятся в Totum в формате Y-m-d, то логично их отформатировать в принятых человекочитаемый формат в вашем регионе.
Сделать это можно функцией dateFormat:
=: if(condition: $sel != $#lc; then: $send)
sel: selectList(table: 'requests'; field: 'id'; where: 'status' = "open")
send: emailSend(to: $userssend; title: "Daily report on open requests"; body: $body)
userssend: select(table: 'users'; field: 'email'; where: 'roles' = 4)
body: textByTemplate(template: "template_name"; data: $data)
data: rowCreate(field: "table" = $row)
row: rowCreate(field: "template" = "inner_template_row"; field: "data" = $dateformat)
dateformat: dateFormat(date: $rowlist; format: "d.m.Y"; keys: json`["application_deadline","request_sent","proposal_client"]`; recursive: true; replace: "Empty")
rowlist: selectRowList(table: 'requests'; sfields: json`["customer","suppliers","offers"]`; field: 'number'; field: 'application_deadline'; field: 'request_sent'; field: 'proposal_client'; where: 'status' = "open"; order: 'number' asc)
Для функции dateFormat можно задать список ключей, которые должны быть обработаны в параметре keys, формат, указать, что надо обработать весь массив передав recursive: true и при помощи параметра replace можно указать значение на которое надо заменить "" и null.