7 марта 2011 г.

Пример редактирования атрибутов

Задача: выгрузить в формат Excel (.csv) элементы типа EQUI для редактирования атрибута Descirpition. После редактирования (в Excel) загрузить информацию обратно, так чтобы соответствующему элементу рписвоилось соответствующее значение атрибута.

Решение: состоит из двух частей - коллекция и запись в файл и считывание файла и запись атрибута

Часть первая (код первого макроса): собираем все элементы типа EQUI внутри текущего элемента --> формируем массив для вывода во внешний файл --> выводим в файл, затем файл редактируется средствами Excel

--собираем коллекцию
VAR !allEqui COLLECT ALL EQUI FOR CE
--запускаем цикл для формирования массива данных на вывод
--разделитель - точка с запятой для того, чтобы Excel авоматически разбил по столбцам
do !x from 1 to !allEqui.Size()

 !outputArray[!x] = !allEqui[!x].Dbref().Name + ';' + !allEqui[!x].Dbref().Desc

enddo

--формируем файл
!fileName = 'c:\equips.csv'
!fileObj = OBJECT FILE(!fileName)
--записываем информацию
!fileObj.Writefile('OVERWRITE',!outputArray)


Часть вторая (код второго макроса): считываем файл и загружаем данные, присваивая атрибут

!fileName = 'c:\equips.csv'
!fileObj = OBJECT FILE(!fileName)
--считываем данные в массив
!fileData = !fileObj.Readfile()
--проходим по циклу считанных данных и заносим данные в модель
--принцип: указываем системе имя в этот момент элемент становится текущим
--далее даем команду назначения атрибута
do !x from 1 to !fileData.Size()
  !equiName = !fileData[!x].Split(';')[1]
  !equiDesc = !fileData[!x].Split(';')[2]
   
  $!equiName
  DESC |$!equiDesc| 

enddo

Приведены базовые варианты без отслеживания возможных ошибок

0 коммент.:

Отправить комментарий