Здравствуйте!
Сегодня, в продолжение темы http://community.terrasoft.ua/forum/topic/3285, хочу все собранную информацию сохранить в одном удобочитаемом формате. Особое "Спасибо" Осауленко Александру!
И так, мы собрались перенести нумерацию счетов на сторону базы данных, но при этом использовать системные настройки. Беру последнюю сборку TS CRM 3.3.0
1. Открываем ds_InvoiceScript и комментируем 1 строчку :
InvoiceScript.IsAppend = (Dataset.State == dstInsert);
// SetItemSystemNumber('Invoice', Dataset, 'InvoiceNumber');
...
2. Открываем ds_wnd_InvoiceEditScript и опять комментируем 1 строчку :
//SetItemSystemNumber('Invoice', Dataset, 'InvoiceNumber');
...
3. В MS SQL создаем триггер:
ON [tbl_Invoice]
AFTER INSERT AS
BEGIN
IF (SYSTEM_USER = 'TS_REPLICATION') RETURN
DECLARE @ID uniqueidentifier, @Number nvarchar(250)
SET NOCOUNT ON;
DECLARE c_Invoices CURSOR
FOR SELECT [ID], [InvoiceNumber]
FROM inserted
OPEN c_Invoices
WHILE 1 = 1
BEGIN FETCH c_Invoices
INTO @ID, @Number
IF @@fetch_status = -1 BREAK
IF @@fetch_status = -2 CONTINUE
IF (@Number IS NULL)
begin
UPDATE [tbl_SystemSetting]
SET @Number = (SELECT REPLACE([StringValue], '%1', [IntegerValue] + 1)
FROM [tbl_SystemSetting] WHERE [Code] = 'InvoiceMask'), [IntegerValue] = [IntegerValue] + 1
WHERE [Code] = 'InvoiceNumber'
UPDATE [tbl_Invoice]
SET [InvoiceNumber] = @Number
WHERE [ID] = @ID
end
END
CLOSE c_Invoices
DEALLOCATE c_Invoices
END
GO
PS: вопрос к разработчикам: а зачем дважды присваивать номер (п. 1 и 2)?
Помоему в dlDataOnDatasetBeforePost лишнее присвоение
"Underscore a.k.a. _" написал:Помоему в dlDataOnDatasetBeforePost лишнее присвоение
Вот я и спрашиваю зачем его там прописали :)
--
www.it-sfera.com.ua
Terrasoft Solution Partner
Там, наверное проверка стоит в SetItemSystemNumber на заполненность поля, поэтому работает нормально и никто эту строчку не замечал.
Вообще как в анекдоте получается. "А если и второй билетик потеряю, то у меня проездной есть" :)
"Underscore a.k.a. _" написал:"А если и второй билетик потеряю, то у меня проездной есть" :)
+100 :)
--
www.it-sfera.com.ua
Terrasoft Solution Partner
Да. В wnd_InvoiceEditScript обработчик OnBeforePost лишний. В 331 такого нет, а вот в 330 осталось. Теперь и там нет
"Агеев Алексей Юрьевич" написал:В 331 такого нет, а вот в 330 осталось. Теперь и там нет
Если мне не изменяет память, то я его видел и в 3.2.0, и в 3.2.1
--
www.it-sfera.com.ua
Terrasoft Solution Partner
Поправил и там. Но те сборки давно уже не пересобираются
Посмотрел в 3.1.0 и в 3.1.1 - там все гуд :)
--
www.it-sfera.com.ua
Terrasoft Solution Partner