Вопрос

Можно ли через метод SetColumnValue присвоить значение равное null

Подскажите, можно ли через метод SetColumnValue, присвоить значение справочного поля равное null?

 

Нравится

2 комментария
Лучший ответ
Можно через:
entity.SetColumnValue("OwnerId", null);
или
entity.ForceSetColumnValue("OwnerId", null);

При сохранении, возможно, придется отключить валидацию, если поле обязательное

Прим: для справочных полей необходимо явно дописывать "Id" в конце названия колонки.

Алла, да, можно. Например, в ContactCareerSchema:

var contactSchema = entitySchemaManager.GetInstanceByName("Contact");
var contactEntity = contactSchema.CreateEntity(UserConnection);
if (contactEntity.FetchFromDB(Entity.GetTypedColumnValue<Guid>("ContactId"))){
	contactEntity.SetColumnValue("AccountId", null);
	contactEntity.SetColumnValue("DepartmentId", null);
	contactEntity.SetColumnValue("JobId", null);
	contactEntity.SetColumnValue("JobTitle", String.Empty);
	contactEntity.SetColumnValue("DecisionRoleId", null);
	contactEntity.Save();
}

А если речь о клиентском коде, и там такое бывает. В BaseSchemaViewModel есть функция:

/**
 * Clears the values of the columns of the schema by setting null. Clears the parameter of changed values.
 * @protected
 */
clearEntity: function() {
	Terrasoft.each(this.columns, function(column, columnName) {
		if ((column.type === Terrasoft.ViewModelColumnType.ENTITY_COLUMN) && !column.isCollection) {
			this.setColumnValue(columnName, null, {preventValidation: true});
		}
	}, this);
	this.changedValues = {};
},

 

Можно через:
entity.SetColumnValue("OwnerId", null);
или
entity.ForceSetColumnValue("OwnerId", null);

При сохранении, возможно, придется отключить валидацию, если поле обязательное

Прим: для справочных полей необходимо явно дописывать "Id" в конце названия колонки.
Показать все комментарии