Чтение данных из файла docx средствами 1С

Задача: спарсить данные из таблицы, которая находится в файле формата docx средствами 1С

Решение: по сути своей файл формата docx является zip архивом, в котором находятся файлы формата xml и внешние ресурсы, типа картинок, стилей и т.п. Текстовое же содержимое находится непосредственно в файле document.xml. Его нужно лишь прочитать, найти в нём таблицу и распарсить данные.

Для начала загрузим файл на сервер, переименуем его в zip, и откроем его при помощи метода 1С «ЧтениеZipФайла», а найденный в архиве файл document.xml извлекем для дальнейшей обработки:

Далее файл documnet.xml необходимо загрузить как XML и распарсить в структуру при помощи построителя DOM. После чего останется только найти таблицу по имени узла w:tbl и поместить содержимое в таблицу значений:

Еще один вариант выгрузки остатков товаров из 1С Розница 2.2 в файл XML.

Данную обработку можно использовать как основу для выгрузки списка товаров в интернет магазин. У меня и выгрузка из 1С и загрузка на сайт самописные, потому всё просто и понятно получается.  Обработку можно скачать тут





Форматирование xml файла из коммандной строки

Задача: отформатировать удобочитаемый формат не форматированный xml громадного размера

Решение:

 




Берем погоду у Яндекса в xml формате

Задача: получить погоду на сегодня и на завтра.

Решение: воспользуемся сервисом pogoda.yandex.ru
1. Найдем свой код города по справочнику https://pogoda.yandex.ru/static/cities.xml
2. По ссылке вида http://export.yandex.ru/weather-ng/forecasts/код_города.xml, мы имеем погоду в формате xml. Распарсим её например так:
<?php
 $wz = new SimpleXMLElement($xml);
 $cn=0;
 foreach ($wz->day as $value) {
  $cnt=0;
  foreach ($value->hour as $hr) {
  if (($cnt==2) or ($cnt==12) or ($cnt==18)) {
    $t=$hr->temperature;
    $weather_condition=$hr->weather_condition[«code»];
    echo «$t;$weather_condition</br>»;
   };
   $cnt++;
  };
  $cn++;
  if ($cn==2) {die();};
}
?>



Выгрузка списка контрагентов в XML (1C 8.2)

Достаточно простой код, используя обьект 1С ЗаписьXML:




1 2