+1
Answered
как настроить автонумерацию
Здравствуйте!
Создала новый класс для регистрации исходящих писем. Завела атрибут Номер, но незнаю как сделать, чтобы нумерация новым письмам присваивалась автоматически. Где это задается?
Vasta
0
Vasta
Answered
Отдел внедрений (бизнес-аналитик) 13 aastat tagasi
Здравствуйте, Анна!
Существует несколько способов задать автонумерацию на классе и выбор необходимого зависит от того, какие правила нумерации требуется задать.
Первый - замещение номера уникальным идентификатором записи.
Создать новый атрибут с типом "Вычисляемый":
Будет создан атрибут "Номер", который всегда будет уникальным числом.
Минус данного метода - нумерация не всегда последовательная. Например, если запись была создана и ей присвоен очередной номер, а потом удалена, то следующей записи будет присвоен уже следующий номер, а не тот, который был у удаленной записи.
Второй - добавление в базу данных триггера интеллектуальной нумерации.
Ниже представлен готовый код этого триггера, который необходимо выполнить на Вашей базе данных через интерфейс SQL Server Managment Studio (открыть окно нового запроса и вставить это код). Так же можно скачать файл с кодом - SetNumber.sql
Перед тем, как выполнять триггер необходимо создать текстовый атрибут с именем Номер.
Перед выполнение данного кода в него необходимо внести изменения - адаптировав к Вашему классу и атрибуту нумерации.
- Заменить YYY на номер класса (в примере на скриншоте выше это цифра 87), что бы получилось Attr87.
- Заменить XXX на номер атрибута (в примере на скриншоте выше это цифра 388), что бы получилось p388.
Данный код осуществляет запись в созданный атрибут следующий по текущему списку номер, т.е. удаленная запись не занимает присвоенный ей ранее номер, и созданная после удаления новая запись получит номер той, которая была удалена. В итоге порядок нумерации не нарушается и является более корректным.
Код данного триггера можно в дальнейшем модифицировать добавляя условия (например каждый год начинать нумерацию заново и пр.).
Vasta
Answered
Здравствуйте, Анна!
Существует несколько способов задать автонумерацию на классе и выбор необходимого зависит от того, какие правила нумерации требуется задать.
Первый - замещение номера уникальным идентификатором записи.
Создать новый атрибут с типом "Вычисляемый":
Будет создан атрибут "Номер", который всегда будет уникальным числом.
Минус данного метода - нумерация не всегда последовательная. Например, если запись была создана и ей присвоен очередной номер, а потом удалена, то следующей записи будет присвоен уже следующий номер, а не тот, который был у удаленной записи.
Второй - добавление в базу данных триггера интеллектуальной нумерации.
Ниже представлен готовый код этого триггера, который необходимо выполнить на Вашей базе данных через интерфейс SQL Server Managment Studio (открыть окно нового запроса и вставить это код). Так же можно скачать файл с кодом - SetNumber.sql
Перед тем, как выполнять триггер необходимо создать текстовый атрибут с именем Номер.
Перед выполнение данного кода в него необходимо внести изменения - адаптировав к Вашему классу и атрибуту нумерации.
- Заменить YYY на номер класса (в примере на скриншоте выше это цифра 87), что бы получилось Attr87.
- Заменить XXX на номер атрибута (в примере на скриншоте выше это цифра 388), что бы получилось p388.
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'AttrYYY_Number' AND type = 'TR') DROP TRIGGER AttrYYY_Number
GO
CREATE TRIGGER [dbo].[AttrYYY_Number] ON [dbo].[AttrYYY]
with execute as owner
FOR INSERT
AS
BEGIN
if (select trigger_nestlevel())>1 return
set nocount on;
-- Присвоение номера в формате 000001
UPDATE T SET pXXX = (SELECT REPLICATE('0', 6 - DATALENGTH(CAST(isNull(MAX(CAST(LEFT(N.pXXX,6) as int)),0)+1 as varchar))) + CAST(isNull(MAX(CAST(LEFT(N.pXXX,6) as int)),0)+1 as varchar)
FROM AttrYYY N WHERE N.ObjectID <> T.ObjectID and isNumeric(N.pXXX) = 1) FROM AttrYYY T JOIN inserted i ON i.ObjectID = T.ObjectID
END
Данный код осуществляет запись в созданный атрибут следующий по текущему списку номер, т.е. удаленная запись не занимает присвоенный ей ранее номер, и созданная после удаления новая запись получит номер той, которая была удалена. В итоге порядок нумерации не нарушается и является более корректным.
Код данного триггера можно в дальнейшем модифицировать добавляя условия (например каждый год начинать нумерацию заново и пр.).
Начиная с версии КлиК: Комплексная конфигурация 3.1 добавлена возможность на пользовательском уровне задавать правила формирования номеров для основных объектов (Договоров, Документов, Первички, Продаж, Проектов). Этот функционал позволяет гибко настраивать в том числе и зависимую нумерацию.
Customer support service by UserEcho