Задача: выгрузить в формат 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
Приведены базовые варианты без отслеживания возможных ошибок
Решение: состоит из двух частей - коллекция и запись в файл и считывание файла и запись атрибута
Часть первая (код первого макроса): собираем все элементы типа 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 коммент.:
Отправить комментарий