<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум компьютерной помощи &mdash; Сравнение дат в search formula]]></title>
	<link rel="self" href="https://itpmr.ru/extern.php?action=feed&amp;tid=806&amp;type=atom" />
	<updated>2015-08-10T11:12:12Z</updated>
	<generator>PunBB</generator>
	<id>https://itpmr.ru/viewtopic.php?id=806</id>
		<entry>
			<title type="html"><![CDATA[Re: Сравнение дат в search formula]]></title>
			<link rel="alternate" href="https://itpmr.ru/viewtopic.php?pid=124397#p124397" />
			<content type="html"><![CDATA[<p>Вот еще пример поиска db.Search по полю &quot;Date2&quot; с датой. Сравниваем содержимое поля с полем в документе &quot;datareg&quot;.</p><div class="codebox"><pre><code>formula$ = { @ToTime (datareg)  &lt;=  @TextToTime(&quot;} &amp; uidoc.FieldGetText(&quot;Date2&quot;)   &amp; {&quot;)}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2015-08-10T11:12:12Z</updated>
			<id>https://itpmr.ru/viewtopic.php?pid=124397#p124397</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Сравнение дат в search formula]]></title>
			<link rel="alternate" href="https://itpmr.ru/viewtopic.php?pid=123922#p123922" />
			<content type="html"><![CDATA[<p>Все дело в том, что идет неверное сравнения поля с датой с типом ТЕКСТ с полем с датой типа ДАТА/ВРЕМЯ.<br />@TextToTime(@text(ДАТА_РАЗРЕШ_ОБРАЩ_)) или @ToTime(ДАТА_РАЗРЕШ_ОБРАЩ_) - делать нельзя, потому что результат будет зависеть от системных настроек формата даты. У одних дата 5.1.2013 будет 5 января 2013, у других 1 мая 2013.<br />Правильно делать через @Date(year; month; day). Для этого из ДАТА_РАЗРЕШ_ОБРАЩ_ нужно выдернуть день, месяц и год.<br />Для проверки правильности выборки лучше для начала загнать формулу во вьюху, а потом оттуда перенсти все в код агента.</p><p>Сделал вьюхую с формулой отбора:<br /></p><div class="codebox"><pre><code>SELECT ( Form = &quot;VhodStandart&quot; &amp; @Left(ТИП_ДОКУМЕНТА;6)=&quot;Жалобы&quot; &amp; ДАТА_РАЗРЕШ_ОБРАЩ_!= &quot;&quot; &amp; @Date( @TextToNumber(@Right(ДАТА_РАЗРЕШ_ОБРАЩ_;4)); @TextToNumber(@Right(@Left(ДАТА_РАЗРЕШ_ОБРАЩ_;5);2)); @TextToNumber(@Left(ДАТА_РАЗРЕШ_ОБРАЩ_;2)) ) &gt;= @Date(2013;7;1) &amp; @Date( @TextToNumber(@Right(ДАТА_РАЗРЕШ_ОБРАЩ_;4)); @TextToNumber(@Right(@Left(ДАТА_РАЗРЕШ_ОБРАЩ_;5);2)); @TextToNumber(@Left(ДАТА_РАЗРЕШ_ОБРАЩ_;2)) ) &lt;= @Date(2013;7;31) )</code></pre></div><p>Все необходимые документы благополучно отразились в представлении.</p><p>Далее уже по аналогии перегнал в код агента .. получилось:<br /></p><div class="codebox"><pre><code>searchFormula$ = { Form = &quot;VhodStandart&quot; &amp; @Left(ТИП_ДОКУМЕНТА;6)=&quot;Жалобы&quot; &amp; ДАТА_РАЗРЕШ_ОБРАЩ_!= &quot;&quot; &amp; @Date( @TextToNumber(@Right(ДАТА_РАЗРЕШ_ОБРАЩ_;4)); @TextToNumber(@Right(@Left(ДАТА_РАЗРЕШ_ОБРАЩ_;5);2)); @TextToNumber(@Left(ДАТА_РАЗРЕШ_ОБРАЩ_;2)) ) &gt;= [}+ begindata.Dateonly +{] &amp; @Date( @TextToNumber(@Right(ДАТА_РАЗРЕШ_ОБРАЩ_;4)); @TextToNumber(@Right(@Left(ДАТА_РАЗРЕШ_ОБРАЩ_;5);2)); @TextToNumber(@Left(ДАТА_РАЗРЕШ_ОБРАЩ_;2)) ) &lt;= [}+ enddata.Dateonly +{] }</code></pre></div><p>Громоздко, но работает!!! Можно конечно чутка усовершенствовать (в местах @right, @left и т.п., чтоб значение бралось не по количеству цифр, а до точки или после точки в дате).. но эт уже мелочи!</p>]]></content>
			<author>
				<name><![CDATA[juk]]></name>
				<uri>https://itpmr.ru/profile.php?id=2239</uri>
			</author>
			<updated>2013-10-18T06:06:11Z</updated>
			<id>https://itpmr.ru/viewtopic.php?pid=123922#p123922</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Сравнение дат в search formula]]></title>
			<link rel="alternate" href="https://itpmr.ru/viewtopic.php?pid=123921#p123921" />
			<content type="html"><![CDATA[<p>Существует агент, который отбирает документы и обрабатывает их неким образом. Проблема в том, что в отбор попадают ненужные документы. Привожу код:<br />...<br /></p><div class="codebox"><pre><code>Dim nw As New NotesUIWorkspace
Dim nses As New NotesSession
Dim db As NotesDatabase
Dim OtchetDoc As NotesDocument
Dim doc As NotesDocument
Dim doccol As NotesDocumentCollection
Dim begindata As NotesDateTime, enddata As NotesDateTime

Set OtchetDoc=nw.CurrentDocument.Document
Set db = nses.CurrentDatabase

Set begindata=New NotesDateTime(OtchetDoc.begin(0))
Set enddata=New NotesDateTime(OtchetDoc.end(0))

searchFormula$ = { Form = &quot;Vhod&quot; &amp; @Left(ТИП_ДОКУМЕНТА;6)=&quot;Жалобы&quot; &amp; ДАТА_РАЗРЕШ_ОБРАЩ_&lt;&gt; &quot;&quot; &amp; @ToTime(ДАТА_РАЗРЕШ_ОБРАЩ_) =&gt; [}+ begindata.Dateonly +{] &amp; @ToTime(ДАТА_РАЗРЕШ_ОБРАЩ_) =&lt; [}+ enddata.Dateonly +{] } 

Set doccol = db.Search( searchFormula$, Nothing, 0)</code></pre></div><p>...</p><p>Немного пояснений:<br />- на форме Отчета поля begin и end типа ДАТА/ВРЕМЯ<br />- на основной форме документа поле ДАТА_РАЗРЕШ_ОБРАЩ_ типа ТЕКСТ</p><p>Интересует:<br />- почему в коллекцию попадают документы, у которых ДАТА_РАЗРЕШ_ОБРАЩ_ выходит за рамки, установленные интервалом ?<br />- как правильно работать (сравнивать между собой) с текстовыми полями и полями дата/время в рамках написания формул отбора ?</p>]]></content>
			<author>
				<name><![CDATA[juk]]></name>
				<uri>https://itpmr.ru/profile.php?id=2239</uri>
			</author>
			<updated>2013-10-18T06:00:12Z</updated>
			<id>https://itpmr.ru/viewtopic.php?pid=123921#p123921</id>
		</entry>
</feed>
