3.7Kпросмотров
98.1%от подписчиков
22 декабря 2025 г.
statsScore: 4.0K
Производственный календарь 3
#АнатомияФункций – CustomFunctions Всем привет!
В преддверии Нового Года решил ещё раз поднять тему производственных календарей (предыдущая итерация). По этому поводу код:
(optional year as number)=>[ year = Text.From(if year=null then Date.Year(DateTime.LocalNow()) else year), from = Web.Contents("http://www.consultant.ru/law/ref/calendar/proizvodstvennye/"&(if year="2020" then "2020b" else year)), html = Html.Table(from,{ {"m","th.month"}, {"d","td",(x)=>Text.Remove(x[TextContent]?,"")}, {"DateType","td",(x)=>x[Attributes]?[class]?}}, [RowSelector="table.cal td,th"]), fill = Table.FillDown(html,{"m"}), fltr = Table.SelectRows(fill,(x)=>x[DateType]<>null and x[DateType]<>"inactively"), tbl = Table.CombineColumns(fltr,{"m","d"},(x)=>Date.From(Text.Combine({year}&x)),"Date"),
to = Value.ReplaceType(tbl,type table [Date=date,DateType=text])][to]
Что тут к чему рассмотрено в видео на рутубе , ютубе , а с исходниками давно лежит на спонсоре Пы.Сы. А потом я ещё немножко подумал и получилось вот такое:
(optional year as number)=>[
f=(x)=>{Date.From(Text.TrimEnd(Text.Combine({year}&List.FirstN(x,2)),"")),x{2}},
year = Text.From(if year=null then Date.Year(DateTime.LocalNow()) else year),
from = Binary.Buffer(Web.Contents("http://www.consultant.ru/law/ref/calendar/proizvodstvennye/"&(if year="2020" then "2020b" else year))),
html = Html.Table(from,{{"m","th.month"},{"d","td"},{"t","td",(x)=>x[Attributes][class]}},[RowSelector="th.month,td[class]"]),
tbl = Table.SelectRows(Table.FillDown(html,{"m"}),(x)=>x[t]<>null and x[t]<>"inactively"), to = Table.FromList(Table.ToList(tbl,f),(x)=>x,type table [Date=date,DateType=text])][to]
Надеюсь, было полезно.
Всех благ!
@buchlotnik