У нас реализована раздельная автоматическая нумерация счетов и документов для разных юр.лиц нашей компании. То есть, если юр. лицо 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 не связанное не получающие никаких данных ни из каких датасетов).
Есть подозрение, что нужно было поправить ещё где-то. но я совершенно не помню где ещё.
Подскажите, что я забыл?