<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:thr="http://purl.org/syndication/thread/1.0">
    <title>TeamDesk Blog</title>
    
    
    <link rel="alternate" type="text/html" href="http://blog.teamdesk.net/" />
    <id>tag:typepad.com,2003:weblog-1401889</id>
    <updated>2010-02-28T16:00:00-06:00</updated>
    <subtitle>Current and future thoughts and behind-the-scene information</subtitle>
    <generator uri="http://www.typepad.com/">TypePad</generator>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/teamdesk" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="teamdesk" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">teamdesk</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><entry>
        <title>Unlimited External Customers license is available now</title>
        <link rel="alternate" type="text/html" href="http://blog.teamdesk.net/2010/02/unlimited-external-customers-license-is-available-now.html" />
        <link rel="replies" type="text/html" href="http://blog.teamdesk.net/2010/02/unlimited-external-customers-license-is-available-now.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00e54ee895e9883401310f3d70aa970c</id>
        <published>2010-02-28T16:00:00-06:00</published>
        <updated>2010-02-28T16:00:00-06:00</updated>
        <summary>A long-awaited Unlimited External Customers license is going to be introduced to accommodate an unlimited number of external customers for a flat rate*. Letting an unlimited number of your external customers logging right into the system, you would no longer...</summary>
        <author>
            <name>Mila</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="What's New" />
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://blog.teamdesk.net/">
<div xmlns="http://www.w3.org/1999/xhtml"><p>A long-awaited Unlimited External Customers license is going to be introduced to accommodate an unlimited number of external customers for a <a href="https://www.teamdesk.net/pricing.html">flat rate</a><sup>*</sup>.</p>
<p>Letting an unlimited number of your external customers logging right into the system, you would no longer need to create special web portals for external users. This would not only save you significant expenses for a complicated JavaScript programming, but would also keep your system flexible and customizable.</p>
<p>Your external customers will be logging-in under their individual logins/passwords, so you'll be able to assign them individual roles to precisely restrict their access to the system.<br />Overall, managing all of your customers within an integrated system and giving them an access to a relevant part of their data would allow you to reduce costs and improve communications with your partners and clients due to:</p>
<ul>
<li>allowing your partners accessing their relevant information and participating in your applications according to their "roles"; </li>
<li>effective collaboration with your customers and improved customer documentation sharing and management; </li>
<li>planning and controlling joint events with your partners and customers; </li>
<li>improving your customer service and relations with your partners; </li>
<li>creation of additional self-services.</li>
</ul>
<p><sup>*</sup> Unlimited External Customers license will not be available in the Starter Edition.</p></div>
</content>


    </entry>
    <entry>
        <title>More dynamic in the forms</title>
        <link rel="alternate" type="text/html" href="http://blog.teamdesk.net/2010/01/more-dynamic-in-the-forms.html" />
        <link rel="replies" type="text/html" href="http://blog.teamdesk.net/2010/01/more-dynamic-in-the-forms.html" thr:count="1" thr:updated="2010-01-30T12:47:51-06:00" />
        <id>tag:typepad.com,2003:post-6a00e54ee895e9883401287729a36e970c</id>
        <published>2010-01-29T08:46:00-06:00</published>
        <updated>2010-01-29T08:46:00-06:00</updated>
        <summary>We've just released an facility to control column behavior in the forms. You can now specify the condition and the set of changes to apply to the form's columns when the condition is met. Consider the following scenario: We have...</summary>
        <author>
            <name>Kirill Bondar</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="What's New" />
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://blog.teamdesk.net/">
<div xmlns="http://www.w3.org/1999/xhtml"><p>We've just released an facility to control column behavior in the forms.</p>  <p>You can now specify the condition and the set of changes to apply to the form's columns when the condition is met.</p>  <p>Consider the following scenario:</p>  <p>We have an Activity table that will store two types of activities: Tasks and Events. The have something is common: the Type, Subject, Assigned To and Description column apply to both types. Due Date, Status and Priority apply to Tasks only while Location, Start Date and Duration apply to Events only. Also, we want to require user input to Assigned To column when the type is Task. Here is the screenshot from column's setup:</p>  <p><img style="border-bottom: #ccc 1px solid; border-left: #ccc 1px solid; margin: auto; display: block; border-top: #ccc 1px solid; border-right: #ccc 1px solid" title="columns" border="0" alt="Columns" src="http://foresoft.typepad.com/.a/6a00e54ee895e9883401287729a322970c-pi" width="330" height="283" /> </p>  <p>Now we'll set up the form's behavior.</p>  <p>Visit Forms &gt; Customize form behavior.</p>  <p>By default – if nothing is specified – <a href="http://www.teamdesk.net">TeamDesk</a> will maintain its current behavior – display all columns in view mode and display editable columns only in edit mode. We'll need to set it up in a little different way.</p>  <p>First, in Default section we'll hide the type specific columns.</p>  <p>Then we'll define the condition to check whether the Type is Task – the interface is identical to the view's filters and specify the column settings for Type-specific columns.</p>  <p>Finally we'll define another condition to check whether the Type is Event and, again, behavior for event specific columns.</p>  <p><img style="border-bottom: #ccc 1px solid; border-left: #ccc 1px solid; margin: auto; display: block; border-top: #ccc 1px solid; border-right: #ccc 1px solid" title="Rules" border="0" alt="rules" src="http://foresoft.typepad.com/.a/6a00e54ee895e988340120a8267a25970b-pi" width="355" height="329" /> </p>  <p>Let's test what we have:</p>  <p /> <p>  <p>When we create new record, and no type is specified, neither condition is met and the rules from Default sections are used – hiding all type specific columns.</p>  <p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="none" border="0" alt="none" src="http://foresoft.typepad.com/.a/6a00e54ee895e9883401287729a341970c-pi" width="424" height="148" /> </p>  <p>Now, let's change the type to Task – Task specific columns will appear, please note that Assigned To also receives Required mark:</p>  <p><a href="http://foresoft.typepad.com/.a/6a00e54ee895e9883401287729a34a970c-pi"><img style="border-bottom: #ccc 1px solid; border-left: #ccc 1px solid; margin: auto; display: block; border-top: #ccc 1px solid; border-right: #ccc 1px solid" title="task" border="0" alt="Task" src="http://foresoft.typepad.com/.a/6a00e54ee895e988340120a8267a5d970b-pi" width="424" height="220" /></a></p>  <p>And when Event is selected, task specific columns are replaced with event specific columns:</p>  <p><img style="border-bottom: #ccc 1px solid; border-left: #ccc 1px solid; margin: auto; display: block; border-top: #ccc 1px solid; border-right: #ccc 1px solid" border="0" alt="Event" src="http://foresoft.typepad.com/.a/6a00e54ee895e9883401287729a35d970c-pi" width="424" height="220" /></p>  <p>The logic you defined is not form specific – it is applied to all table forms.</p>  <p>Enjoy!</p></p></div>
</content>


    </entry>
    <entry>
        <title>Volume 30 000 000 records is not a problem</title>
        <link rel="alternate" type="text/html" href="http://blog.teamdesk.net/2009/12/volume-30-000-000-records-is-not-a-problem.html" />
        <link rel="replies" type="text/html" href="http://blog.teamdesk.net/2009/12/volume-30-000-000-records-is-not-a-problem.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00e54ee895e988340120a7210544970b</id>
        <published>2009-12-07T08:12:42-06:00</published>
        <updated>2009-12-07T08:12:42-06:00</updated>
        <summary>In our previous post dealing with Handling a heavy volume we told about TeamDesk customer whose application contained 6 000 000 records. Now we want to announce that data volume of this customer has increased. Amazingly, but the volume exceeds...</summary>
        <author>
            <name>Mila</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Client Stories" />
        
        <category scheme="http://sixapart.com/ns/types#tag" term="heavy volume" />
        <category scheme="http://sixapart.com/ns/types#tag" term="performance" />
        <category scheme="http://sixapart.com/ns/types#tag" term="TeamDesk" />
        <category scheme="http://sixapart.com/ns/types#tag" term="workload " />
        
<content type="xhtml" xml:lang="en-US" xml:base="http://blog.teamdesk.net/">
<div xmlns="http://www.w3.org/1999/xhtml"><p>In our previous post dealing with <a href="http://blog.teamdesk.net/2008/04/6-000-000-notes.html">Handling a heavy volume</a> we told about TeamDesk customer whose application contained 6 000 000 records. Now we want to announce that data volume of this customer has increased. </p>
<p>Amazingly, but the volume exceeds <strong>30 000 000 records</strong>. During a year and a half the number of records was increased fivefold. </p>
<p>We want to notice that the volume <strong>30 000 000 records</strong> is not a problem for <a href="http://www.teamdesk.net/">TeamDesk</a>. The system works smoothly even though the volume reaches such number. Moreover the price doesn’t depend on the number of records. This statements concern all customers and their volume can grow at any moment and we can handle their growing demand without increasing in prices. </p></div>
</content>


    </entry>
    <entry>
        <title>Colorization for summary views and charts</title>
        <link rel="alternate" type="text/html" href="http://blog.teamdesk.net/2009/09/colorization-for-summary-views-and-charts.html" />
        <link rel="replies" type="text/html" href="http://blog.teamdesk.net/2009/09/colorization-for-summary-views-and-charts.html" thr:count="1" thr:updated="2009-09-17T10:35:05-05:00" />
        <id>tag:typepad.com,2003:post-6a00e54ee895e988340120a5792067970b</id>
        <published>2009-09-17T04:16:00-05:00</published>
        <updated>2009-09-17T07:18:34-05:00</updated>
        <summary>We’ve extended summary views and charts with colorization formula functionality. As in table views, the formula should calculate the color of the row (bar, column, wedge) for the summary view or return NULL to use default color provided by TeamDesk....</summary>
        <author>
            <name>Kirill Bondar</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="What's New" />
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://blog.teamdesk.net/">
<div xmlns="http://www.w3.org/1999/xhtml"><p>We’ve extended summary views and charts with colorization formula functionality.</p>
<p>As in table views, the formula should calculate the color of the row (bar, column, wedge) for the summary view or return NULL to use default color provided by TeamDesk.</p>
<p>Obviously, the columns you can use in the formula are limited to the columns you group by.</p>
<p>For example, if you have a pie chart the calculate counts of tasks by priority you may now use a formula:</p><pre>Case([Priority], “High”, “red”, “Low”, “blue”)</pre>
<p>to color the wedge that corresponds to high priority tasks with red and low priority tasks with blue.</p></div>
</content>


    </entry>
    <entry>
        <title>Calculating Job Duration</title>
        <link rel="alternate" type="text/html" href="http://blog.teamdesk.net/2009/09/calculating-job-duration.html" />
        <link rel="replies" type="text/html" href="http://blog.teamdesk.net/2009/09/calculating-job-duration.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00e54ee895e988340120a571d11f970b</id>
        <published>2009-09-16T02:26:49-05:00</published>
        <updated>2009-09-16T02:26:50-05:00</updated>
        <summary>We’ve got a challenging request from Jane McCarty of webappsatwork to calculate job duration in TeamDesk. In the application we created we had to comply with the rules of competition; now we’ve decided to share the results with all of...</summary>
        <author>
            <name>Kirill Bondar</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Application Library" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Tips &amp; Tricks" />
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://blog.teamdesk.net/">
<div xmlns="http://www.w3.org/1999/xhtml"><p>We’ve got a challenging request from Jane McCarty of <a href="http://webappsatwork.blogspot.com/2009/09/teamdesk-calculates-work-time-without.html" target="_blank">webappsatwork</a> to calculate job duration in <a href="http://www.teamdesk.net/" target="_blank">TeamDesk</a>. In the application we created we had to comply with the rules of competition; now we’ve decided to share the results with all of our users and created a <a href="http://www.teamdesk.net/calculate_job_duration.html" target="_blank" title="Example: Calculate Job Duration">simplified version of this app</a> for our application library.</p>
<p>The task is defined as follows: defining the start and the end of working hours and knowing the weekends and the holidays - calculate job duration between specified start and end dates and times.</p>

<p>First, let’s define <strong>Calendar</strong> table with the following structure: <em>Date</em>, <em>Start Time</em>, <em>End Time</em>. Let’s assume, we’ll have start and end times specified for workdays and will leave them empty for weekends and holidays. To simplify editing we’ll provide default values for Start and End times (10AM - 6PM) and introduce an additional <em>Weekend or Holiday</em> checkbox to quickly reset both times to blank values or set them back to their defaults. And, to ease our calculations, let’s add <em>Hours</em> formula that results to the duration between the End and Start times; once Start/End times are empty, the formula will evaluate to zero. Let’s fill Calendar table with the data by creating the set of dates for 2008 – 2012 using formulas in the spreadsheet application and importing it to TeamDesk.</p>
<p>Next, let’s define sample <strong>Tasks</strong> table with task’s start and end dates and times.</p>
<p>Now, back to the job duration calculation task.</p>
<p>Let’s create many-to-many relationship between the <strong>Calendar</strong> and the <strong>Task</strong>, and add two matching conditions there: first: Calendar’s <em>Date</em> &gt;= Task’s <em>Start Date</em>, and the second: Calendar’s <em>Date</em> &lt;= Task’s <em>End Date</em>.</p>
<p>For each Task, this relation will return the set of dates from the calendar that fall between Start and End dates, according to our task.</p>
<p>Then the calculation of working duration falls into the following three parts:</p>
<p>1. Calculate the total of <strong>Calendar’s</strong> working hours between two dates.</p>
<p>2. Subtract working hours (if any) before the <strong>Task’s</strong> <em>Start Time</em>.</p>
<p>3. Subtract working hours (if any) after the <strong>Task’s</strong> <em>End Time</em>.</p>
<p>Implementing the first one is pretty straightforward – create a summary column in <strong>Tasks</strong> table, say <em>Full Days</em>, that calculates a <strong>Total</strong> function on an <strong>Calendar’s</strong> <em>Hours</em> column.</p>
<p> <img alt="Calculating Working Duration" border="0" height="300" src="http://foresoft.typepad.com/.a/6a00e54ee895e988340120a5c863fe970c-pi" style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="Calculating Working Duration" width="500" /> </p>
<p>The next task is a bit more tricky. To calculate hours before the <strong>Task’s</strong> <em>Start Time</em> we have to pick up the <em>Start Time</em> and <em>End Time</em> values from the <strong>Calendar’s</strong> record that falls on <strong>Task’s</strong> <em>Start Date</em>. We can do it with the summary column’s <strong>Index</strong> function.</p>
<p>If we sort related dates in the <strong>Calendar</strong> table in an ascending order, the record with the index #1 would be the record that falls on <strong>Task’s</strong> <em>Start Date</em>. So, we’ll need two summary columns in <strong>Tasks</strong>, both sorting records by <em>Date, Ascending</em>, both calculating <strong>Index</strong>, one takes the value from <strong>Calendar’s</strong> <em>Start Time</em>; let’s call it <em>From (Start Time)</em>; and another, taking the value from <strong>Calendar’s</strong> <em>End Time</em>, called <em>From (End Time)</em>.</p>
<p>You may wonder, why would we need End Time for calculation if the task seems as simple as calculating </p><pre>[Start Time] - [From (Start Time)]</pre>
<p>No, it is not. In fact, there are three possible scenarios.</p>
<p>1. The simplest scenario: Task’s Start Time falls within working hours. Indeed, we can handle it with a simple subtraction.</p>
<p>2. Task’s Start Time is set before working hours period. Since calculating overtimes is out of our task’s scope, we will treat this as zero. Please note that subtraction result would be negative in this case.</p>
<p>3. Task’s Start Time is set after working hours. We should subtract a whole day then – e.g. the duration between <em>From (Start Time)</em> and <em>From (End Time).</em></p>
<p>To avoid multiple If() checks, we can toss the result with Min() and Max() functions. </p>
<p>Scenario 2 can be handled with the following formula:</p><pre>Max([Start Time] - [From (Start Time)], 0)</pre>
<p>Scenario 3 can be handled by taking lesser from the <em>Start Time</em> and <em>From (End Time) </em>with Min() function, and we are ending up with</p><pre>Max(Min([From (End Time)], [Start Time]) - [From (Start Time)], 0)</pre>
<p>Calculating hours after the Task’s End Time is done in the same manner, the only thing worth mentioning is the way to obtain end date's start and end times: sort related records by Calendar's Date in descending order and index #1 will give you the end date.</p>
<p>Having all three parts of calculation done, we can now calculate Working Duration formula as:</p><pre>[Full Days] <br />- Max(Min([From (End Time)], [Start Time]) - [From (Start Time)], 0) <br />- Max([To (End Time)] - Max([End Time], [To (Start Time)]), 0)</pre>
<p>Enjoy!</p></div>
</content>


    </entry>
    <entry>
        <title>Application Difference Tool</title>
        <link rel="alternate" type="text/html" href="http://blog.teamdesk.net/2009/09/application-difference-tool.html" />
        <link rel="replies" type="text/html" href="http://blog.teamdesk.net/2009/09/application-difference-tool.html" thr:count="1" thr:updated="2009-09-03T14:01:25-05:00" />
        <id>tag:typepad.com,2003:post-6a00e54ee895e988340120a59b47ea970c</id>
        <published>2009-09-03T09:56:09-05:00</published>
        <updated>2009-09-03T14:20:16-05:00</updated>
        <summary>Today we've added the simple tool to compare two applications. You can find it in Setup &gt; Setup tab &gt; Tools section &gt; Diff Applications link. It prompts you to select the application to compare current application to (you must...</summary>
        <author>
            <name>Kirill Bondar</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="What's New" />
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://blog.teamdesk.net/">
<div xmlns="http://www.w3.org/1999/xhtml"><p>Today we've added the simple tool to compare two applications. You can find it in Setup &gt; Setup tab &gt; Tools section &gt; Diff Applications link.</p>
<p>It prompts you to select the application to compare current application to (you must have access to a setup section of the application to have it listed) and displays differences found in columns and tables. Tables and columns existing in your application only are highlighted <span style="FONT-FAMILY: ; COLOR: #60bf00">in green</span>, tables and columns missing in your application are highlighted <span style="FONT-FAMILY: ; COLOR: #ff0000">in red</span>. Columns that are present in both applications but differ in settings are highlighted <span style="FONT-FAMILY: ; COLOR: #4040ff">in blue</span> and the differences are displayed next to column name.</p>
<p><img align="center" src="http://foresoft.typepad.com/.a/6a00e54ee895e988340120a59b4112970c-800wi" /></p>
<p>On the screenshot above, our new application is missing <em>Resource</em> table and <em>Hourly Rate</em> and <em>Skill</em> lookups to it. <em>Costs</em> formula is changed to use fixed hourly rate and new <em>Skill Type</em> column is added.</p></div>
</content>


    </entry>
    <entry>
        <title>Trigonometic Support</title>
        <link rel="alternate" type="text/html" href="http://blog.teamdesk.net/2009/09/trigonometic-support.html" />
        <link rel="replies" type="text/html" href="http://blog.teamdesk.net/2009/09/trigonometic-support.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00e54ee895e988340120a53c0d56970b</id>
        <published>2009-09-03T09:26:50-05:00</published>
        <updated>2009-09-03T09:26:50-05:00</updated>
        <summary>TeamDesk is extended to support trigonometic functions: Acos(n) arccosine, returns the angle, in radians, whose cosine is the specified by n; Asin(n) arcsine, returns the angle, in radians, whose sine is the specified by n; Atan(n) arctangent, returns the angle...</summary>
        <author>
            <name>Kirill Bondar</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="What's New" />
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://blog.teamdesk.net/">
<div xmlns="http://www.w3.org/1999/xhtml"><p>TeamDesk is extended to support trigonometic functions:</p>
<table border="1" cellspacing="0">
<tbody>
<tr>
<td width="80">Acos(n)</td>
<td>arccosine, returns the angle, in radians, whose cosine is the specified by n; </td></tr>
<tr>
<td>Asin(n)</td>
<td>arcsine, returns the angle, in radians, whose sine is the specified by n; </td></tr>
<tr>
<td>Atan(n)</td>
<td>arctangent, returns the angle in radians whose tangent is a specified by n; </td></tr>
<tr>
<td>Atan(x, y)</td>
<td>returns the angle, in radians, between the positive x-axis and the ray from the origin to the point specified by x and y; </td></tr>
<tr>
<td>Cos(n)</td>
<td>returns the trigonometric cosine of the angle n, specified in radians; </td></tr>
<tr>
<td>Cot(n)</td>
<td>returns the trigonometric cotangent of the angle n, specified in radians; </td></tr>
<tr>
<td>Degrees(n)</td>
<td>returns the corresponding angle in degrees for an angle n specified in radians; </td></tr>
<tr>
<td>Radians(n)</td>
<td>returns the corresponding angle in radians for an angle n specified in degrees; </td></tr>
<tr>
<td>Pi()</td>
<td>returns the constant value of PI; </td></tr>
<tr>
<td>Sin(n)</td>
<td>returns the trigonometric sine of the angle n, specified in radians; </td></tr>
<tr>
<td>Tan(n)</td>
<td>returns the trigonometric tangent of the angle n, specified in radians;</td></tr></tbody></table></div>
</content>


    </entry>
    <entry>
        <title>New Summary Function: Index</title>
        <link rel="alternate" type="text/html" href="http://blog.teamdesk.net/2009/07/index-aggregate.html" />
        <link rel="replies" type="text/html" href="http://blog.teamdesk.net/2009/07/index-aggregate.html" thr:count="4" thr:updated="2009-08-13T07:22:41-05:00" />
        <id>tag:typepad.com,2003:post-6a00e54ee895e98834011572497373970b</id>
        <published>2009-07-30T07:33:59-05:00</published>
        <updated>2009-09-03T10:05:21-05:00</updated>
        <summary>We've extended TeamDesk summary columns with Index function. The purpose of the function is to extract the value from the specific record in the detail record set. How it works? Detail records are filtered, and then sorted in the order...</summary>
        <author>
            <name>Kirill Bondar</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="What's New" />
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://blog.teamdesk.net/">
<div xmlns="http://www.w3.org/1999/xhtml"><p>We've extended TeamDesk <em>summary columns</em> with Index function.</p>
<p>The purpose of the function is to extract the value from the specific record in the detail record set.</p>
<p>How it works? Detail records are filtered, and then sorted in the order specified in <em>Sort By</em> property. Each record assigned an index number starting from 1. The Index function picks up the value specified in <em>Value Column</em> property from the record with an index as specified in the <em>Index</em> property.</p>
<p>Suppose you have Contact table and Phones table related one-Contact-to-many-Phones, and you want to display phone of the type "Primary" in the contact record. Here, Index comes to help. Create a Primary Phone summary column, set its filter to check for phone type, set an index to 1, and the value column to phone number.</p>
<p>You can achieve similar results with Minumum/Maximum function, yet min/max approach is less predictable (as returned result strictly depends on the value) and may cause severe performance bottlenecks when having a lot of detail records as all of them should be processed to calculate the value.</p>
<p><strong>Updated 09/03/2009</strong></p>
<p>You can either type an numeric value for the index or use the column to take index from.</p></div>
</content>


    </entry>
    <entry>
        <title>Are you ready for v2?</title>
        <link rel="alternate" type="text/html" href="http://blog.teamdesk.net/2009/07/are-you-ready-for-v2.html" />
        <link rel="replies" type="text/html" href="http://blog.teamdesk.net/2009/07/are-you-ready-for-v2.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00e54ee895e988340115714d003f970c</id>
        <published>2009-07-28T10:44:40-05:00</published>
        <updated>2009-07-28T10:44:40-05:00</updated>
        <summary>As you may already know, we've changed the way of handling NULL values and improved division by zero error indentification. With such a radical changes we were not able to maintain full backward compatibility; as the result, applications created before...</summary>
        <author>
            <name>Kirill Bondar</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="What's New" />
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://blog.teamdesk.net/">
<div xmlns="http://www.w3.org/1999/xhtml"><p>As you may already know, we've changed <a href="http://blog.teamdesk.net/2009/06/handle-nulls-and-div-by-zero.html" target="_blank">the way of handling NULL values and improved division by zero error indentification</a>. With such a radical changes we were not able to maintain full backward compatibility; as the result, applications created before 10th of June, and their copies still use old logic, let's call it <strong>v1</strong>, while newer applications use new one - <strong>v2</strong>.</p>
<p>Below is the brief outline of changes in numeric and duration columns and formulas; other data types are not affected.</p>
<p>In v1, any arithmetical or functional operation with NULL (blank, empty) value results to NULL. NULL does not compare to anything, including the NULL, and requires special form of check via IsNull() function. "Blank as zero" column option can be set to automatically replace NULL with zero during the calculations.</p>
<p>In v2, the logic is identical to the behavior when "Blank as zero" is always set: when calculating, TeamDesk treats numeric or duration NULLs as zeroes. As the result, functions that check the result for NULL become obsolete.</p>
<p>There is no need for Nz() as TeamDesk applies this logic by default.</p>
<p>IsNull() is no longer applicable to the formulas as they do not produce NULLs. But the database can hold blank values distinct from zeroes, and you may still need to check for blanks. New IsBlank() function checks for NULLs, but it applies to data columns only. IsNull() is removed.</p>
<p>As we are planning to migrate all applications to v2 sooner or later, we have created the tool to help identifying these issues. The tool tries to compile all formulas in your v1 application from the v2 perspective and lists the objects (formulas, views, workflow rules) where you may encounter the problem after the migration. You may find a link to the tool on the <strong>Setup</strong> tab, <strong>Application</strong> section, <strong>Check NULL handling</strong> link. Check your app now, and let us know if you are ready to migrate.</p>
<p>By the way, v2 application administrators can use this tool to identify the problems with formulas throughout the application.</p></div>
</content>


    </entry>
    <entry>
        <title>Alert System</title>
        <link rel="alternate" type="text/html" href="http://blog.teamdesk.net/2009/07/alert-system.html" />
        <link rel="replies" type="text/html" href="http://blog.teamdesk.net/2009/07/alert-system.html" thr:count="1" thr:updated="2009-07-23T04:33:26-05:00" />
        <id>tag:typepad.com,2003:post-6a00e54ee895e98834011570d3a7aa970c</id>
        <published>2009-07-06T08:57:03-05:00</published>
        <updated>2009-07-06T08:58:43-05:00</updated>
        <summary>In this release we are introducing News &amp; Alerts system. This feature will allow us to keep administrators and regular users informed about new TeamDesk updates, announcements and maintenance alerts. Check the menu at the top of the page. There...</summary>
        <author>
            <name>Kirill Bondar</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="What's New" />
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://blog.teamdesk.net/">
<div xmlns="http://www.w3.org/1999/xhtml"><p>In this release we are introducing News &amp; Alerts system.</p>
<p>This feature will allow us to keep administrators and regular users informed about new TeamDesk updates, announcements and maintenance alerts.</p>
<p><img alt="Alerts" border="0" src="http://foresoft.typepad.com/.a/6a00e54ee895e98834011571c87b49970b-800wi" title="Alerts" /></p>
<p>Check the menu at the top of the page. There is a new item that displays count of unread messages &amp; alerts. When it is displayed white on red, there is at least one unread high priority message in the list.</p></div>
</content>


    </entry>
 
</feed><!-- ph=1 --><!-- nhm:dynamic-ssi -->
