Создала системную переменную, в дизайнере объектов присвоила полю значению по умолчанию из этой переменной.Что ещё нужно сделать? потому как инкремента поля не происходит, при добавлении новой записи выставляется в 0, а в БД эта возможность заблокирована.
Нравится
Посмотрите, как это сделано в процессе объекта "Документ".
Посмотрела,скопировала к себе этот кусок - не работает.Не пойму, как работает это действие "Сгенерировать порядковый номер" - оно использует системные настройки(Текущий номер и Маска)?
Системные настройки уже созданы, я как раз не могу найти, где при создании Действия процесса, нужно указывать конкретные системные настройки?, или это определяется по имени
Да, по имени. В коде схемы "Сгенерировать номер по порядку" есть:
var entitySchemaName = entitySchema.Name; string codeMaskSettingName = entitySchemaName + "CodeMask"; string lastNumberSettingName = entitySchemaName + "LastNumber";
Сделала ранее по аналогии, как в схеме Документ - не работает, потом так
В скрипт вставила код из схемы "Сгенерировать номер по порядку"
object EntitySchema = Entity.Schema; if (EntitySchema != null) { var entitySchema = EntitySchema as Terrasoft.Core.Entities.EntitySchema; var entitySchemaName = entitySchema.Name; string codeMaskSettingName = entitySchemaName + "CodeMask"; string lastNumberSettingName = entitySchemaName + "LastNumber"; var connection = context.UserConnection; string sysSettingsCodeMask = (string)SysSettings.GetValue(connection, codeMaskSettingName); int sysSettingsLastNumber = (int) SysSettings.GetValue(connection, lastNumberSettingName); SysSettings.SetValue(connection, UserConnection.RootAdminUnitGroupId, lastNumberSettingName, ++sysSettingsLastNumber); var code = string.Format(sysSettingsCodeMask,sysSettingsLastNumber); var update = new Update(UserConnection, Entity.Schema.Name) .Set("Number", Column.Parameter(code)) .Where("Id").IsEqual(Column.Parameter(Entity.PrimaryColumnValue)); update.Execute(); }
Здравствуйте.
Все-таки рекомендую сделать по аналогии с "Документом". Что именно у Вас не получилось?
Здравствуйте, Дмитрий
Сделала по аналогии с "Документом"
В скрипте SetGenerateParamScript сначала 1 строка идентична как в Документе
но поскольку не работала, добавила код на обновление поля....не работает (((
GenerateNumberUserTask.EntitySchema = Entity.Schema; string code = "1"; var update = new Update(UserConnection, Entity.Schema.Name) .Set("Number", Column.Parameter(code)) .Where("Id").IsEqual(Column.Parameter(Entity.PrimaryColumnValue)); update.Execute();
Такое ощущение что вообще не происходит наступление этого события, тем не менее Заказ в таблицу добавляется....
А какая у этого объекта PrimaryColumn?
Также, пожалуйста, т.к. у Вас On-Site версия - попробуйте запустить Profiler и посмотреть какие запросы идут на сервер после нажатия на "ОК".
Если я не ошибаюсь, то по умолчанию PrimaryColumn это Id (объект наследован от базового)
В профайлере обязательно посмотрю, пока сделала через триггер: после вставки читаю значение из системной таблицы, обновляю поле Number, потом обновляю значение системной переменной в таблице....Понимаю что не совсем правильно, но так хотя бы работает
Если у Вас On-Site, то триггер - вполне разумное решение. :)