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++) {
//Печать информации для текущей записи