1С 7.7 спокойно создает такие объекты windows api как MSXML. Этого более чем достаточно для работы с XML без всяких там dll. Даже если вы не найдете ответа здесь примеры с использованием этой библиотеки, на других языках часто просто достаточно скопировать в 1С и они работают. Так или иначе, описание есть в википедии и на сайте майкрософта.
DOMDocument - объектная модель документа часть библиотеки MSXML и позволяет довольно просто создать XML-файл. Причем может обмениваться данными с другими частями этой библиотеки.
Итак, создаем XML. 4.0 в конце обозначает версию. Если необходима более поздняя - вперед, меняйте.
XML_DOM=CreateObject("MSXML2.DOMDocument.4.0");
//Создадим документ опишим его заголовок
Header = XML_DOM.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""" );
//Если нужен загловок то пишем:
XML_DOM.appendChild(Header);
//для создания тегов используется функция createElement("Имя_Тега")
Тегcообщение = XML_DOM.createElement("MESSAGE");
//чтоб поместить его в наш документ используется функция appendChild(<Ссылка на документ или тег>)
XML_DOM.appendChild(Тегcообщение);
//соответственно чтоб поместить тег внутри тега напишем
ТегТелосообщения=XML_DOM.createElement("BODY");
Тегcообщение.appendChild(ТегТелосообщения);
// Теперь вставим какое-нибудь сообщение
ТегТекстсообщения=XML_DOM.createElement("TextMESSAGE");
ТегТекстсообщения.text = "наше сообщение";
ТегТелосообщения.appendChild(ТегТекстсообщения);
//А также укажем у него атрибут
АтрибутТекста = XML_DOM.createAttribute("atr");
АтрибутТекста.nodeValue = "text";
ТегТекстсообщения.setAttributeNode(АтрибутТекста);
//а вот так его можно сохранить. И никаких работ со строкой и dll :)
XML_DOM.Save(КаталогИБ()+"1.xml");
//также существует две функции:
// Load() - загружает XML из файла или объекта
// LoadXML() - загружает Из текста.
// хоть в 1C напрямую его пишите например:
XML_DOM.loadXML("
|<MESSAGE>
|<BODY>
|<TextMESSAGE atr="text">нашесообщениеText</MESSAGE>
|</BODY>
|</MESSAGE>";
Также существуют и другие параметры, но удача, прямые руки и интернет гарантированно ответят на все вопросы.
Теперь немного об xmlschemacache. Если вам повезло и заказчик выслал схемы xsd или xml - не пугайтесь, вам действительно повезло. Ведь теперь XML можно проверить. Мне просто ну очень хотелось, чтоб сама 1С проверяла, что там мне вписали злодеи юзвери.
А посему вставил сей код, так или иначе в отладке само то:
//У той же самой библиотеки MSXML2 имеется функция проверки
Schema = СоздатьОбъект("msxml2.xmlschemacache.4.0");
Schema.add(, "E:\xsd\MESSAGE.xsd");
XML_DOM.schemas = Schema;
////собственно проверка на валидность
Ошибка = XML_DOM.validate();
Если Ошибка.errorCode = 0 Тогда
Предупреждение("Документ соответствует схеме");
Иначе
//// в свойстве .reason содержится причина ошибки.
Предупреждение("ОШИБКА: "+Ошибка.reason);
КонецЕсли;
Ну и сама собственно отправка через xmlHttp кусок все той же библиотеки. Будьте аккуратны, если есть прокси. Посмотрите описание википедии или найдите пример с прокси. Можно указать как метод Post, так и Get - однако, со своими условиями. Да и методов более чем два. Если будет много плюсов распишу все:
xmlHttp = СоздатьОбъект("MSXML2.xmlHttp.4.0");
xmlHttp.OPEN ("POST", “http://123.123.123.123:70/”, 1);
//Если требуются заголовки
// xmlHttp.setRequestHeader ("Host", "--SKIPPED--");
// xmlHttp.setRequestHeader ("Content-type", "text/xml");
xmlHttp.SEND (XML_DOM);
При отсылке имейте в виду, что она не происходит моментально и требуется знать его состояние и получить какой-нибудь ответ.
Состояние находится тут xmlhttp.readyState (0 — не инициализирован, 1 — открыт, 2 — отправка данных, 3 — получение данных и 4 — данные загружены)
Ответ можно получить либо тут xmlHttp.responseText либо xmlHttp. responseXML . Причем, если пришлют XML ответом виде строки, можно загрузить его с помощью нашего DOMDocument'а . Делайте отдельной кнопкой
XML_DOM.loadXML(xmlHttp.responseText);
//или
XML_DOM.Save(КаталогИБ()+"2.xml");
Прошу не бить за грамотность. Потому как врожденно безграмотный. Пусть это будет полезным, а если будет от плюса не откажусь