Выбрать главу

var BasePath;

 BasePath=WshShell.CurrentDirectory+"\\";

 //Путь к файлу с данными

 PathBook=BasePath+"book.xml",

 //Путь к выходному файлу

 PathOut=BasePath+"out.doc";

}

//Конструктор объекта Person

function Person(LastName,Name,Phone,Street,House,App,Note) {

 this.LastName=LastName; //Фамилия

 this.Name=Name;         //Имя

 this.Phone=Phone;       //Телефон

 this.Street=Street;     //Улица

 this.House=House;       //Дом

 this.App=App;           //Квартира

 this.Note=Note;         //Примечание

}

//Определение значения тега tgName XML-элемента obj

function GetTagVal(obj, tgName) {

 var ElemList;

 //Создаем коллекцию дочерних для obj элементов, которые

 //задаются тегом tgName

 ElemList=obj.getElementsByTagName(tgName);

 //Проверяем, есть ли в коллекции ElemList элементы

 if (ElemList.length>0)

  //Возвращаем значение тега tgName

   return ElemList.item(0).text

 else return "";

}

//Заполнение нового элемента массива

function PersonToArray(XNode) {

 //Создаем новый экземпляр PersonRec объекта Person

 PersonRec=new Person();

 //Заполняем поля объекта PersonRec

 PersonRec.LastName=GetTagVal(XNode,"LastName");

 PersonRec.Name=GetTagVal(XNode,"Name");

 PersonRec.Phone=GetTagVal(XNode,"Phone");

 PersonRec.Street=GetTagVal(XNode,"Street");

 PersonRec.House=GetTagVal(XNode,"House");

 PersonRec.App=GetTagVal(XNode,"App");

 PersonRec.Note=GetTagVal(XNode,"Note");

 //Сохраняем объект PersonRec в массиве

 PersonArr[PersonArr.length]=PersonRec;

}

//Создание массива объектов Person

function FileToArray() {

 var XML,Root,NomRec,CurrNode,i;

 //Создаем массив PersonArr

 PersonArr=new Array();

 //Создаем объект XML DOM

 XML = WScript.CreateObject("Msxml.DOMDocument");

 //Загружаем XML-документ из файла

 XML.load(PathBook);

 //Сохраняем в переменной Root ссылку на корневой элемент документа

 Root=XML.documentElement;

 //Перебираем все дочерние элементы первого уровня вложенности

 //для корневого элемента

 for (i=1; i<=Root.childNodes.length-1;i++) {

  //Выделяем в коллекции XML-элементов i-й элемент

  CurrNode=Root.childNodes.item(i);

  //Добавляем новый элемент в массив объектов Person

  PersonToArray(CurrNode);

 }

}

//Вывод заголовка отчета

function TopReport(Mess) {

 //Устанавливаем выравнивание по центру

 Sel.ParagraphFormat.Alignment=wdAlignParagraphCenter;

 //Устанавливаем полужирный шрифт

 Sel.Font.Bold=true;

 //Выводим сообщение с переводом строки

 Sel.TypeText(Mess+"\n");

 Sel.TypeText("\n");

 //Устанавливаем выравнивание слева

 Sel.ParagraphFormat.Alignment=wdAlignParagraphLeft;

 //Отменяем полужирный шрифт

 Sel.Font.Bold=false;

}

//Вывод итоговой информации

function BottomReport(Mess) {

 //Устанавливаем полужирный шрифт

 Sel.Font.Bold=true;

 //Выводим сообщение с переводом строки

 Sel.TypeText(Mess+"\n");

 //Отменяем полужирный шрифт

 Sel.Font.Bold=false;

}

//Вывод одного поля из записи

function TypeString(Title, Content) {

 //Устанавливаем наклонный шрифт

 Sel.Font.Italic=true;

 //Печатаем название поля

 Sel.TypeText(Title+":\t");

 //Отменяем наклонный шрифт

 Sel.Font.Italic=false;

 //Печатаем содержимое поля

 Sel.TypeText(Content+"\n");

}

//Печать содержимого полей объекта Person

function PrintPerson(PersRec) {

 //Печатаем поля текущей записи

 TypeString("Фамилия",PersRec.LastName);

 TypeString("Имя",PersRec.Name);

 TypeString("Телефон",PersRec.Phone);

 TypeString("Улица",PersRec.Street);

 TypeString("Дом",PersRec.House);

 TypeString("Кв.",PersRec.App);

 TypeString("Заметки",PersRec.Note);

 //Печатаем разделитель с переводом строки

 Sel.TypeText("-------------------------------------\n");

 //Увеличиваем номер текущей записи

 NomRec++;

}

//Сортировка массива и печать его содержимого

function ListPersonArray() {

 var i;

 //Сортировка массива по фамилии

 PersonArr.sort(SortLastName);

 //Цикл по всем элементам массива PersonArr

 for (i=0;i<=PersonArr.length-1;i++) {

  //Печать информации для текущей записи