Добрый день, подскажите пожалуйста как добавить записи в деталь из карточки редактирования, для сохраненной детали, и для вновь создаваемой.

Нравится

7 комментариев

Илья, уточните, пожалуйста, что Вы имеете ввиду.
Если я правильно понял, то имеются виду вкладки с деталями на карточке редактирования:

Чтобы они появились в карточке необходимо для карточки редактирования раздела в "Рабочих местах" указать признак "Добавить в карточку детали раздела":

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

Андрей, не так.

Есть, например, карточка продажи с деталью "контрагенты"

Необходимо при заполнении поля "Группа компаний", добавить на деталь "контрагенты", контрагентов из выбранной группы.

Илья, а после сохранения записи они там появляются?

Андрей, вот мне и надо в автоматическом режиме, просле выбора группы, заполнить деталь.
Вопрос заключатся в том, как из верхней карточки достучаться до деталей. И как корректно добавить записи на деталь.

Илья, я это понял.
По поводу заполнения детали, тут зависит от того, как Вы связывали ее с объектом продажи.
Если связь между деталью и полем на данный момент отсутствует, то можно после добавления группы делать выборку контрагентов, входящих в указанною группу, а потом для каждого контрагента создавать экземпляры (записи) объекта детали.
Пример можно посмотреть на "Странице реестра контактов рассылки", где добавляется группа контактов. Думаю, это то, что нужно.

Реализовал вот так:

Guid affiliationId = Guid.Parse(Page.AffilationEdit.Value.ToString());
 
var userConnection = Page.UserConnection;
var entitySchemaManager = Page.Schema.SchemaManagerProvider.GetManager("EntitySchemaManager") as Terrasoft.Core.Entities.EntitySchemaManager;
var entitySchemaQuery = new EntitySchemaQuery(entitySchemaManager, "AccountToAffiliation");
var accountColumnName = entitySchemaQuery.AddColumn("Account").Name;
entitySchemaQuery.Filters.Add(entitySchemaQuery.CreateFilterWithParameters(FilterComparisonType.Equal, "Affiliation", affiliationId));
var accountCollection = entitySchemaQuery.GetEntityCollection(UserConnection);
 
Guid accountId;
var accountInOpportunityEntitySchema = UserConnection.EntitySchemaManager.GetInstanceByName("AccountInOpportunity");
foreach (var record in accountCollection) {
  accountId = record.GetTypedColumnValue<Guid>("AccountId");
 
  var accountInOpportunityEntity = accountInOpportunityEntitySchema.CreateEntity(UserConnection);
  accountInOpportunityEntity.SetDefColumnValues();
  accountInOpportunityEntity.SetColumnValue("OpportunityId", EntityPrimaryColumnValue);
  accountInOpportunityEntity.SetColumnValue("AccountId", accountId);
  accountInOpportunityEntity.Save();
}

Илья, рад, что получилось.
Спасибо, что делитесь решениями.)

Показать все комментарии