У нас реализована раздельная автоматическая нумерация счетов и документов для разных юр.лиц нашей компании. То есть, если юр. лицо Xxx, то по маске для Xxx документам и счетам присваивается присваиваются соответствующие номера с префиксом X. Если Yyy - то с префиксом Y.
Для счетов в src_InvoiceEditScript по событию OKClick обрабатываем функцию btnOKOnClick(), где в зависимости от значения поля 'SupplierID' (поставщик) вызываем SetItemSystemNumber() с разными значениями.

function btnOKOnClick(Control) {
        var Dataset = dlData.Dataset;
        var DefaultValues = GetAttribute(Self, 'DefaultValues');
        var WorkflowItemID = Dataset.ValAsStr('WorkflowItemID');
        if (Dataset.State != dstInsert) {
                if (!ClearVises('InvoiceVises', 'InvoiceID', Dataset('ID'))) {
                        return;
                }
        }
    var oDate = new Date();
    var DYear = oDate.getYear();
    DYear = DYear - 2000;
    var SYear = DYear.toString();
        if (Dataset.Values('InvoiceNumber') == null) {         
                if (Dataset.Values('SupplierID') == '{7F8B1E5C-C450-47C6-B770-1AF0CBCAF591}') {
                //ShowConfirmationDialog(Dataset.Values('SupplierID'));
            SetItemSystemNumber('InvoicePro', Dataset, 'InvoiceNumber');
            } else
                if (Dataset.Values('SupplierID') == '{933958B9-E358-4A98-8A02-5BAD9AC869A8}') {
            SetItemSystemNumber('InvoiceIp', Dataset, 'InvoiceNumber');
            } else
            if (Dataset.Values('SupplierID') == '{61773DB2-980C-49F2-881D-8BD59EC1A0AA}') {
            SetItemSystemNumber('InvoiceTch', Dataset, 'InvoiceNumber');
            } else
            if (Dataset.Values('SupplierID') == '{006B2B81-D597-40E9-A4EC-73171D224F5C}') {
            SetItemSystemNumber('InvoiceBLD', Dataset, 'InvoiceNumber');
            } else
                if (Dataset.Values('SupplierID') == '{084FA6BB-4421-4E23-9641-1E8D11D407C8}') {
                SetItemSystemNumber('InvoiceGms', Dataset, 'InvoiceNumber');
            } else {
            SetItemSystemNumber('Invoice', Dataset, 'InvoiceNumber');
            }
            var GeneratedNumber = Dataset.Values('InvoiceNumber') + '/' + SYear;
                  Dataset.Values('InvoiceNumber') = GeneratedNumber;
        }      
        InvoiceEdit.IsCompleting = true;
        if (CheckItemNumberDuplicate('Invoice', Dataset, 'InvoiceNumber',
                "Счет")){
                if (!scr_BaseDBEdit.btnOKOnClick(Control)) {
                        return;
                }
        }
        var IsCreatedByDocumentID = Self.Attributes('IsCreatedByDocumentID');
        if (IsCreatedByDocumentID) {
                if (ShowConfirmationDialog("Перейти к созданному счету?") == wmrYes) {
                        GotoWorkspace('wnd_InvoicesWorkspace', BaseDBEdit.RecordID);
                }
        }
        if (Self.IsVisible) {
                return;
        }
        ProcessWorkflowItem(WorkflowItemID);
}

Аналогичным реализована работа с названиями для документов в src_DocumentEditScript:

function dlDataOnDatasetBeforePost(Dataset, DoPost) {
    var oDate = new Date();
    var DYear = oDate.getYear();
    var DMonth = oDate.getMonth()+1;
    var DDate = oDate.getDate();
    DYear = DYear - 2000;    
    var SYear = DYear.toString();
    if (DMonth10)
     {
      var SMonth = '0' + DMonth.toString();
     }
    else {
          var SMonth = DMonth.toString();
         }
        if (DDate10)
         {
          var SDate = '0' + DDate.toString();
         }
        else {
          var SDate = DDate.toString();
         }  
    var DocumentTypeID = Dataset('DocumentTypeID');    
        if (Dataset.Values('DocumentNumber') == null) {
            if (DocumentTypeID == '{D8525E18-F8FE-4583-9E54-CA43A7129C45}' || DocumentTypeID == '{DE983B1A-6CF3-4A79-AF34-DCB6A2D0DB76}') /* Акт и Торг12 */
             {
                  var InvoiceID = Dataset.Values('InvoiceID');
              if (InvoiceID != null) {
                        var InvoiceDataset = Services.GetNewItemByUSI('ds_Invoice');
                    ApplyDatasetFilter(InvoiceDataset, 'ID', InvoiceID, true);
                    InvoiceDataset.Open();
                    var InvoiceSupplierID = InvoiceDataset('SupplierID');
                    InvoiceDataset.Close();
                  }
                  else {
                        MessageBox("Нет привязанного счета!");
                  }
                  if (InvoiceSupplierID == '{7F8B1E5C-C450-47C6-B770-1AF0CBCAF591}') {
                SetItemSystemNumber('DocumentPro', Dataset, 'DocumentNumber');
                var GeneratedNumber = Dataset.Values('DocumentNumber');
              } else
                  if (InvoiceSupplierID == '{006B2B81-D597-40E9-A4EC-73171D224F5C}') {
                SetItemSystemNumber('DocumentBLD', Dataset, 'DocumentNumber');
                var GeneratedNumber = Dataset.Values('DocumentNumber');
              } else
                  if (InvoiceSupplierID == '{933958B9-E358-4A98-8A02-5BAD9AC869A8}') {
                SetItemSystemNumber('DocumentIp', Dataset, 'DocumentNumber');
                var GeneratedNumber = Dataset.Values('DocumentNumber');
              } else
              if (InvoiceSupplierID == '{61773DB2-980C-49F2-881D-8BD59EC1A0AA}') {
                SetItemSystemNumber('DocumentTch', Dataset, 'DocumentNumber');
                var GeneratedNumber = Dataset.Values('DocumentNumber');
              } else
              if (InvoiceSupplierID == '{084FA6BB-4421-4E23-9641-1E8D11D407C8}') {
                SetItemSystemNumber('DocumentBgm', Dataset, 'DocumentNumber');
                var GeneratedNumber = Dataset.Values('DocumentNumber');
              } else {
                SetItemSystemNumber('Document', Dataset, 'DocumentNumber');
                var GeneratedNumber = Dataset.Values('DocumentNumber');
              }
             }    
            else if (DocumentTypeID == '{584720AE-7F93-461B-BE79-AFA15A4D85D4}') /* Входящий */
             {
              SetItemSystemNumber('DocumentVI', Dataset, 'DocumentNumber');
              var ii = 0;
              var array = Dataset.Values('DocumentNumber').split("");
              for(var i = 0; i array.length; i++)
               {
                if (array[i] == '№')
                 {
                  var ii = 1;
                 }
                   }
              if (ii != 1)
               {
                var GeneratedNumber = 'ВХ-' + Dataset.Values('DocumentNumber');
                Dataset.Values('DocumentNumber') = GeneratedNumber;    
               }
             }
            else if (DocumentTypeID == '{EFFB172C-B755-4E77-BFC8-3B121140C74F}') /* Исходящий */
             {
              SetItemSystemNumber('DocumentVI', Dataset, 'DocumentNumber');
              var ii = 0;
              var array = Dataset.Values('DocumentNumber').split("");
              for(var i = 0; i array.length; i++)
               {
                if (array[i] == '№')
                 {
                  var ii = 1;
                 }
                   }
              if (ii != 1)
               {
                var GeneratedNumber = 'ИСХ-' + Dataset.Values('DocumentNumber');
                Dataset.Values('DocumentNumber') = GeneratedNumber;    
               }
             }
            else if (DocumentTypeID == '{DD6B6F0E-FD7B-42EF-95D0-486A2EFC02B3}') /* Счет-фактура */
             {
                  var InvoiceID = Dataset.Values('InvoiceID');
              if (InvoiceID != null) {
                        var InvoiceDataset = Services.GetNewItemByUSI('ds_Invoice');
                    ApplyDatasetFilter(InvoiceDataset, 'ID', InvoiceID, true);
                    InvoiceDataset.Open();
                    var InvoiceSupplierID = InvoiceDataset('SupplierID');
                    InvoiceDataset.Close();
                  }
                  else {
                        MessageBox("Нет привязанного счета!");
                  }
                  if (InvoiceSupplierID == '{7F8B1E5C-C450-47C6-B770-1AF0CBCAF591}') {
                        SetItemSystemNumber('DocumentIF', Dataset, 'DocumentNumber');
                var GeneratedNumber = 'СФ-БПР-' + Dataset.Values('DocumentNumber');
                Dataset.Values('DocumentNumber') = GeneratedNumber;
              } else
                  if (InvoiceSupplierID == '{933958B9-E358-4A98-8A02-5BAD9AC869A8}') {
                        SetItemSystemNumber('DocumentIF', Dataset, 'DocumentNumber');
                var GeneratedNumber = 'СФ-ДНБ-' + Dataset.Values('DocumentNumber');
                Dataset.Values('DocumentNumber') = GeneratedNumber;
              } else                                                                      
                  if (InvoiceSupplierID == '{006B2B81-D597-40E9-A4EC-73171D224F5C}') {
                        SetItemSystemNumber('DocumentIF', Dataset, 'DocumentNumber');
                var GeneratedNumber = 'СФ-БЛД-' + Dataset.Values('DocumentNumber');
                Dataset.Values('DocumentNumber') = GeneratedNumber;
              } else                                                                      
              if (InvoiceSupplierID == '{61773DB2-980C-49F2-881D-8BD59EC1A0AA}') {
                        SetItemSystemNumber('DocumentIF', Dataset, 'DocumentNumber');
                var GeneratedNumber = 'СФ-ТЧК-' + Dataset.Values('DocumentNumber');
                Dataset.Values('DocumentNumber') = GeneratedNumber;
              }                                                                          
              if (InvoiceSupplierID == '{084FA6BB-4421-4E23-9641-1E8D11D407C8}') {
                    SetItemSystemNumber('DocumentIfBgm', Dataset, 'DocumentNumber');
                var GeneratedNumber = 'СФ-' + Dataset.Values('DocumentNumber');
                Dataset.Values('DocumentNumber') = GeneratedNumber;
              }                                                                          
              else {
                var GeneratedNumber = Dataset.Values('DocumentNumber');
              }    
             }
            else {
              SetItemSystemNumber('Document', Dataset, 'DocumentNumber');
              var GeneratedNumber = Dataset.Values('DocumentNumber');
             }
             var GeneratedNumber = Dataset.Values('DocumentNumber') + '/' + SYear;
             Dataset.Values('DocumentNumber') = GeneratedNumber;
     }
}

Так было заведено несколько юр. лиц и для них всё замечательно работало. Сейчас я добавил ещё одно юр. лицо. Раздельная автоматическая нумерация с нужным префиксом по маске работает замечательно, но в отчётах по документам и счетам (ТОРГ-12, счет-фактуры, счтеа и др.) выводится только футер (там только одно статическое поле memo не связанное не получающие никаких данных ни из каких датасетов).

Есть подозрение, что нужно было поправить ещё где-то. но я совершенно не помню где ещё.
Подскажите, что я забыл?

Нравится

2 комментария

что-то я не уловил связи между нумерацией и отчетами


но в отчётах по документам и счетам выводится только футер

И? Тоже не понял в чем проблема. В отчетах номер не выводится вообще или как?

Показать все комментарии