<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBS: Определение последнего рабочего дня в месяце]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7851&amp;type=atom" />
	<updated>2012-12-07T03:34:59Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=7851</id>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Определение последнего рабочего дня в месяце]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=66761#p66761" />
			<content type="html"><![CDATA[<p>Праздничных дней, приходящихся на конец месяца в 2013 году нет.<br />Вот источник <span class="postimg"><img src="http://eduscan.net/help/images/calendar2013.png" alt="http://eduscan.net/help/images/calendar2013.png" /></span></p>]]></content>
			<author>
				<name><![CDATA[Евген]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25253</uri>
			</author>
			<updated>2012-12-07T03:34:59Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=66761#p66761</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Определение последнего рабочего дня в месяце]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=66751#p66751" />
			<content type="html"><![CDATA[<p>Функция с использованием словаря исключений. в 2013 году таких исключений <span class="bbu">пока </span>не запланировано.</p><div class="codebox"><pre><code>
Function LastWDay(dDate)
&#039;------------------------------------------------------------
&#039; возвращает последний рабочий день месяца для указанной даты
&#039;------------------------------------------------------------
    &#039; xDays - словарь нестандартных дней 
    &#039; записываем в него праздники (1) или &quot;черные&quot; суб/вск (0)
    Dim xDays : set xDays = CreateObject(&quot;Scripting.Dictionary&quot;)
    xDays(#2012-04-30#)=1
    xDays(#2012-04-28#)=0
    xDays(#2012-12-31#)=1
    xDays(#2012-12-29#)=0


    &#039; получаем последний день месяца
    LastWDay=DateAdd(&quot;m&quot;,1,dDate)-day(dDate)

    do while true          
       if xDays.Exists(LastWDay) then 
          &#039; Проверим по словарю:
          &#039; если это рабочий день, то , выходим
          if xDays(LastWDay)=0 then Exit Do
          &#039; праздник? ищем дальше
          LastWDay=LastWDay-1            
       elseif WeekDay(LastWDay,2)&gt;5 then
          &#039; если попадаем на выходные, то шаг назад
          LastWDay=LastWDay-1 
       else
           Exit Do
       end if
    loop 
End Function

</code></pre></div>]]></content>
			<author>
				<name><![CDATA[yuriy2000]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25753</uri>
			</author>
			<updated>2012-12-06T19:06:14Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=66751#p66751</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Определение последнего рабочего дня в месяце]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=66745#p66745" />
			<content type="html"><![CDATA[<p>Сперва нужно правильно сформулировать задачу,&nbsp; а то&nbsp; может получится как в этом описании <a href="http://www.businessballs.com/treeswing.htm"> &quot;покрышка на веревке&quot;</a>:</p><p>А&nbsp; что если в конце месяца будут праздничные дни или суббота/воскресенье будут рабочими?</p><br /><p>функция, приведенная ниже, вернет последний рабочий &quot;понедельник-пятницу&quot; в этом месяце.<br /></p><div class="codebox"><pre><code>
function LastWDay(dDate)
       &#039; получаем последний день месяца
       LastWDay=DateAdd(&quot;m&quot;,1,dDate)-day(dDate)
       &#039; если попадаем на субботу/воскресенье, то пару шагов назад
       if WeekDay(LastWDay,2)&gt;5 then LastWDay=LastWDay-(WeekDay(LastWDay,2)-5)

end function
</code></pre></div><p>если нужен реально последний рабочий день - то нужно добавить проверку по словарю...</p>]]></content>
			<author>
				<name><![CDATA[yuriy2000]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25753</uri>
			</author>
			<updated>2012-12-06T14:46:22Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=66745#p66745</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBS: Определение последнего рабочего дня в месяце]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=66696#p66696" />
			<content type="html"><![CDATA[<p>Сегодня поставили задачу, отправлять базу в последний рабочий день месяца, начал рыться в календарях и органайзерах - нет такого события и определения, для того, чтобы запланировать напоминалку, поэтому решил нацарапать сам скриптец для оного определения. Воткнул в шедулер и забыл <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br />Получилось вот что... (может кому пригодиться)<br /></p><div class="codebox"><pre><code>currDay=Date()
currMonth=Month(currDay)
currYear=Year(currDay)

If currMonth=12 Then
    currMonth=1
    currYear=currYear+1
Else
    currMonth=currMonth+1
End If

LastDay=DateAdd(&quot;d&quot;,-1,DateSerial(currYear,currMonth,1))
currMonth=Month(LastDay)
currYear=Year(LastDay)

For i=Day(LastDay) To 1 Step -1
    oneDay=Weekday(DateSerial(currYear,currMonth,i),2)
        If oneDay&gt;=1 and oneDay&lt;=5 Then
            If DateSerial(currYear,currMonth,i)=currDay Then
                Msgbox &quot;Сегодня последний рабочий день месяца !!!&quot; &amp; VbCr &amp; &quot;Нужно отправить базу по очереди !!!&quot;
            End If
            Exit For
        End If
Next</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Евген]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25253</uri>
			</author>
			<updated>2012-12-06T04:23:25Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=66696#p66696</id>
		</entry>
</feed>
