触らせるな、とか言っててなんだけども。
うちも伝票に顧客マスタから別ウインドウで選んで入力、というのを組んでる。
それを踏まえて複数ウインドウとスクリプトの取り回しについて。

うちの場合、伝票レイアウト上の顧客選択ボタンを押すと、
顧客選択用インターフェースを備えたレイアウトでウインドウが出る。
そのまま顧客を選べば伝票にマスタからIDを放り込むし、
ウインドウを閉じるなりキャンセルボタンを押せばそこで完結。
結局問題は、スクリプトの扱う処理単位の設計なんじゃね?

ある一連の処理をスクリプトで流していこうとした時に、
「待ちに入り、入力を待って続きを実行」みたいな設計だと、
現状のFMじゃあ色んな不都合が出てくる。
モーダルなウインドウは用意できないし、カスタムダイアログは表現弱いし、
嫌がらせみたいにキックに使えるイベントは少ないし。
そんな中でもがんがんFMで社内の処理をやっていけてるのは、
こっちが用意した条件内で操作してくれるっていう前提があるからよ。
だからその条件も守るのが難しいユーザーがいる場合、
もしくは守れるユーザーの操作ミスを想定した場合、
スクリプトでの処理はそれぞれがひとまずその単位で完結するよう組む、
って方法しかないんじゃないかな。

キャンセルボタンを押した時にどういう処理が行われるかわかないから、
そこまでの流れの中に「この時点で放置されると困るし、自動で回収もされない」
っていう処理が入っているんで、その取り消しなりをしたい、と勝手に想像する。
だとしたら、そのウインドウを閉じられるとまずいって箇所を、
そもそもユーザーによる放置も前提で作っておくしかないでしょう。
「処理異常終了フラグ」立てて、後でまとめて隠すか消す、とか、
影響してくる処理のスクリプトが動く時にフラグを見て隠すか消す、とか。
ひとまずうちでは、この形でパートのおばちゃんとの協業もおっけー。