Предлагаю один из вариантов решения поставленной задачи. 
1. В ds_InvoiceScript добавить функцию:
function ChangeCurrencyID(InvoiceID, CurrencyID) {
  if (IsEmptyValue(InvoiceID) || IsEmptyValue(CurrencyID)) {
   return;
   } 
  if (!Assigned(InvoiceScript.OffDataset)) {
   InvoiceScript.OffDataset =
   Services.GetNewItemByUSI('ds_OfferingInInvoice'); 
   }
 var Dataset = InvoiceScript.OffDataset;
  Dataset.DisableEvents();
  ApplyDatasetFilter(Dataset, 'InvoiceID', InvoiceID, true);
  Dataset.Open();
 while (!Dataset.IsEOF) {
   Dataset.Edit();
   Dataset.Values('CurrencyID') = CurrencyID;
   Dataset.Post();
   Dataset.GotoNext();
  }
ApplyDatasetFilter(Dataset, 'InvoiceID', InvoiceID, false);
Dataset.Close(); 
}
2. В обработчике события OnDatasetAfterPost счета вставить вызов функции:
ChangeCurrencyID(Dataset.Values('ID'), Dataset.Values('CurrencyID'));
3. Сохранить все внесенные изменения. Перезапустить приложение и протестировать работоспособность системы. 
Желаю удачи!
С уважением,
Мельникова Екатерина