Как создать в 7.7 XML, проверить по схемам (XSD, XML) от заказчика и отправить на вебсервер методом Post

Публикация № 84783

Разработка - Практика программирования

Немного об API из 1С. Или простой способ создать, проверить и отправить на вебсервер XML-файл.

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"); 

Прошу не бить за грамотность. Потому как врожденно безграмотный. Пусть это будет полезным, а если будет от плюса не откажусь Wink

Специальные предложения

См. также

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    77936    Serginio    110    

Расчет страховых взносов в 1С 7.7 "Учет и отчетность предпринимателя, ред. 1.2" с апреля 2020

Бухгалтерский учет Практика программирования Зарплата v7.7 1cv7.md Россия БУ ФОМС, ПФ, ФСС Бесплатно (free)

В этой статье описано, какие небольшие изменения можно внести в модуль документа Начисление налогов с ФОТ, чтобы правильно рассчитывались страховые взносы с 1 апреля 2020 г.

09.04.2020    10766    Юджин58    39    

Маркировка лекарств - как передать код маркировки при продаже через ККТ Штрих-М

Практика программирования ККМ v7.7 Здравоохранение, медицина, стоматология Фармацевтика, аптеки Россия Бесплатно (free)

Пример программного кода для вывода чеков на ККМ Штрих-М с передачей информации о маркированных товарах (лекарства).

10.02.2020    9926    vovaapril    27    

Доработка конвертации данных КД2 (версии 2.1). Расширенная диагностическая информация при выгрузке по правилам из 1С 7.7 и при загрузке в 1С 7.7

Обмен данными 1С Перенос данных из 1С7.7 в 1C8.X Обмен через XML v7.7 v8 КД Бесплатно (free)

Есть очень неприятная особенность при настройке обмена по правилам КД2 в момент отладки на стороне 1С 7.7, как при выгрузке из 1С 7.7, так и при загрузке в 1С 7.7. Непонятно, в каком конкретно месте формирования или разбора данных XML файла в какой именно момент споткнулась программа (произошел сбой). Я нашел способ вывода дополнительной диагностики, теперь точно известно, на каком элементе данных XML споткнулся модуль выгрузки V77Exp.ert (модуль загрузки V77Imp.ert). Теперь отладка правил обмена на стороне 1С 7.7 стала простой, выполняется на порядок проще.

18.10.2019    5883    ksnik    5    

.Net в 1С. На примере использования HTTPClient, AngleSharp. Удобный парсинг сайтов с помощью библиотеки AngleSharp, в том числе с авторизацией аля JQuery с использованием CSS селекторов. Динамическая компиляция Промо

Практика программирования WEB v7.7 v8 Бесплатно (free)

Часто приходится парсить сайты, в том числе с авторизацией, перескакивая со страницы на страницу по ссылкам. Тот, кто занимался вэб программированием, знает, как удобно использовать JQuery и CSS селекторы. На .Net написана очень удобная библиотека AngleSharp. Я покажу, как с её помощью можно значительно облегчить себе труд.

10.03.2016    56536    Serginio    33    

Дистрибьюция 7.7. Часть 1. Жизненный цикл заявки покупателя. Одна заявка покупателя, много адресов доставки.

Практика программирования Адаптация типовых решений v7.7 1С7:Комплекс 1С7:ТиС УУ Бесплатно (free)

Описан способ работы с учетом расписания с приоритетными покупателями - торговыми сетями (основными покупателями) в торговой или комплексной учетной системе на 1С 7.7. Множественная заявка покупателя на несколько торговых точек.

14.10.2019    4746    ksnik    14    

Заполнение реквизитов документов из предыдущего документа

Практика программирования Универсальные функции Разработка v7.7 1cv7.md Бесплатно (free)

Функция для автоматического заполнения реквизитов документов.

04.02.2019    5244    drevilo    1    

Читаем реквизиты по ИНН в 1С:7.7

Обмен через XML v7.7 1cv7.md Россия Бесплатно (free)

Чтение реквизитов контрагентов по ИНН при оформленной подписке на сервис 1С:Контрагенты

17.01.2017    18901    kudenzov    14    

1С:Предприятие 7.7. Оптимизация. Промо

Практика программирования v7.7 1cv7.md Россия Бесплатно (free)

Разгоняем 1С:Предприятие 7.7. Выжимаем последние соки.

31.01.2009    47341    alexk-is    110    

Проверка часового пояса

Практика программирования v7.7 Бесплатно (free)

При использовании терминалок для удаленных баз, иногда при входе в базу данных необходимо исключить возможность входа пользователей с компьютеров с другим часовым поясом. Например, работают в Новосибирской базе с временем UTC +6 и пытаются зайти в базу с UTC +3.

16.05.2016    11159    kudenzov    3    

[ПОЛЕЗНЯШКА, 7.7] Как посчитать итоги по документам черным запросом с изподвывертом?

Практика программирования v7.7 1cv7.md Бесплатно (free)

Мелкая полезняшка, считает запросом итоговую сумму документов и количество документов.

12.03.2016    19401    CheBurator    18    

.Net в 1С. Асинхронные HTTP запросы, отправка Post нескольких файлов multipart/form-data, сжатие трафика с использованием gzip, deflate, удобный парсинг сайтов и т.д.

Разработка внешних компонент Практика программирования WEB v7.7 v8 Бесплатно (free)

Очень часто нужно при работе с HTTP сервисами или сайтами использовать Асинхронные HTTP запросы, отправку на сервер нескольких файлов, использование сжатия трафика. Эта статья про то, как этого легко добиться.

09.03.2016    32245    Serginio    22    

Как уменьшить количество заблокированных объектов Промо

Практика программирования v7.7 1cv7.md Россия Бесплатно (free)

История о том как я решил пересобрать форму справочника клиентов и чем это все закончилось...

12.01.2012    15641    ShEvOvIcH    18    

Пример HTTP запроса к УТМ ЕГАИС на платформе 1С 7.7

Внешние источники данных Практика программирования Оптовая торговля Розничная торговля Оптовая торговля Розничная торговля v7.7 1cv7.md Россия Бесплатно (free)

Запрос реализован на объекте ServerXMLHTTP из встроенной в Windows библиотеки MSXML, результатом запроса является XML объект DOMDocument из той же библиотеки MSXML со встроенным интерфейсом его обработки

16.12.2015    25792    Palmer1976    3    

Экспорт нескольких MXL таблиц в один XLS файл, на отдельные листы. Простой алгоритм

Загрузка и выгрузка в Excel Практика программирования v7.7 v8 Бесплатно (free)

Статья посвящена распространённому вопросу - как сохранить несколько таблиц (отчетов) в формате MXL, с которым работает 1С, на отдельные листы одного Excel файла. Освещается простой алгоритм решения проблемы штатными средствами, без использования внешних модулей и библиотек (не относящихся к 1С и Excel).

23.11.2015    17553    etmarket    14    

Процедура расшифровки ячейки таблицы в отчетах 1С 7.7

Практика программирования Универсальные функции v7.7 1cv7.md Бесплатно (free)

Хочу поделиться с вами универсальной процедурой для расшифровки ячеек печатной формы отчетов в 1С 7.7.

24.09.2015    17960    Anzhey    14    

Технология обновления нетиповых конфигураций 1С:Предприятия 7.7 Промо

Практика программирования Администрирование данных 1С v7.7 1cv7.md Россия Бесплатно (free)

Данная статья рассчитана на уже подготовленного пользователя, владеющего некоторыми навыками программирования и работы в конфигураторе. Статью можно использовать как поэтапное руководство к действию. Статья была написана для повышения качества работ выполняемых сотрудниками компании Информ Сервис при обновлении нетиповых конфигураций. Я надеюсь, что эта информация окажется полезной и для вас.

12.12.2008    63258    alexk-is    25    

Универсальный способ сравнения таблиц

Практика программирования v7.7 v8 Бесплатно (free)

На эту тему уже есть статьи, но этот способ нигде не описан. Хотя я его использую с тех пор, как занимаюсь программированием. Его преимущество в простоте и универсальности: можно применять на 1С, SQL, а также в любом другом языке программирования.

05.07.2015    19261    json    1    

Числа прописью в родительном падеже в 7.7? Легко!

Практика программирования v7.7 1cv7.md Бесплатно (free)

Вывод числительных прописью в родительном падеже штатными средствами в три строчки кода.

20.06.2015    12905    gimalaj    3    

Хитрости сохранения табличного документа в Excel для дальнейшей работы с ним

Загрузка и выгрузка в Excel Практика программирования v7.7 v8 1cv8.cf 1cv7.md Бесплатно (free)

Все пользователи 1С всех версий (начиная с 7-й) сталкиваются с проблемой нормальной работы с данными, сохраненными в Excel файл. Есть некоторые хитрости, которые позволяют облегчить работу с сохраненными данными из 1С в формат Excel.

16.01.2015    92961    shmellevich    38    

Оптимизация выгрузки из 1С 7.7 по правилам обмена большого объема данных

Перенос данных из 1С7.7 в 1C8.X Обмен через XML 1С7.7<->1C7.7 v7.7 1cv7.md Бесплатно (free)

При выгрузке из 1С 7.7. большого справочника программа завершалась примерно с таким сообщением: "msxml6.dll: Недостаточно памяти для завершения операции". Вариант выгрузки порциями меня не устраивал. Поэтому немного оптимизировал обработку выгрузки. Возможно кому-то сэкономит время.

24.09.2014    32105    Just4Fun    33    

Отправка сообщения посредством почтового клиента Lotus Notes

Практика программирования v7.7 v8 1cv8.cf 1cv7.md Бесплатно (free)

Отправка сообщения посредством почтового клиента Lotus Notes из 1С 7,7 и 1с 8

21.08.2014    14706    iolko    8    

Исправление в типовой комплексной конфигурации глобальной функции глВсеРеквизитыДокументаЗаполнены()

Практика программирования v7.7 1С7:Комплекс Россия Бесплатно (free)

В типовых конфигурациях глобальная функция глВсеРеквизитыДокументаЗаполнены() не работает с реквизитами табличной части. Данная статья содержит текст исправленной функции, корректно проверяющей табличную часть.

20.08.2014    8209    hvv2002    0    

ЗаполнитьЗначенияСвойств - заставляем работать в 7.7

Практика программирования v7.7 1cv7.md Бесплатно (free)

Если вы используете в работе 1С:Предприятие 8.х, то наверняка знакомы и с замечательной системной процедурой, как ЗаполнитьЗначенияСвойств(). Ее использование помогает значительно упростить написание программного кода в ряде случае, делает его (код) более наглядным и простым. Но что же делать тем, кто до сих пор использует (постоянно или иногда) 1С:Предприятие 7.7?

24.07.2014    22260    tomvlad    5    

Контекстный поиск в 7.7

Инструментарий разработчика Практика программирования v7.7 1cv7.md Бесплатно (free)

Процедура контекстного поиска в журнале документов.

18.04.2014    9653    cushe    2    

Проверка ИНН v.7.7

Практика программирования v7.7 1cv7.md Россия Бесплатно (free)

Проверка ИНН v.7.7

08.03.2014    9680    kras_71    1    

Полезные функции. Склонение (должность и фамилия подписантов). Любой язык

Практика программирования v7.7 v8 Бесплатно (free)

Уехал директор в командировку, отпуск... , оставил доверенность на хозяйственные операции на другого сотрудника. Все договора и другие документы в обмороке - "подписант" теперь другой, по тексту тоже много правок... Пересмотрел много публикаций, вариантов много, не приглянулось. Сделал свой "Баян" . У меня всего-то крутится пять фигурантов ... Нет простого, наглядного и всепогодного варианта без языкового барьера. Всем процессом управляет пользователь.

03.03.2014    18081    kompas-dm    5    

Реализация Ctrl+Z в 1С 7.7 (ТиС)

Практика программирования v7.7 1С7:ТиС Бесплатно (free)

В семерке отсутствует возможность отменять последнее действие в формах документов. В данной статье будет рассмотрен пример реализации данной функции. Возможно, кому-нибудь пригодится.

15.07.2013    8110    a.o.popova    10    

Копия напечатанного документа или как спрятать документ.

Журнал регистрации Практика программирования v7.7 Бесплатно (free)

Возникла необходимость, чтобы при печати определённого документа (даже потом не сохранённого), создавалась его копия, т.е. запись всех напечатанных документов. (В результате чего возникла такая потребность, полагаюсь на вашу фантазию). В итоге получилось два варианта решения, остановился на втором.

11.04.2013    15705    Dima_    8    

Чтение строк файла CSV в список значений с помощью метода ИзСтрокиСРазделителями

Практика программирования Внешние источники данных v7.7 Бесплатно (free)

Чтение строк файла CSV в список значений с помощью метода ИзСтрокиСРазделителями

04.04.2013    19627    ivisor_fil    11    

Автосохранение документа в 1С 7.7

Практика программирования v7.7 1cv7.md Россия Бесплатно (free)

В данной статье мы рассмотрим автосохранение документа в 1С 7.7!

22.03.2013    13620    aagubarev    25    

Конвертация данных 2.1 (2.1.3.1) 1С 7.7 - 1С 8.Х передача параметра ПКО

Практика программирования Перенос данных из 1С7.7 в 1C8.X v7.7 v8 КД Бесплатно (free)

Передача параметров по умолчанию доступна только для баз 1С 8.х -1С 8.х. Показан пример, как передать параметры из 1С 7.7 - 1С 8.х

10.12.2012    25611    serg_gres    6    

Устранение проблемы при работе с полем, которое ограничено маской ввода

Практика программирования v7.7 1cv7.md Россия Бесплатно (free)

Для поля, у которого установлена маска ввода, перед программной инициализацией необходимо начальное значение преобразовать к значению в соответствии с маской, иначе буду потеряны символы в местах разделителях. В данной публикации приведена функция, которая универсально выполняет данное действие.

08.08.2012    16589    www2000    4    

Динамическая фильтрация в справочнике при вводе наименования

Практика программирования v7.7 1cv7.md Россия Бесплатно (free)

Позволяет в открытой форме списка, выбора или подбора справочника производить динамическую фильтрацию по набранному наименованию.

02.07.2012    16552    maxpiter    62    

Обновление базы 1с 7.7. с помощью движка 1с 8.х

Практика программирования Администрирование данных 1С v7.7 1cv7.md Россия Бесплатно (free)

Если Вас угораздило в стандартную типовую конфу внести правки, причем в самый большой модуль, а именно глобальный. Если к тому же Вы внесли изменение в какую-то стандартную функцию, в которой 1с сама регулярно чего-то меняет, то любое обновление начинает доставать. Используя возможности движка платформы 1с 8.х можно существенно сэкономить себе время и нервы.

28.04.2012    18747    Valerich    31    

Ошибка при формировании отчета Авансы по налогу на имущество. В 1С:Предприятие 7.7. Регламентированная отчетность за I квартал 2012 года Обновление 12q1009 от 18.04.2012 г.

Практика программирования v77::ОУ v77::БУ 1cv7.md Россия Бесплатно (free)

При формировании отчета NIMAVP1.ERT Авансы по налогу на имущество (версия 5.03) в разделе № 1-3 не сохраняет номера Страниц при выборе, что ведет к не сохранению и выводу печати двухмерного кода.

24.04.2012    9410    leo072    7    

Запуск внешней обработки по расписанию v7.7

Практика программирования Администрирование данных 1С v7.7 1cv7.md Россия Бесплатно (free)

Неоднократно возникали задачи организовать, например ежедневную выгрузку и отправку отчетов по эл.почте, и вот…

20.03.2012    44765    Yury1001    17    

ЗиК 321, в отчетах пропадает проводка по ПФР_страховая

Практика программирования v77::ОУ v77::Расчет 1С7:ЗиК Россия ФОМС, ПФ, ФСС Бесплатно (free)

При формировании отчета "Свод проводок" с галкой "Учет начисления налогов с ФОТ, включаемых в состав расходов" в отчет не выходит ПФР_страх

10.02.2012    6922    filh    19    

КД 2.0. Перенос документов 7.7 - 7.7. Передача параметра "Проведен"

Обмен через XML 1С7.7<->1C7.7 v77::ОУ v77::БУ v77::Расчет 1cv7.md КД Бесплатно (free)

1С:Конвертация данных 2.0. Решение проблемы проведения документов при переносе между базами 7.7

20.12.2011    18689    xazrad    18    

Фокусы с Конвертацией данных 2.0

Перенос данных из 1С7.7 в 1C8.X Обмен через XML v7.7 v8 1cv8.cf 1cv7.md КД Бесплатно (free)

Используем мощный инструмент Конвертации данных себе во благо

19.12.2011    20307    tusv    9    

Регистрация текста окна сообщений

Практика программирования v7.7 1cv7.md Россия Бесплатно (free)

Для контроля работы пользователей потребовалось записывать текст окна сообщений в файл. Получился простейший механизм регистрации лог-файла. Удержать роста папки "Temp", в качестве рекомендации, может использование bat-файла, который будет чистить или архивировать получаемые логи. Таких батников в инете полным-полно. P.S. Особо по форуму не смотрел, может, есть уже такое.

28.11.2011    7954    sdin101    9