Привет всем!

возможно часто возникал вопрос, как сделать так, что при копировании задачи, все контакты данной задачи так же переносились?

Для этого необходимо добавить соответствующую логику в конфигурацию:

Для элемента ScheduleControl (сервис Tasks\General\SchedulerArea\wnd_SchedulerArea) добавить код в событие OnCopyEvent.

Встав в ячейку Value (со сначением ScheduleControlOnCopyEvent) для указанного события сделайте двойной клик, после чего Вы перейдете в сервис Tasks\General\SchedulerArea\scr_SchedulerArea.

В данном сервисе найдите объявление функции function CopyEvent(Event).
Между
Dataset.Post();
и
RefreshDataset(SchedulerArea.EventsDataset);

Вставьте код:

var Result = ShowConfirmationDialog('Копировать контакты задачи?')
if ((Dataset.Values('AuthorID') != Dataset.Values('OwnerID')) && (Result == mrYes)) {    
                  var SourceDataset = GetSingleItemByCode('ds_ContactInTask');
                  ApplyDatasetFilter(SourceDataset, 'TaskID', SourceRecordID, true);                
                  var SourceParentItemIDFieldName = 'TaskID';          
                  var DestinationDataset = Services.GetNewItemByUSI('ds_ContactInTask');
                  var DestinationParentItemIDFieldName = 'TaskID';
                  var DestinationItemID = Dataset.ValAsGUID('ID');                
                  SourceDataset.Open();
                  if (IsDatasetEmpty(SourceDataset)) {
                      SourceDataset.Close();
                      return;
                  }                
                var ExcludedFieldsList = GetNewDictionary();
                  ExcludedFieldsList('ID') = true;
                  ExcludedFieldsList(SourceParentItemIDFieldName) = true;                      
                  SourceDataset.GotoFirst();
                  DestinationDataset.EnableEvents();            
                  while (!SourceDataset.IsEOF) {
                        DestinationDataset.Append();
                        CopyRowDataEx(SourceDataset, DestinationDataset, ExcludedFieldsList);
                        DestinationDataset('ID') = Connector.GenGUID();
                        DestinationDataset(DestinationParentItemIDFieldName) = DestinationItemID;
                        DestinationDataset.Post();
                        SourceDataset.GotoNext();
                  }            
                  DestinationDataset.DisableEvents();
                  DestinationDataset.Close();
                  SourceDataset.Close();  
            }

Сохранить сервис и проверять!

Приятной работы!

С уважением,
Белецкий Арсений
Группа компаний Terrasoft

Нравится

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