The following code fragment example checks to see whether the record (entity) has any duplicates (children). If so, the hook edits each of the duplicates with the dupone action name, and sets the "action_info" field to indicate that the original (parent) record is tested.
Dim status Dim session ' The current Session object Dim parent_id ' The current Entity's display name (ID string) Dim dups ' Array of all direct duplicates of this Entity Dim dupvar ' Variant containing a Link to a duplicate Dim dupobj ' The same Link, but as an Object rather than a Variant Dim entity ' The Entity extracted from the Link If (HasDuplicates()) Then Set session = GetSession dups = GetDuplicates parent_id = GetDisplayName for each dupvar in dups ' You could check these various functions for failures and ' then report any failures to the user (for example, using ' MsgBox). ' Failures are unlikely, but possible--for example, someone ' could concurrently "unmark" an entity as a duplicate. Set dupobj = dupvar Set entity = dupobj.GetChildEntity session.EditEntity entity, "dupdone" SetFieldValue "action_info", _ "Original " & parent_id & " is tested" ' commit the record to the database if validation returns no ' errors status = entity.Validate if status = "" then entity.Commit else entity.Revert End If Next End If
my($session); # The current Session object my($links); # The reference to the links collection object my($link); my($cnt); my($itm); my($childID); if ($entity->HasDuplicates()) { $session = $entity->GetSession(); $links = $entity->GetDuplicates(); $session->OutputDebugString("links is " . $links . "(" . ref ($links) . ")\n" ); $cnt = $links->Count(); $session->OutputDebugString("count is " . $cnt . "(" . ref ($cnt) . ")\nchildren:\n" ); for ($i = 0; $i<$cnt; $i++) { $itm = $links->Item($i); $session->OutputDebugString("Item is " . $itm . "(" . ref ($itm) . ")\n"; $childID = $itm->GetChildEntityId(); $session->OutputDebugString($childID . "\n" ); } $session->OutputDebugString("done"); } else { }