XPath в 1С - как с этим работать.

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

Разработка - Системная интеграция - Обмен через XML

XML XPath

Формат XML давно и прочно вошёл в обиход. Уже освоены средства документа DOM. Но быстрый поиск XPath, активно применяемый в работе с xml, почти не освещён, хотя в 1С, как всегда, "есть нюансы". Предлагаю краткое руководство, заточенное именно под "одинэснегов" и не претендующее на пересказ учебников по XPath. Как сделать, на что обратить внимание.

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

Заранее извиняюсь за огрехи форматирования, но я ухлопал два часа, так и не победив полностью окно публикации ИС... Ну вот что-то криво у меня в манипуляторах... Если где потеряны скобки или ещё что, извиняйте. По смыслу, думаю, всё будет ясно.

 

 

Что это такое?

Суть механизма XPath - быстрое получение нужных элементов из документа, построенного согласно DOM на основании текста, являющегося правильным XML. То есть, имеем xml-строку или файл, содержимое которых хотим быстро рассмотреть на предмет наличия неких тегов. В терминах DOM - хотим найти элементы и/или атрибуты, или другие составляющие DOM-модели, в этом документе. Чаще всего речь именно об элементах, атрибутах и их свойствах.

XPath - механизм, на входе которого строковый запрос, описывающий нужное нам, а на выходе коллекция найденных объектов, которую можно обойти циклом.

Пространство имён

Прежде, чем рассматривать собственно XPath, замечу, что критически важное значение для успешной работы с ним имеет понятие "Пространство имён". Известное по работе с другими механизмами, оно, тем не менее, не всегда очевидно и понятно.

Пространство имён - это просто строка, уникальное имя, которое определяет "среду обитания" тегов. Исторически есть 2 варианта написания, URL и URN, и в 1С используются URL, т.е. внешний вид этой строки должен выглядеть правильным интернет-адресом, пусть и реально не существующим. Например, "http://www.w3.org/2001/XMLSchema" или "http://www.404_1C.ru", лишь бы он был уникален в пределах данных, с которыми вы работаете. Эти адреса и называют URI.

Для краткости, вместо URI, в тексте используют префиксы (по сути, алиасы, псевдонимы) пространств имён - это тоже строки, но покороче. Поэтому объявление пространства имён, например, для "среды обитания" тегов/элементов DOM, понятий, которыми пользуются айтишники, будет таким:  

<НачалоДокумента xmlns:IT="http://v8.it_cool.ru">.

А для понятий отдела кадров, в свою очередь, можно объявить:

<НачалоДокумента xmlns:Kadri="http://NashiKadri"/>. 

В общем случае, объявление пространства имён размещается внутри теговых рамок и имеет вид xmlns:="". Причём, объявление само по себе не считается ни отдельным тегом, ни атрибутом, и в коллекции элементов DOM-документа тоже не входит. 

Зачем это нужно? Чтобы различать понятия. Предположим, в xml-файле есть тег или атрибут "". Понять его содержимое можно по-разному. И вот тут используются префиксы пространств имён, поэтому IT:Мать это сведения о материнской плате ПК, а Kadri:Мать - семейные данные человека. Обратите внимание, что, если речь о теге, и закрываться он тоже должен с указанием префикса.

На один xml-текст можно объявить сколько угодно пространств имён с разными префиксами и применять рядом, вперемешку и как угодно, для тегов и атрибутов. Объявлений внутри тега может быть несколько, они разделяются пробелами. Более того, для конкретного случая можно "по месту" переопределить или доопределить пространство имён - объявлять их вовсе не обязательно в начале документа, это можно сделать где угодно:  

<Klients:Klient xmlns:Klients ="http://www.ohrenevshie.com">
  <
Summ>99999<Summ>
  <Klients:Person
xmlns:Klients="http://www.VIP_bazar.com">Господин директор<Klients:Person>
  <
Klients:Chances>No chance (((<Klients:Chances>
<Klients:Klient>

Так, тут мы используем пространство имён для неплательщиков, но элемент Person переопределён, и находится в пространстве имён для ВИПов. И действует это переобъявление только в рамках этого тега. Также заметим, что тег/элемент Summ вообще не входит явным образом в указанное пространство имён.

Итак, внутри одного xml обычно находятся теги и атрибуты с префиксами, принадлежащими разным, объявленным уникально, пространствам имён. Для работы с этим никаких особых средств нет, да это и не требуется. В 1С есть объект, который, теоретически, должен предоставлять возможность работы с разными пространствами имён, и он называется РазыменовательПространствИменDOM, но пользы от него мало. Разыменователь может создаваться на основании одной или нескольких связок "префикс-URI", или на основании документа DOM или его узла, но на практике - как ни создавай, разницы не заметно. Несмотря на уверения СП, прямое влияние контекста разыменователя, по крайней мере на работу XPath, проследить не удалось. Обойти коллекцию имеющихся пространств имён с его помощью тоже нет возможности. И единственная, пожалуй, польза, это что на некоем уровне, для документа в целом или для любого его элемента, где используется указание URI пространства имён, можно его получить по его префиксу:

Разыменователь=Новый РазыменовательПространствИменDOM(ДокументИлиЭлемент);
URI=Разыменователь.НайтиURIПространстваИмен("IT");
// для конструкции xmlns:d3p1=http://v8.1c.ru/8.1/data/core метод с аргументом "d3p1" вернёт строку "http://v8.1c.ru/8.1/data/core"

Т.е. чисто теоретически, можно пробежаться по DOM-документу и поискать по префиксам, но несколько полезнее в этом плане, на мой взгляд, поиск самим XPath по оси "namespace" (см.ниже).

Замечу ещё, что понятие "имя" для элемента DOM (в т.ч. атрибута) и понятие "локальное имя" в рамках 1С также выглядят иначе, нежели должны бы по смыслу. Локальное имя пусто и бесполезно, хотя, по идее, полное имя должно включать префикс пространства имён, а локальное - не включать, т.е. в целом Klients:Person это должно быть имя, а Person - локальное имя. Однако локальные имена хоть сколько-то логично ведут себя лишь для самих пространств имён, т.е. для элемента типа "ПространствоИменXPath", и для стандартного пространства там локальное имя пусто. Также, мне не удалось добиться проку ни от одного из свойств ДокументDOM, связанных с URI, они все пусты, как ни инициализируй документ.

А вот теперь - внимание! В реализации XPath 1С есть одна решающая тонкость. Дело в том, что, вообще-то, возможно и пространство имён БЕЗ префикса, напрямую xmlns="", оно называется "стандартное" пространство имён. Придумали это ради работы "по умолчанию", но для 1С это не срабатывает. Если у вас в xml-тексте есть хоть одно объявление стандартного пространства, то внутри области его действия (а иногда и вообще по всему тексту) для любых тегов, не имеющих префиксов другого пространства имён, поиск XPath работать не будет.

Проще говоря, логика работы XPath с xml в зависимости от наличия там пространств имён такова:

1. Если нет никаких пространств имён, отлично всё находит при любых запросах.

2. Если есть некие префиксованные пространства имён, отлично всё находит, но не забывайте указывать префиксы как часть имени. Если у вас одинаковые имена (но разные префиксы), пишите их в запросе вместе с префиксом. Если вам нужны имена, у которых префиксов нет (т.е. относящиеся к стандартному пространству имён), то тоже смело пишите их, прямо без префиксов, всё найдёт. Учтите, что в ряде случаев указание в запросе префикса, который не объявлен, приводит к ошибке "неверный запрос".

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

"//*[@Номер]" - вернёт все те элементы, где есть атрибут с именем "Номер";

"//Документ[@Номер]" - не вернёт вам ничего.

4. Если есть не только стандартное пространство имён, но и префиксованное, вообще начинается красота. Так, если в целом заявлено только лишь стандартное пространство имён, а в тексте для конкретного тега есть переопределение:

    <Документ Номер="000000017"/>
    <
Тыц:Документ xmlns:Тыц="http://NowhereNamespace" Номер="000000018"/>
    <
Документ Нумер="000000019"/>

то при попытке найти "//Документ" вы не найдёте ничего; а при попытке "//Тыц:Документ" вы получите что? Не угадали, все три элемента, хотя остальные два без префиксов. А вот если у вас то же пространство имён "Тыц" объявлено в старшем теге, наряду со стандартным, тогда "//Документ" тоже ничего не вернёт, но "//Тыц:Документ" вернёт ровно те элементы, в чьём имени префикс чётко указан. Словом, внутренняя логика происходящего несколько своеобразна.

 

Повторюсь, аргумент конструктора разыменователя вообще никак ни на что не влияет, даже на локально заданные пространства имён. Либо XPath успешно ищет везде, либо не может найти нигде.

Советую просто искать по тексту xml вхождение подстроки "xmlns=" и заменять на любое вменяемое с префиксом, например, на "xmlns:Пыщь=", и поиск по именам элементов сразу заработает.

 

 

Запрос XPath

 

Теперь о том, что такое вообще этот "запрос".

Строковый запрос XPath чуть более процедурный, чем SQL, т.е. больше значимость указания того, как именно получить результат, по сравнению с обычными запросами, где важно "что нужно", но не очень важно "как это получить". Запрос XPath составляется с учётом и пониманием порядка получения нужной выборки. Делается это, в первую очередь, исходя из естественного рассуждения, "как бы мы получали это вручную", т.е. работа механизма легко эмулируется и отлаживается, и легко разбивается на этапы.

Запрос XPath - это строка, разделённая символами "/" на отдельные "шаги" выполнения.

 

На каждом шаге мы находимся в некоем контексте (на некоей позиции в тексте xml, на ветке в дереве DOM), т.е. знаем, откуда ищем - это называется "контекст" и этим в 1С можно управлять по ходу поиска. Это та ветка дерева, куда нас привёл предыдущий шаг, если он был, и откуда начнётся новый шаг поиска.

 

На каждом шаге можно указать, среди чего ищем - это называется "ось". Осей по смыслу немного и они отлично понятны, если представить обычный поиск в дереве значений 1С. Оси бывают такие:

ancestor::  Возвращает множество всех предков (родительских веток до корня).

ancestor-or-self:: - Возвращает множество предков и текущий элемент (то же, плюс текущий).

attribute:: - Возвращает множество атрибутов текущего элемента (т.е. это уже когда известна ветка дерева, получить значения колонок дерева для неё). Можно заменять на "@".

child:: - Возвращает множество потомков на один уровень ниже (все ветки, у которых родитель - текущая). Есть тонкость: обозначение этой оси часто пропускают и можно запутаться, будьте внимательны. Кроме того, начиная "от корня", учтите, что запрос "/child::*" даст вам первый дочерний элемент от корня, т.е. то, что называется "корневой элемент" и получается как ДокументDOM.ЭлементДокумента. А запрос  "child::*" даст вам уже элементы, подчинённые этому корневому, т.е. на 1 уровень глубже.

descendant:: - Возвращает полное множество потомков (вообще все ветки по поддереву текущей). Можно заменять на "//".

descendant-or-self:: - Возвращает полное множество потомков и текущий элемент.

following:: - Возвращает множество, ниже текущего элемента (вглубь и далее по дереву).

following-sibling:: - Возвращает множество элементов на том же уровне, следующих за текущим (все следующие ветки того же уровня, и необязательно от того же родителя, что текущая).

parent:: - Возвращает предка на один уровень назад (родительскую ветку или пустую выборку, если ветка корневая). Можно заменять на "..".

preceding:: - Возвращает множество элементов, исключая множество предков (т.е. только предыдущие ветки, попавшие в выборку).

preceding-sibling:: - Возвращает множество элементов на том же уровне, предшествующих текущему.

self:: - Возвращает текущий элемент. Можно заменять на ".". Это полезно, если надо уже поработать с атрибутами текущего элемента, и быть уверенным, что контекст при этом "не уедет" на другой элемент.

namespace:: - Возвращает множество, имеющее пространство имён (то есть присутствует атрибут xmlns). Только эта ось, пожалуй, хоть как-то позволяет рассматривать пространства имён, объявленные где-либо в рассматриваемых данных. Запрос "namespace::*" даёт выборку из ПространствоИменXPath, причём один элемент есть всегда, даже если никаких пространств имён не объявлено. Правда, дообъявления в конкретных тегах он, похоже, не видит, и от контекста тоже, насколько я понял, не зависит.

 

И наконец, на каждом шаге можно указать, что ищем. Собственно, что нам нужно. Это может быть общий шаблон (всем знакомая звёздочка *), имя конкретного тега (элемента DOM), имя атрибута, и некое уточнение в довесок к этому. Например, "//Документ" найдёт все элементы, объявленные тегом что-то, и сделает это за один раз, т.к. использована ось "//" (искать сразу по всей глубине). А запрос "/Платёжки/*" найдёт все элементы, дочерние для . В простом виде, запрос похож на путь к файлу в файловой системе, но вот написать //МойМузон.mp3 и найти это сразу на диске файл-менеджеры обычно не могли, а XPath позволяет. Можно искать элементы, у которых есть некий атрибут: запрос "//Документ[@Номер]" найдёт все элементы с таким атрибутом, а если у кого-то атрибут называется "Нумер", то, конечно, такое не будет найдено. Можно получить сразу выборку атрибутов, а не элементов, например, запрос "//@*" выдаст вообще все атрибуты всех элементов.

Можно уточнить условие с помощью предиката - это нечто в квадратных скобках, указанное для конкретного шага после основного условия. Можно указать индекс (порядковый №, начиная с 1). Так, "/Платёжки/Документы[2]" вернёт второй из документов в ветке платёжек. Интересно, что это всегда не номер в итоговой общей выборке (это вам не "Первые 10" в SQL), а индекс в своей подветке, т.е. мы получаем запросом "//@*[3]" все атрибуты, идущие третьими в своих элементах. На самостоятельную работу оставляю вам понимание запроса "(х/у)[2]", дерзайте :)

Можно указать в предикате условие, например, "/Платёжки/Документы[@Номер="025"] - и тут полный простор творчества и воображения, т.к. поддерживаются все логические операции, условия можно организовывать по принципу "и", "или", "не". Синтаксис, правда, имеет особенности: "не равно" выглядит как "!=", а знаки "больше" и "меньше" следует писать, как в нотации html. Допустимы также функции, числовые и строковые операции, т.е. "//Документ[starts-with(@Номер,"003")]" вернёт все элементы, где значение атрибута "Номер" начинается с подстроки "003". Функций много. Мне показалась полезной функция "normalize-space", заменяющая все повторные пробелы в строке одиночным и обрезающая крайние левый и правый, а также убирающая всякие спецсимволы (а такие прелести в xml бывают).

 

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

 

Помните, запрос регистрочувствителен! Т.е. не только к написанию условий, но и в процессе компиляции. "//документ" и "//Документ" - разные вещи и разные результаты, "not(условие)" - правильно, а "Not(условие)" - ошибка компиляции. Строковые функции также различают регистр. При этом, функции, аналогичной ВРег/НРег, в XPath нет, можно лишь делать замену символов функцией Translate.

 

Оператор равенства, когда по обе стороны от него элементы/реквизиты, а не литералы, проверяет, имеют ли эти узлы одно и то же значение, а не то, являются ли они одним и тем же узлом. Т.е., говоря о дереве значений, мы сравниваем не две ветки, а два их наполнения значениями. Это может быть использовано при сравнении значений атрибутов. Например, запрос "Сотрудница[@ДевичьяФамилия = @ФамилияПоМужу]" выберет элементы тех сотрудниц, у кого атрибуты имеют одинаковое значение.

 

Итак, запрос XPath - строка вида Шаг1/Шаг2/..../ШагN, где каждый "Шаг" - это указание оси и указание условия (возможно, уточнённое предикатом).

Ещё раз обращаю внимание на важность того, с чего начинается поиск, и что "/Документ" не эквивалентно "Документ". И тут играет роль, помимо запроса, ещё и программное указание 1С, откуда "начинать искать" - речь об узле DOM, который указывается соответствующим методам поиска XPath. Если вы не уверены, где примерно находится искомое, лучше задавать "точкой отсчёта" весь документ DOM, а если хотите ускорить процесс и точно знаете элемент, можно и конкретизировать. Учтите, что переопределение узла поиска в рамках одного сеанса существования выражения XPath в 1С недопустимо, независимо ни от каких факторов. Поэтому, если хотите менять контекст поиска в процессе работы, или создавайте разные объекты выражений, или играйте с навигацией осями и шагами поиска.

Поскольку ось не одна на весь поиск, а своя на каждый шаг, мы можем на каждом шаге менять "направление" поиска - сначала поискать среди всех уровней вложенности, где-то глубоко найти нужную ветку; на втором шаге, исходя из этой ветки, получить предыдущую на том же уровне; на третьем шаге от этой предыдущей получим нужный элемент-родитель гораздо "выше" по уровням, потом два следующих за ним, и так далее. Важно лишь, чтобы каждый не-последний шаг позволял однозначно понять, где мы в данный момент, т.е. результаты промежуточных шагов должны быть счётны и конечны - но необязательно единичны! Это не просто "брожение" по дереву во все стороны, это возможность пойти сразу по нескольким маршрутам сразу и прийти в несколько конечных веток. Эти ветки, либо значения их колонок (атрибуты) и будут результатной выборкой XPath. Например, небольшое "путешествие":

"/descendant::Документ[@Тип="ПКО"]/*[last()-1]/parent::*/following-sibling::*[5]"

- нашли среди документов имеющие тип "ПКО", среди их дочерних получили предпоследние по индексу, от них перешли к их родительским и получили от этих родительских пятые по счёту следующие по уровню ветки.

 

 

Как это работает?

 

Теперь о том, как со всем этим работать в 1С.

Начинается всё с xml-строки, на основе которой надо создать ДокументDOM. Напрямую с xml механизм XPath не работает, потому что коллекция результатов должна быть чем-то более внятным, чем куски текста - и результат является коллекцией элементов DOM (обычно это значения типа ЭлементDOM или АтрибутDOM). Это делается так:

хмл=Новый ЧтениеXML;
хмл.УстановитьСтроку(СтрокаXML);
// или хмл.ОткрытьФайл(ИмяФайлаXML итд)
постр=Новый ПостроительDOM;
докDOM=постр.Прочитать(хмл);

 

Создаём разыменователь пространств имён. Несмотря на всю вышеизложенную теорию, всё равно каким именно вариантом конструктора и с какими аргументами. Самый общий вариант, например:

Разыменователь=Новый РазыменовательПространствИменDOM(док);

 

Далее можно либо быстро искать "по ходу дела", либо создавать отдельный объект для поиска XPath. Быстрый поиск делается с помощью метода документа ВычислитьВыражениеXPath, куда сразу передают все нужные параметры и который сразу возвращает выборку. Поиск с помощью отдельного объекта предназначен, по идее, для получения разных выборок результатов по итогам одного и того же текста запроса и разыменователя, но исходя из разного контекста и типа результата. Возможно, этот способ ещё и планировался 1С как более оптимальный при групповом вызове, т.к. инициализация делается единожды. 

Это делается так:

Выражение=док.СоздатьВыражениеXPath(СокрЛП(ТекстЗапроса),Разыменователь);
Результат=Выражение.Вычислить(ИсходныйУзелПоиска,ТипРезультата);
// заметим, что именно при создании выражения (а не при вычислении) делается
//проверка правильности написания запроса!

По факту, метод Вычислить() вызывается для каждой инициализации единожды, т.к. изменить исходный узел мне не удалось ни при каком типе результата. Опять-таки, теоретически, понятно, что тип результата должен влиять на поведение объекта "Выражение", но на практике ни один тип результата мне не позволил переопределить исходный узел поиска так, чтобы использовать тот же объект повторно.

Тип результата не связан с тем, что результат всегда может быть представлен как выборка. Наряду с выборкой, для нужд XSLT и других смежных механизмов технологии xml, можно представить результат как число, строку или булево значение. По опыту, число - это обычно количество элементов в выборке, строка - это конкатенация значений, которые можно представить строкой (например, для атрибутов их значения выдаёт, но текстовое содержимое для элементов не выдаёт), булево - есть непустой результат или нет (т.е. пуста ли выборка). Кроме того, результат можно представить как одиночный (первый или случайный) элемент выборки - это обычно имеет смысл, если выборка чем-то по сути однородна, или вообще состоит из одного элемента. Также, выборка может представлять собой "снимок" - т.е. данные этой результатной коллекции уже не изменятся, что ни делай с их первоисточником (т.е. хранятся абсолютные значения), или "итератор" - т.е. данные результатной коллекции привязаны к первоисточнику (т.е. хранятся ссылки на значения). Оба варианта выборки бывают упорядоченными и нет, но практической пользы в этом особой не нашёл, т.к. обойти выборку методом ПолучитьСледующий() можно всегда:

Пока Истина Цикл
   
ОбработкаПрерыванияПользователя();
   
Узел=рРезультат.ПолучитьСледующий();
    Если
Узел=Неопределено Тогда Прервать КонецЕсли;
КонецЦикла;

И уже с этим объектом Узел можно делать что угодно, работать с ним как с элементом DOM, считывать и обрабатывать его данные, использовать его свойства и методы. Эти объекты в выборке всегда запоминаются "по значению", их можно хранить во временных коллекциях и данных форм (на сервере), и их существование не связано, по сути, ни с исходным документом DOM, ни с выражением XPath.

 

В заключение отмечу, что для больших текстов xml (более 100 мб) лучше не использовать XPath 1С, т.к. построитель загружает весь документ DOM в оперативную память без кэширования. Можно сперва попробовать искать нужное с помощью MSXML-XPath, а уж потом кусками обрабатывать в 1С. 

 

Успеха, коллеги! И каждый, рассказавший больше, да будет достоин уважения!

p.s. Прилагаю обработку для обычных форм, позволяющую удобно тестировать XPath-запросы (сам на ней тренировался). 

Скачать файлы

Наименование Файл Версия Размер
ОбработкаXPath

.epf 12,81Kb
20.05.14
121
.epf 12,81Kb 121 Скачать

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

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. Поручик 4408 20.05.14 12:41 Сейчас в теме
(0) Мне понравилось. Ещё может пригодиться.
Cyrus842; +1 Ответить
2. Yashazz 3260 20.05.14 14:38 Сейчас в теме
(1) Вообще, что интересно будет сравнить, так это производительность работы через методы самого документа DOM "СоздатьИтераторУзлов" или "СоздатьОбходДерева", и аналогичным по смыслу XPath. Мне пока недосуг.((

Кстати, ещё сегодня вечером ссылочки подкину на хорошие руководства по теме.
5. Поручик 4408 20.05.14 23:04 Сейчас в теме
(2) Это разные сущности. Некоторе время назад XPath мне потребовался для поиска и замены фрагмента в XML-файле и остальные методы не подошли по разным причинам. Более простым в реализации оказался XPath.
6. Yashazz 3260 21.05.14 10:30 Сейчас в теме
(2) Это да. XPath в сочетании с регулярными выражениями - сила.

Из всех подходящих ссылок на примеры, мне понравилось http://www.zvon.org/xxl/XPathTutorial/Output_rus/ и, как ни странно, http://msdn.microsoft.com/ru-ru/library/ms256086(v=vs.110).aspx
3. artbear 1184 20.05.14 15:12 Сейчас в теме
4. Yashazz 3260 20.05.14 17:46 Сейчас в теме
Блин, нашёл корявость. Место "найдёт все элементы, объявленные тегом что-то" должно было выглядеть как "найдёт все элементы, объявленные тегом <Документ>что-то</Документ>. Извините, плз.
7. LexSeIch 206 21.05.14 11:43 Сейчас в теме
Мир этому дому!
Спасибо за статью.
8. Yashazz 3260 21.05.14 12:14 Сейчас в теме
Нашёл ещё "съеденное" при публикации.

Фразу "В общем случае, объявление пространства имён размещается внутри теговых рамок и имеет вид xmlns:=""" правильно читать так: xmlns:Префикс="URI".

Фразу "Предположим, в xml-файле есть тег или атрибут "". Понять его содержимое можно по-разному." правильно читать так: "Предположим, в xml-файле есть тег или атрибут "<Мать>". Понять его содержимое можно по-разному."

Фразу "А запрос "/Платёжки/*" найдёт все элементы, дочерние для ." правильно читать так: "А запрос "/Платёжки/*" найдёт все элементы, дочерние для <Платёжки>."

Извините, эти глюки в результате половину смысла отъедают (((
9. Evil Beaver 6751 21.05.14 17:52 Сейчас в теме
В вашей обработке не заметил способа задать соответствие префиксов пространств имен.
У меня есть аналогичная http://infostart.ru/public/158831/, посмотрите на вторую закладку, там соответствие namespace-ов. Добавьте к себе такую же и у вас будет супер!
10. Yashazz 3260 21.05.14 20:43 Сейчас в теме
(9) Evil Beaver, ага, не ставил такой задачи. Вообще как-то позорно прохлопал вашу публикацию, выражаю респект!
11. Armando 1393 22.05.14 01:16 Сейчас в теме
Не могу разобраться(( Приложил пример файла.

Как должен выглядеть запрос, который должен вернуть элемент "passageState" родителя "item", у которого другой дочерний элемент "itemCode" имеет текстовое значение "Действие1".
У меня даже элементарный запрос /FlowchartContextType не заработал. Подозреваю, что это из-за пространств имен, но не могу сообразить, куда это пространство прикрутить.

update:
Вроде въехал. Надо было для неймспейса http://v8.1c.ru/8.2/data/graphscheme самостоятельно определить префикс при создании разыменователя, например "а". Тогда запрос "/a:FlowchartContextType" работает корректно.
Прикрепленные файлы:
Схема.xml
12. Yashazz 3260 22.05.14 09:09 Сейчас в теме
(11) Это как раз то, о чём я писал - при наличии стандартного пространства имён он не ищет ничего. Самый простой способ - не прикручивать ничего ни к какому разыменователю, и не менять теги, а тупо заменить xmlns="http://v8.1c.ru/8.2/data/graphscheme" на xmlns:a="http://v8.1c.ru/8.2/data/graphscheme", и всё сразу заработает. Ну и вдобавок, у вас открывающий тег по регистрам букв был не такой, как закрывающий, это тоже очень важно.
13. Armando 1393 22.05.14 11:21 Сейчас в теме
(12) спасибо за разъяснение.
14. Armando 1393 22.05.14 23:22 Сейчас в теме
Поразбирался немного в синтаксисе. Кому интересно, запрос для (11) будет выглядеть:
item[itemCode = "Действие1"]/passageState
15. infosoft-v 462 23.05.14 10:59 Сейчас в теме
Добрый день, коллеги.

Всегда с удовольствием читаю такие основательно проработанные статьи. Спасибо. Но к сожалению на практике не разу не приходилось сталкиваться с этими технологиями. Толи у меня такие клиенты, толи я не вижу где их можно и нужно применять.

Поделитесь реальными примерами (истории успеха) где была использована технология X-Path. Какая информация обрабатывалась? И вопрос с подвохом, если бы при внедрении этого реального примера вы бы не владели технологией X-Path то что бы было взамен.

Буду благодарен за любые подробности.

Евгений.
16. Armando 1393 23.05.14 23:08 Сейчас в теме
(15) infosoft-v, в (11) реальная задача. Графическая схема 1С сериализуется в XML. В XML редактируется некое свойство определенной точки маршрута, т.к. штатными средствами 1С это свойство нельзя редактировать, даже прочитать нельзя. Посредством XPath выполняется прямое попадание на нужный узел. До этого редактирование было реализовано перебором узлов. Результат тот же, но выглядит круче)

И еще есть одна задача. Каждый день с помощью 1CDTool из хранилища в XML выгружается таблица versions с комментариями разработчиков. Ищутся коммиты с незаполненным комментарием, и разработчику в почту приходит письмо о необходимости написать комментарий. XPath вполне подойдет для этих целей, т.к. одним махом можно выбрать все нужные узлы.
18. infosoft-v 462 26.05.14 09:06 Сейчас в теме
(16) Armando, Второй пример понятен. А вот по первому примеру вопрос. Были ли у вас заказчики, которым приходилось "на ходу" править графические схемы? Что это была за задача?
19. artbear 1184 27.05.14 17:45 Сейчас в теме
(16) По второй задаче (поиск пустых комментов к коммитам) можешь дать код?
Давно хочу заняться этой задачей.
Жду ответа.
Можно в личку.
21. Magister 133 01.06.14 22:30 Сейчас в теме
(16) Аналогично - прошу код поиска пустых комментариев к коммитам.
Давно думал такое сделать...
17. Armando 1393 24.05.14 09:58 Сейчас в теме
В итоге обошелся баз XPath во втором случае, т.к. у полученных узлов надо еще дочерние элементы вытаскивать. Открыл для себя XSL преобразование. После преобразования получается XML файл только с пустыми коммитами и без лишних подчиненных элементов и прочего мусора. После этого XML преобразуется в XDTO объект, а с ним удобней работать, чем с DOM.
20. zfilin 2167 30.05.14 18:45 Сейчас в теме
Печально, что оно так странно обрабатывает пустые пространства имен.
Об этом же, если я правильно понял, пишут и MSDN - http://msdn.microsoft.com/ru-ru/library/e5t11tzt%28v=vs.110%29.aspx (раздел "Пространство имен по умолчанию")
22. Yashazz 3260 03.06.14 03:26 Сейчас в теме
(20) Да, похоже на то. Может, в других релизах что изменится, я упражнялся на 8.3.4
23. Патриот 259 05.09.14 21:36 Сейчас в теме
(0), + спасибо большое. Не могу выполнить поиск в определённом узле, получается только во всём документе.
	Разыменователь = Новый РазыменовательПространствИменDOM(ЭлементDOM);
	ХПуть = ДокументDOM.СоздатьВыражениеXPath(Запрос, Разыменователь);
	Выборка = ХПуть.Вычислить(ЭлементDOM);
Хочу в приведённом коде, чтобы поиск шёл только в ЭлементDOM, но он всё равно идёт во всём ДокументDOM. Я так понял, вы столкнулись с той же проблемой? Есть решение? Или я просто криво что-то делаю..?
24. monsta 59 20.09.14 00:38 Сейчас в теме
Хорошая статья, интересный инструмент для тестирования выражений XPath, полезен для отладки загрузки данных со страниц HTML как альтернатива HAP Explorer. Была бы интересна возможность увидеть подчиненные элементы для найденных в виде дерева.
25. bionicle 11.10.14 19:04 Сейчас в теме
26. aexeel 72 13.05.15 18:03 Сейчас в теме
Статья неплохая, но оформление ужасно. Шрифты скачут - тяжело читать. Примеры некорректно набраны (например, в "<Summ>99999<Summ>" нет завершающего тега).
27. Yashazz 3260 13.05.15 18:12 Сейчас в теме
(26) aexeel, знаю, но это не ко мне вопрос, а к редактору сообщений ИС. Я ведь авансом извинился за все огрехи, вами перечисленные. По этой причине более статей такого рода не выкладываю, ибо "ниасилил"; а статью по тюнингу веб-сервисов мучил-домучивал, плюнул и прицепил как вложение к публикации... Увы мне.
28. Поручик 4408 13.05.15 23:38 Сейчас в теме
(27) Ога, я как посмотрел на свою статью по передаче чего-то на сайт, так и желание обновить до более современного варианта отпало, толком не родившись.
Оставьте свое сообщение

См. также

Редактор объектов информационной базы 8.3 Промо

Универсальные обработки Обмен через XML v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Универсальная внешняя обработка для редактирования реквизитов и табличных частей объектов информационной базы, редактирование движений документов. Доступ ко всем реквизитам объектов, есть возможность выгрузки и загрузки данных (объекты и движения документов) через XML. Платформа 8.3, управляемые формы. Версия 1.1.0.47 от 08.06.2020

2 стартмани

23.01.2019    24431    257    ROL32    33    

Улучшенная обработка универсального обмена данными в формате XML (УФ)

Универсальные обработки Внешние источники данных Обмен через XML v8 v8::УФ 1cv8.cf Абонемент ($m)

Улучшенная обработка "Универсальный обмен данными" с полноценными возможностями СКД для выборки данных (не только для отборов).

1 стартмани

23.06.2020    1754    20    Lem0n    0    

Загрузка из XML файла ЭДО в документ поступления для конфигураций 1С: Розница 2.2/2.3, Управление торговлей 10.3/11.4

Розничная торговля Обработка документов Документооборот и делопроизводство Обмен через XML v8 УТ10 Розница Розничная и сетевая торговля (FMCG) Россия УУ Абонемент ($m)

Внешние обработки загрузки данных из XML файлов формата ON_NSCHFDOPPRMARK ЭДО в документы поступления 1С Розница версия 2.2.10.19 и выше, Управление торговлей 10.3.52.2 и выше, Управление торговлей 11.4.5.63 и выше

1 стартмани

04.06.2020    3473    67    independ    66    

Выгрузка и загрузка XML для управляемых форм 8.3 (с отбором)

Обмен через XML v8 v8::УФ 1cv8.cf Абонемент ($m)

В работе постоянно приходится разделять в различные базы или объединять несколько организаций в одну базу, долгое время пользовался стандартной обработкой выгрузка-загрузка из UNIREPS 8.2, в режиме обычного приложения, но, к сожалению, для управляемого приложения стандартная обработка из UNIREPS 8.3 (Диск ИТС) не позволяет нормально сделать выгрузку с отбором, поэтому ей никогда не воспользовался. Решил что напишу обработку, которая позволит делать отборы в различных вариациях, кроме того, в обработках из UNIREPS (8.2 и 8.3) существенно отличается процесс загрузки предопределенных, что не всегда удобно при больших объемах данных. Обработка написана на базе UNIREPS 8.3, но есть существенные изменения. Но интерфейс доработан так, чтобы обработка была похожа на старую добрую обработку из UNIREPS 8.2, к которой все так привыкли.

1 стартмани

05.11.2019    7441    135    o.kovalev    14    

Преобразование XML файла в переменную структура, Загрузка в дерево значений

Обмен через XML v8 1cv8.cf Абонемент ($m)

Обработка, демонстрирующая работу процедур и функций по преобразованию XML файла в дерево значений, а также в переменную типа структура.

1 стартмани

14.09.2019    6942    9    vik070777    18    

Документы и Справочники в JSON

Обмен через XML v8 1cv8.cf Абонемент ($m)

Пример выгрузки всех данных Документа или Справочника в JSON

1 стартмани

20.06.2019    10457    14    darkmessiahan    15    

XDTO для чайников

Обмен через XML v8 1cv8.cf Абонемент ($m)

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

1 стартмани

29.05.2019    24078    20    HAMMER_59    39    

Перенос документов из УТ 10.3 в УТ 11.4

Обмен через XML Перенос данных из 1C8 в 1C8 v8 v8::ОУ УТ10 УТ11 УУ Абонемент ($m)

Перенос основных документов из ут 10.3 в ут 11.4. Правила сделаны на основании помощника перехода, поэтому доступен перенос справочников и остатков.

3 стартмани

30.04.2019    7264    117    leobrn    9    

Универсальный обмен данными XML (с гибкими отборами и сохранением вариантов настроек)

Обмен через XML v8 v8::УФ 1cv8.cf Абонемент ($m)

Обработка предназначена для загрузки и выгрузки данных по правилам обмена в любых конфигурациях, реализованных на платформе 1С:Предприятие 8.3. Преимуществом перед типовой обработкой является добавленный функционал: #1. Установка произвольных фильтров на выгружаемые объекты при помощи механизма системы компоновки данных #2. Сохранение различных вариантов настроек (сохраняются правила обмена, фильтры выгрузки, параметры, настройки обработки) - что позволяет гибко настроить в базе-источнике фильтры для выгрузки объектов по различным правилам обмена для различных баз-приемников, сохранить выполненные настройки и в будущем уже пользоваться этими вариантами настроек. Проверялась на 1С:ERP Управление предприятием 2.4.7.141.

1 стартмани

29.04.2019    12476    231    sapervodichka    20    

Выгрузка и загрузка данных XML 8.3 на управляемых формах с отбором и конструктором запроса (в полной мере возможности реализованы для версии 1С:Предприятия 8.3 выше версии 8.3.5)

Обмен через XML Инструментарий разработчика v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

В этой форме всегда не хватало конструктора запросов для удобной выгрузки уникальных элементов по ссылке. Теперь он здесь есть. Как только стало возможным создавать конструктор запроса в управляемых формах, я добавил её в стандартную обработку. Необходимо напомнить, что обработка функционирует полноценно только с версии 8.3.5 1С:Предприятия 8.3.

1 стартмани

24.04.2019    6932    34    AlexandrSmith    1    

Выгрузка - загрузка данных в XML с отбором по организации Промо

Обмен через XML Перенос данных из 1C8 в 1C8 v8 1cv8.cf Абонемент ($m)

Выгрузка - загрузка данных в XML с отбором по организации (УФ)

1 стартмани

25.05.2014    45021    299    buganov    42    

1C + Python + Django Rest Framework + Vue.js. Опыт несложной full-stack разработки

Практика программирования Внешние источники данных Обмен через XML WEB Разработка v8 1cv8.cf Абонемент ($m)

В этой статье мы рассмотрим путь и основные моменты создания небольшого вэб-сервиса, который мы называем "Онлайн Прайс-лист". Выгрузка из 1С, бэкенд, фронтенд, получение заказов в 1С.

1 стартмани

22.04.2019    29585    32    riposte    63    

Перенос данных с использованием XDTO

Обмен через XML v8 Россия Абонемент ($m)

Использование объекта типа "ОбъектXDTO" для переноса данных из одной конфигурации в другую

1 стартмани

21.04.2019    9629    10    axae    10    

Выгрузка и загрузка данных XML с гибкими отборами

Обмен через XML Перенос данных из 1C8 в 1C8 v8 1cv8.cf Абонемент ($m)

Обработка выгрузки и загрузки данных через XML между идентичными конфигурациями с возможностью установки произвольных отборов на выгружаемые объекты.

1 стартмани

07.04.2019    15078    376    sapervodichka    7    

Правила конвертации документов ЗУП 2.5 - ЗУП 3.1 Промо

Обмен через XML Зарплата Перенос данных из 1C8 в 1C8 Зарплата v8 v8::СПР ЗУП2.5 ЗУП3.x Россия БУ Абонемент ($m)

Правила конвертации документов ЗУП 2.5 - ЗУП 3.1. Позволяют вести параллельную работу в базах ЗУП редакций 2,5 и 3.1.

10 стартмани

06.03.2018    36591    151    kostya_whiskas    24    

Перенос данных КА 1.1 -> КА 2

Перенос данных из 1C8 в 1C8 Обмен через XML v8 КА1 КА2 Россия Абонемент ($m)

Перенос данных КА 1.1 => КА 2 с помощью правил обмена данными в формате XML КД 2 (переносятся остатки, документы, справочная информация).

5 стартмани

20.03.2019    14130    244    gudogu    141    

Обработка для выгрузки и загрузки данных XML 8.3. С отбором, предпросмотром данных и сохранением настроек

Обмен через XML Перенос данных из 1C8 в 1C8 v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Обработка Выгрузки и загрузки данных XML 8.3 на управляемых формах. Универсальная обработка "Выгрузка и загрузка данных XML" производит полную или частичную выгрузку данных информационной базы в файл в формате XML. Впоследствии этот файл может быть загружен в информационную базу с помощью этой же обработки. Формат файла выгрузки отличается от формата файла, создаваемого при выгрузке по плану обмена, заголовочной частью. (Описание взято с ИТС)

1 стартмани

07.03.2019    11757    196    Gmix    7    

Правила обмена УПП 1.3 -> БП 3.0 (+ БП КОРП 3.0 + перенос остатков)

Перенос данных из 1C8 в 1C8 Обмен через XML v8 УПП1 КД БП3.0 БУ Абонемент ($m)

Актуальные правила обмена: УПП 1.3.137.1 -> БП 3.0.76.77; УПП 1.3.137.1 -> БП КОРП 3.0.76.77; УПП 1.3.128.1 -> БП 3.0.74.63; УПП 1.3.128.1 -> БП КОРП 3.0.74.63; УПП 1.3.123.3 -> БП 3.0.71.83; УПП 1.3.123.3 -> БП КОРП 3.0.71.83; УПП 1.3.118.1 -> БП 3.0.68.61; УПП 1.3.118.1 -> БП КОРП 3.0.68.61.

1 стартмани

04.03.2019    9607    235    Смешной 1С    42    

Создание в 1С 7.7 XML в формате EnterpriseData (универсальный формат обмена), версия 1.5. Инструкции и примеры переноса данных из устаревшей конфигурации 1С 7.7 в любую современную 1С 8.3, поддерживающую EnterpriseData, через Конвертацию данных 3 Промо

Перенос данных из 1С7.7 в 1C8.X Обмен через XML v7.7 v8 1cv7.md Россия Абонемент ($m)

Воспользоваться современным средством переноса данных "Конвертация данных 3.0.5.3" можно только выгрузив из системы - источника данных XML в формате обмена данными EnterpriseData. В этой публикации можно скачать приемы выгрузки из 1С 7.7 универсального формата обмена для Конвертации данных 3. Выполняем перенос данных из «1С:Предприятие 7.7» в «1С:Предприятие 8.3». Используем Конвертацию данных КД 3.0 из 1c 7.7 --> 1С 8.3. На первой стадии еще не опубликовано иного способа подложить файл для Конвертации данных 3 кроме как сформировать его вручную, постараемся решить данную проблему.

1 стартмани

26.02.2018    36096    51    ksnik    3    

Выгрузка данных из Бухгалтерии ред. 3.0 в Управление небольшой фирмой, ред. 1.6

Обмен через XML Перенос данных из 1C8 в 1C8 v8 УНФ БП3.0 Россия УУ Абонемент ($m)

Выгрузка данных из 1С БП 3.0 в УНФ 1.6. Обработка переносит документы по банку, кассе, движения ТМЦ + справочники контрагентов, номенклатуры и другие связанные справочники. Полный список документов на скриншоте.

1 стартмани

08.02.2019    9210    175    dinarz    52    

1С: Розница/УТ 10.3. ЕГАИС, загрузка акцизных марок в справочник Штрихкоды и Упаковки, регистр Акцизные марки из XML-сообщений входящих ТТН ЕГАИС + Печать акцизных марок

Розничная торговля Обработка справочников Обмен через XML Ценники Розничная торговля v8 Розница Розничная и сетевая торговля (FMCG) Россия Абонемент ($m)

Пакетная загрузка/обновление списка акцизных марок ЕГАИС из входящих ТТН ЕГАИС. Для 1С Розница 2.2.9.ХХХ/2.2.10.ХХХ//2.2.11.ХХХ/2.2.12.ХХХ/Управление торговлей 10.3.49.ХХХХ и выше с возможностью печати

1 стартмани

31.01.2019    17630    138    independ    108    

Ручная выгрузка и загрузка данных через универсальный обмен данными с настройками (расширение, платформа 8.3+)

Обработка документов Обработка справочников Обмен через XML Перенос данных из 1C8 в 1C8 v8 Розница УНФ ERP2 БП3.0 УТ11 КА2 ЗУП3.x Абонемент ($m)

Данное расширение (не требует изменения конфигураций) служит как надстройка для конфигураций, у которых обмен между базами происходит через универсальный формат (EnterpriseData), с использованием стандартных правил конвертации, которые уже есть в конфигурации. Интерфейс адаптирован для простых пользователей, сделан общий отбор по Организации для всех документов, имеется пару настроек для передачи в параметры конвертации, которые расположены в общем модуле конфигураций, а так же есть возможность выбора запуска - в фоне или в текущем сеансе. Теперь не нужно настраивать обмен между базами, для того чтоб просто перенести нужные документы. Подходит точно для УТ 11.4, БП 3.0.67, КА 2.4.5, Розница 2.2.9 (Обновление 1.2 от 02.03.2019)

2 стартмани

19.01.2019    19473    122    hakerxp    10    

Перенос данных КА 1.1.115.1 => БП 3.0.75.104 (перенос остатков, документов, зарплатный блок и справочной информации)

Перенос данных из 1C8 в 1C8 Обмен через XML v8 КА1 БП3.0 Россия Абонемент ($m)

Переносятся: остатки по счетам 01, 02, 10, 20, 41, 60, 62, 71, 97 и их субсчетам; документы; отдельно можно перенести справочники (номенклатура, контрагенты, договоры контрагентов, организации, склады, физические лица, сотрудники).

5 стартмани

22.12.2018    12385    332    gudogu    155    

Универсальный обмен данными в формате XML (2.1.8) 8.3 УФ с отбором и без модальности

Обмен через XML v8 v8::УФ 1cv8.cf Абонемент ($m)

К типовой обработке "Универсальный обмен данными в формате XML" добавлены отбор и возможность работать в конфигурациях с отключенным режимом модальности.

1 стартмани

07.11.2018    20357    276    nicxxx    7    

Редактор движений документа. Сохранение в XML, обмен между базами, замена регистратора. Промо

Обработка документов Универсальные обработки Обмен через XML v8 Абонемент ($m)

Редактор набора записей движений документа. Позволяет сохранить набор записей в XML, в настройки пользователя, прочитать сохраненный XML в другой идентичной базе, заменить регистратор. Можно изменять порядок записей, менять активность, как массово, так и по одной и др. Тонкий клиент, управляемые формы.

1 стартмани

07.09.2016    38992    153    Aphanas    4    

SOAP для чайников

Обмен через XML WEB v8 1cv8.cf Абонемент ($m)

Немножко про SOAP сервис. И пример работы с подключением и получением данных по SOAP за 5 минут.

1 стартмани

05.09.2018    40743    36    dusha0020    18    

003. Почему я больше не люблю "Выгрузку Загрузку XML"

Обмен через XML v8 1cv8.cf Абонемент ($m)

Ниже будет много букаф, но если коротко — можно ускорить этот инструмент в 1000 раз

1 стартмани

03.09.2018    7086    8    Nikola23    8    

Заполнение документа Word без ComОбъект

Практика программирования v8 1cv8.cf Абонемент ($m)

Идея написать публикацию пришла после прочтения очередного рассказа о том, как файл Word заполнялся через COM-объект в клиент-серверном варианте. При этом падал Сервер 1С. Зачем в принципе использовать файлы Word как шаблоны? Ну, допустим, в организации используется некая внутренняя отчетность, выполнения в корпоративном стиле, и переделать ее на привычные табличные документы нет возможности.

1 стартмани

08.07.2018    14466    28    nbeliaev    26    

Загрузка файлов грузовых таможенных деклараций из файлов ФТС формата xml (Альта софт, Сигма софт, Декларант +) Промо

Внешнеэкономическая деятельность (ВЭД) Обмен через XML Внешнеэкономическая деятельность (ВЭД) v8 v8::БУ БП3.0 Россия БУ Абонемент ($m)

Федеральная таможенная служба России давно поддерживает унифицированный формат электронных документов для обмена с информационными системами предприятий. xmlns="urn:customs.ru:Information:ExchangeDocuments:" если что. Структура, утвержденная комиссией Таможенного союза. Осталось только сделать загрузку в 1С из этого формата. На выходе - два документа ГТД по импорту и Поступление (акты, накладные)

5 стартмани

09.08.2016    43643    176    capitan    298    

Простой эмулятор вызова веб-сервиса 1С с просмотром результата

Обмен через XML WEB v8 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

24.04.2018    11612    19    anvolkov1cbit    9    

Правила переноса документов из ЗУП 2.5 в ЗУП 3.1

Обмен через XML Перенос данных из 1C8 в 1C8 Зарплата Управление персоналом (HRM) Зарплата Управление персоналом (HRM) v8 v8::СПР ЗУП2.5 ЗУП3.x Россия БУ Абонемент ($m)

Перенос документов, справочников и планов видов расчета из конфигурации 1С ЗУП 2.5 в ЗУП 3.1.

3 стартмани

28.03.2018    26784    408    Cobranet123    64    

Организация обмена с базой филиала (розничного магазина) в торговой сети через XML (универсальный обмен)

Обмен через XML Перенос данных из 1C8 в 1C8 Розничная торговля Розничная торговля v8 КД УТ11 Розничная и сетевая торговля (FMCG) Абонемент ($m)

В статье по шагам рассматривается создание обмена между центральной базой и базами филиалов на базе конфигурации УТ 11. Для решения поставленной задачи было решено не использовать РИБ, т.к. требуется односторонний обмен ограниченным набором данных, к тому же по определенным условиям. Обмен реализован на основе типовой синхронизации на основе универсального обмена в формате EnterpriseData. Данная публикация может быть полезна внедренцам, которые работают с торговыми сетями, в том числе по модели франчайзинга.

1 стартмани

26.02.2018    35331    13    Kutuzov    18    

Усовершенствованный редактор правил обмена КД2 Промо

Обмен через XML v8 КД Абонемент ($m)

РПО-2М – мощный редактор правил обмена для КД 2. Позволяет ускорить свою разработку и ознакомление/доработку чужих правил обмена. Превосходство над встроенным редактором достигается за счет удобного функционального интерфейса, применения шаблонизации кода правил, богатого инструментария, упрощающего разработку, и интеграции с Инструментами Разработчика.

3 стартмани

16.09.2015    34436    184    Lem0n    40    

Пример заполнения/создания файла XML из XSD схемы, используя XDTO

Обмен через XML WEB v8 1cv8.cf Абонемент ($m)

Добрый день, коллеги! Наконец-то дошли руки написать сию статью. Хочу поделиться своим опытом по разбору xsd схемы используя Фабрику XDTO, а также связанным с этим XML файлом. Думаю, наверняка кому-то понадобится.

1 стартмани

21.12.2017    42940    53    sandybaev    23    

Правила переноса документов из ЗУП 2.5 в ЗУП 3.1

Перенос данных из 1C8 в 1C8 Обмен через XML Зарплата Управление персоналом (HRM) Зарплата Управление персоналом (HRM) v8 v8::СПР ЗУП3.x Россия БУ Абонемент ($m)

Перенос документов из ЗУП 2.5 в ЗУП 3.1 - позволяет снизить объем работ при опытной эксплуатации ЗУП 3.1 параллельно с ЗУП 2.5.

1 стартмани

04.12.2017    30984    494    AntonH851    38    

1С:Интеграция ЕГАИС + Инвентаризация на ТСД Промо

Обработка справочников Обмен через XML Оптовая торговля Оптовая торговля v8 1cv8.cf Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Абонемент ($m)

Интеграция ЕГАИС модуля для 1С: 8.3 + модуль WMS контура для инвентаризации алкогольных марок на ТСД.

1 стартмани

10.12.2015    35059    27    JetBrain    5    

Механизмы и транспорт обмена данными. Пример создания в КД 2.1 правил обмена данными ЗУП 2.5 -> БП 3.0. Выгрузка ведомостей и банковских счетов. Передача параметров обмена из Источника в Приемник. ВыгрузитьПоПравилу(). ПередатьОдинПараметрВПриемник().

Обмен через XML Перенос данных из 1C8 в 1C8 v8 ЗУП2.5 КД БП3.0 Абонемент ($m)

В статье рассказываю: 1) о механизмах и транспорте обмена данными, где одной из сторон обмена выступает конфигурация на базе 1С, и о том, какой транспорт и в каких случаях лучше использовать 2) о решении задачи выгрузки данных документа «Зарплата к выплате организаций» (с выгрузкой банковский счетов физ лиц документа) из ЗУП 2.5.123.1 (далее Источник) в БП КОРП 3.0.52.39 (далее Приемник) путем создания правил обмена данными с использованием конфигурации «Конвертация данных» (далее просто КД) ред. 2.1.8.2. для (далее ЗкВО) 3) о тестирование полученных правил обмена данными.

1 стартмани

03.11.2017    31084    5    RailMen    5    

XML JSON преобразователь

Обмен через XML v8 1cv8.cf Россия Абонемент ($m)

Обработка демонстрирует возможность программного преобразования XML в JSON и обратно без подключения внешних модулей.

1 стартмани

11.10.2017    15204    47    m-rv    4    

Правила обмена ЗУП 3.1 - БП 2.0 и ЗУП 3.1 - УПП 1.3 (отражение, ведомости и справочники)

Перенос данных из 1C8 в 1C8 Обмен через XML Зарплата Управление персоналом (HRM) Зарплата Управление персоналом (HRM) v8 v8::БУ v8::СПР БП2.0 БП3.0 ЗУП3.x Россия БУ Абонемент ($m)

Правила обмена для выгрузки документов "Отражение зарплаты в бухучете", "Ведомость в банк", "Ведомость в кассу", справочников "Сотрудники" и "Физические лица"

1 стартмани

01.08.2017    75260    1543    forseil    208    

Простой универсальный обмен между отличающимися конфигурациями. Код открыт! (СериализаторXDTO,ПостроительDOM) +примеры использования Промо

Обмен через XML v8 1cv8.cf Абонемент ($m)

Очень удобная обработка всего с двумя "командами": Выгрузить(Что, Куда) Загрузить(Откуда)

1 стартмани

02.09.2015    22524    100    Mi4man    15    

«Горыныч - то НЕ НАСТОЯЩИЙ!» … или О Конвертации Данных ред.3 (КД 3) и обменах в универсальном формате Enterprise Data… доступным русско-народным языком

Внешние источники данных Обмен через XML Перенос данных из 1C8 в 1C8 v8 КД Абонемент ($m)

Тем, кто хочет быстро разобраться с темой инструмента Конвертация данных 3.0 и технологией обмена по новому формату 1С, активно применяемому во всех новых конфигурациях от 1С на БСП, расширяющем возможности интеграции, пакет полезных материалов.

1 стартмани

13.06.2017    19797    140    Davlad_A    16    

Навигатор по файлу обмена Промо

Универсальные обработки Обмен через XML v8 1cv8.cf Абонемент ($m)

Просмотр содержимого XML-файла выгрузки данных

5 стартмани

02.04.2014    28850    35    RocKeR_13    22