Jump to content
View in the app

A better way to browse. Learn more.

FMForums.com

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

All records syncing despite setting ES_exclude...

Featured Replies

Firstly, I'm new here so 'hi' everyone and thanks Tim for your EasySync solution... it looks like it will save me hours of head scratching!

 

I appeared to have successfully integrated EasySync into my current project – I was delighted when everything looked like it functioned as expected and I was able to do a remote first-time sync and pull everything from the Server into my (blank) Client file, however I think I need a bit of help... 

 

The solution I'm working on has ~1500 records in the parent 'contact' table, with an equivalent number of child records ('data' table) plus there is also a 'photos' table which will potentially contain multiple related records although it is currently empty. The 1500 records are split into 3 areas – north, east and west – and when finally deployed I will want these records to sync by user so that for example, the north user initially pulls and subsequently syncs only those records marked as 'north'.

 

Having read the documentation I figured the simplest way to do this was to changed the ES_Exclude fields to a calculation which I've set as follows (both in the hosted database and the remote client version):

 

Case ( PatternCount ( globals::areaFilter ; area ) ; 0 ; 1 )

 

When reviewing the data, this calculation works perfectly – when the user is either north, east or west the ES_Exclude field is correctly set to 0 or 1 as appropriate (plus I can log in as an 'office' user which doesn't exclude any records).

 

However having transferred the database file to my iPhone and logged in as 'east' for testing, then wiped and reset EasySync (using the Sync Utilities script) to ensure that there are no records on the device, when I then performed a first-time sync which I expected only to pull the 'east' records from the host, it doesn't seem to have excluded any records as it is pulling down everything... 

 

I'm hoping someone can point me in the right direction here as I'm not sure what I've missed... any help and advice would be much appreciated

Hello!

 

The problem be a result of the global field ("globals::areaFilter") that you're using to filter the records.

 

EasySync makes heavy use to the Perform Script on Server script step. When scripts are called with PSoS, the Draco session that is initiated on the server does not inherit the values of the global fields that were set by the client.

 

You might want to try passing the "areaFilter" value via the $$additional_push_info and $$additional_pull_info variables, which you can set in the "EasySync Settings" script. This gives you the ability to send additional custom info during the push and pull phases.

 

Good luck!

 

-- Tim

  • Author

Sincere thanks for the reply Tim – I'll give that a go later and hopefully it will solve my filtering issue 

 

Can you just clarify that I do in fact need to set the ES_Exclude value both in the client file and the server file..?

With the way that you are syncing, I think you should only need to set the ES_Exclude value on the server.

 

On the client side, the thought was that it would be used to delay the pushing of records to the server. For example, a work order that wasn't quite ready to be "submitted" yet.

 

-- Tim

  • Author

I didn't have any luck passing the global::areaFilter value to the host via the $$additional_pull_info variable and then using that variable in the ES_Exclude calculation definition. I suspect I may be missing something...

 

However, I have now been able to successfully filter the initial pull sync by using Get(AccountName) in the ES_Exclude calculation definition... going to do further testing to ensure it's working as expected but it looks like I've got a functioning solution.

  • 3 weeks later...
  • Newbies

I also was trying to exclude records using dynamic variable and found a bug.

 

  1. I was able to pass variables to the server via [mobile] EasySync Settings >> $$additional_pull_info
    • Set Field ==> Some_Global_B to $$additional_pull_info
       
  2. Retrieve variables from [server] Prepare Payload for Client >>  $additional_settings

     
  3. I was able to set the [server] ES_Exclude >>
    • Succesful --> If ( Studio_Name = "studio17"; 0; 1)
      //this solution was not helpful, since it was fixed and could validate it worked.
    • Fail --> If ( Studio_Name  = Some_Global_B ; 0 ; 1)  
    • Fail --> If ( Studio_Name  = $additional_settings ; 0 ; 1)  
    • Fail --> GetAsNumber ( If ( ES_Surveys::Studio_Name = $additional_settings ; 0; 1) )
    • Successful --> Evaluate ( $expression)
      Set Variable ==> $expression to "If ( Studio_Name  = Some_Global_B ; 0 ; 1)"
​
Needless to say it was difficult to understand why 3b or 3c did not work.  
 
I hope this benefits others.

post-107734-0-38729400-1426644523_thumb.

post-107734-0-87696500-1426644539_thumb.

post-107734-0-71410000-1426644555_thumb.

post-107734-0-68720600-1426644593_thumb.

post-107734-0-18667200-1426644650_thumb.

Create an account or sign in to comment

Important Information

By using this site, you agree to our Terms of Use.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.