XDTO - это просто

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

Разработка - Математика и алгоритмы

С появлением платформы 8.1 фирма “1С” представила механизм, носящий интригующее название XML Data Transfer Objects или, если коротко - XDTO. По традиции, документирование механизма составлял тот, кто хорошо разбирался в вопросе, а стало быть опустил “и так понятные” с его точки зрения моменты.
Целью данной статьи (или цикла статей, как получится) стало желание поделиться накопленным опытом. Мне кажется, многие неочевидные вещи в механизме XDTO необходимо осветить получше.

XDTO - это просто

 

upd 09.01.2012. Это первая статья про XDTO. Продолжение здесь и здесь.

Введение

С появлением платформы 8.1 фирма “1С” представила механизм, носящий интригующее название XML Data Transfer Objects или, если коротко - XDTO. По традиции, документирование механизма составлял тот, кто хорошо разбирался в вопросе, а стало быть опустил “и так понятные” с его точки зрения моменты.

В результате, не всегда можно разобраться - что за зверь такой - XDTO. Кроме того, даже разобравшись немного и осмелев, специалисты сталкиваются с проблемами, когда начинают использовать его более активно и в более сложных сценариях. За несколько лет плотной работы с XDTO я набил массу шишек и, как мне кажется, достаточно близко подошел к постижению дао :). С моей подачи в механизме XDTO даже было исправлено несколько серьезных ошибок, нарушавших стандарты XML.

Целью данной статьи (или цикла статей, как получится) стало желание поделиться накопленным опытом. Мне кажется, многие неочевидные вещи в механизме XDTO необходимо осветить получше, чем это делает стандартная документация.

Надеюсь, что данный материал поможет специалистам, начинающим знакомство с XDTO избежать моих ошибок, а значит более эффективно решить поставленные задачи.

Кроме того, я часто сталкиваюсь с тем, что уже достаточно опытные специалисты в сфере “1С” довольно слабо знают язык XML. Как правило, в повседневной деятельности им хватает базовых знаний синтаксиса, и погружение в более сложные моменты им не нужно. Поэтому, в данной статье будут затронуты темы не только напрямую касающиеся XDTO, но и обсуждаются некоторые синтаксические моменты XML-стандартов.

Что такое XDTO

Для начала, давайте определимся - что же это за зверь такой - XDTO?

Как я уже говорил, это сокращение от XML Data Transfer Objects, что по-русски означает “XML-объекты переноса данных”.

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

Зачем оно надо?

Мне не ведомы истинные мотивы создания целой подсистемы, но кажется, что основная цель - это создание простой объектной модели доступа к XML документам. Причем, под объектной моделью должно пониматься не абстрактное дерево узлов XML, а именно прикладные классы данных, полезные с точки зрения бизнес-логики..

И вот эти объекты должны участвовать в таких механизмах взаимодействия, где нужно передать с машины на машину удобный для использования объект. Как пример - объекты XDTO используются для обмена с веб-сервисами.

Что в итоге?

XDTO - это механизм, разработанный фирмой “1С” для обмена данными с другими программными системами посредством XML, позволяющий на уровне языка 1С оперировать не узлами XML, а прикладными понятиями “Сотрудник”, “Счет” и привычными встроенными типами (“ТаблицаЗначений”, “СправочникСсылка” и т.п.).

Начнем знакомство

Для начала, давайте обратимся к концепции XML документа, как такового. Как правило, документ содержит некоторую структурированную информацию, которую можно условно представить в виде набора объектов. Например, документ “СписокСотрудников.xml” содержит узел “Сотрудники”, внутри которого имеются элементы с типом “Сотрудник”.

xml fragment

Для того, чтобы корректно прочитать данный документ, мы должны знать структуру того, как в документе расположены данные. Для этого существует такая вещь, как Схема XML. Схема XML представляет собой документ, в котором описаны все типы, которые могут встретиться в документе. Строго говоря, это не совсем точное определение схемы, но для XDTO его вполне достаточно.

Схема однозначно указывает, какие узлы и в каком порядке должны располагаться в документе. Кроме того, она представляет наборы узлов в виде функциональных типов данных, таких, как “Сотрудник”. Что еще более приятно - типы могут наследоваться и составлять иерархии типов.

А теперь, вспомним, зачем нужен XDTO - представление XML в виде объектов бизнес-логики. Если у нас будет набор бизнес-объектов, которые нужно передать по сети в виде XML, то мы можем создать XML-документ с помощью стандартного средства записи - объекта ЗаписьXML и поэлементно создать структуру, постаравшись ничего не напутать в структуре документа. Либо, мы можем создать XML-документ c помощью XDTO, используя более простой код:

 

Сотрудник.ФИО = “Иванов Иван Иванович”;
Сотрудники.Добавить(Сотрудник);

 

Низкоуровневые вопросы формирования XML и размещения его в документе возьмет на себя платформа.

Здесь я заранее хочу попросить прощения за такое длинное вступление у тех, кто хорошо знаком с XML и с XDTO. Мне хочется, чтобы рассказ шел от самых начал, т.к. я не могу заранее предсказать квалификацию читателя. Если все вышесказанное вам и так известно, пролистайте ниже :).

Вернемся к приведенному примеру кода. Видно, что есть некий объект сотрудник со свойством “ФИО”, которому присваивается строка. Далее этот сотрудник помещается в коллекцию. После записи коллекции, мы получим готовый XML документ, что явно проще, чем ручное создание элементов и атрибутов с помощью ЗаписьXML.

Закономерный вопрос - как платформа узнает о том, какие свойства есть у сотрудника и как его записывать в XML-файл? Ответ только один - из схемы XML документа. Платформа знает какие свойства могут быть у объекта, потому, что этот объект описан в схеме будущего документа. Закономерный вывод - XDTO без схемы документа работать не может. Система типов обязательно должна быть известна, только тогда мы сможем создавать объекты этих типов, присваивать им свойства, записывать и читать их из XML потока.

Теперь все вместе: Платформа позволяет оперировать фрагментами XML-документов, как обыкновенными объектами, к которым можно, например, обращаться “через точку”. При этом, сами объекты описываются в XML-схеме, и именно из нее платформа узнает - как выглядит тот или иной объект. То, как выглядит объект, называется типом. То есть, чтобы получить объект мы должны знать его тип.

Типы, объекты и фабрики

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

На свете существует огромное количество программистов, которые создают те или иные XML-документы. При этом, очень часто они оперируют одинаковыми понятиями, например “Дата”, “Цена” и “Сотрудник”. Если вдруг две системы имен (созданных разными программистами) встретятся в рамках одной информационной системы, то произойдет конфликт имен.

Например, Вася создал тип данных “Сотрудник” со свойством “ФИО” и Петя создал объект "Сотрудник" со свойствами “Фамилия”, “Имя”, “Отчество” и “ИНН”. Объекты разные, а имя типа одно, возникает путаница. Чтобы этого избежать, используются пространства имен. Все имена должны быть уникальны в рамках одного пространства имен. Имена в разных пространствах запросто могут повторять друг друга.

По традиции (и по многим другим соображениям), пространства именуются в виде URL-подобных строк. Например, “http://vasya.org/xml/sotrudniki”. Причем, это не ссылка в сети, это просто строка-идентификатор. Документы пестрят этими “ссылками” и ,сталкиваясь с ними, начинающий специалист впадает в ступор - “что это за адреса, что по ним расположено, а что, если нет интернета...” Так вот, это не адреса, это уникальные идентификаторы пространств имен. Строка может быть любой.

Теперь, все типы, которые изобретет Вася, он поместит в свое пространство имен и творчество Пети ему не страшно. Всегда можно отличить одного “Сотрудника” от другого.

Типы данных

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

Модель данных и Фабрика XDTO

При построении системы типов XDTO используется понятие Модели данных. Модель представляет собой совокупность всех типов, которые можно записать в один XML документ. С понятием модели неразрывно связано понятие Фабрики XDTOФабрика, это объект платформы 1С:Предприятие, который позволяет создавать те самые объекты “Сотрудник”, к которым можно обращаться “через точку”. Именно фабрика создает объект встроенного языка и наделяет его свойствами “ФИО” и “ИНН”, позволяя виртуальной машине обращаться к этим свойствам. Перечень возможных типов и их свойств фабрика берет из модели данных, которая в конечном итоге представляет собой просто набор схем XML.

Что в итоге?

Представьте, что у нас есть большая система взаимосвязанных типов. Каждый тип входит в определенный логический блок типов, а блоки для удобства разнесены по разным схемам XML. Например, у нас есть блок “Коллекции”, представляющий абстрактные списки объектов и есть блок “Сотрудники”, представляющий типы объектов, описывающие сотрудников, их зарплату, должности и т.п.

Нам нужно выгрузить и передать куда-то XML документ со списком сотрудников.

Для этого, нам удобно взять тип “Список” из схемы списков и наполнить его “Сотрудниками” из схемы “Сотрудники”. В результате, наша модель типов включает в себя 2 схемы (2 пакета) типов - “Списки” и “Сотрудники”. На основании данной модели типов мы можем создать Фабрику, которая будет “строить” объекты, к которым мы сможем обращаться из встроенного языка.

Меньше слов, ближе к делу

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

Для разработки схем я использую Liquid XML Studio. Отличный инструмент позволяющий построить схему посредством тыкания мышкой. Я пользуюсь версией 2008, она бесплатная, но слегка глючная. Более старшие версии мощны, но за деньги.

Liquid XML Studio позволяет строить схемы в виде вот-таких картинок:

 Liquid

 

Создаваемая схема описывает типы данных, которые мы можем использовать. Обязательно задается пространство имен, которому наши типы будут принадлежать. Сами типы подразделяются на простые и составные (simple и complex). Соответственно, простые типы, это те, которые можно представить одним значением - строка, дата, булево и т.п. Составные объекты - те, которые содержат несколько значений, а стало быть одной строчкой представлены быть не могут.

В конфигураторе, каждая схема XML может быть представлена в виде ПакетаXDTO, а вся совокупность типов, имеющихся в конфигурации составляет Модель данных конфигурации. Соответственно, все типы Модели (включая созданные нами Пакеты) могут создаваться глобальным объектом ФабрикаXDTO.

Простые типы XML представляются в виде объектов языка 1С с типом “ЗначениеXDTO”. Составные типы XML представляются в виде объектов языка 1С с типом “ОбъектXDTO”.

Подобно тому, как в конфигурации есть метаданные, предоставляющие информацию о типах, в XDTO тоже есть подобные объекты - ТипЗначенияXDTO и ТипОбъектаXDTO. Эти объекты позволяют узнать информацию о типе данных - размер, число знаков после запятой, неотрицательность и т.п.

Что со всем этим делать?

Давайте еще раз подведем краткий итог и воспользуемся полученной информацией. Итак, у нас есть 2 пакета типов (2 схемы XML). Первая - разные коллекции, списки, соответствия и т.п. Вторая - сотрудники. Нам нужно сформировать список сотрудников.

 

1. Предположим, что пакет коллекций имеет пространство имен “http://super-puper/collections”, а пакет сотрудников - “http://super-puper/employees”.

2. В конфигураторе раскрываем ветку ПакетыXDTO и в контекстном меню выбираем “Импорт схемы XML”. Указываем файлы со схемами.

3. В ветке пакетов появятся наши пакеты. Зададим им осмысленные имена (любые)

4. Теперь конфигурация “знает” о наших типах данных и они включены в модель типов конфигурации

 

Применение в коде

Как уже говорилось, для создания объектов XDTO применяется ФабрикаXDTO. Чтобы создать объект, фабрика должна знать его тип. Делается это следующим образом:

 

// Создается объект языка 1С с типом “ТипОбъектаXDTO”
// Первый параметр пространство имен, второй - имя типа в пространстве имен.
ТипОбъектаСписок = ФабрикаXDTO.Тип(“http://super-puper/collections”, “Список”);

// Создаем объект списка
ОбъектСписок = ФабрикаXDTO.Создать(ТипОбъектаСписок);

// обход сотрудников для выгрузки
Пока Выборка.Следующий() Цикл
ТипОбъектаСотрудник = ФабрикаXDTO.Тип(“http://super-puper/employees”, “Сотрудник”);
Сотрудник = ФабрикаXDTO.Создать(ТипОбъектаСотрудник);

// Свойство “ФИО” объявлено в схеме
Сотрудник.ФИО = Выборка.Наименование;

// Добавление “Сотрудников” в “Список”
ОбъектСписок.Добавить(Сотрудник);

КонецЦикла;

// А теперь, запись в поток XML

Запись = Новый ЗаписьXML;
Запись.УстановитьСтроку(); // запись в строку

ФабрикаXDTO.Записать(Запись, ОбъектСписок);
ДанныеXML = Запись.Закрыть(); // документ готов!

 

Резюме

 

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

Далее мы рассмотрим программное создание модели типов, собственных фабрик, а также нюансы работы с объектами XDTO.

Если данная тема вам интересна, отпишитесь в комментариях, продолжение обязательно последует.

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

Вознаграждение за ответ
Показать полностью
Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. Yashazz 3260 24.12.12 18:02 Сейчас в теме
Предлагаю в статье осветить разницу между ФабрикойXDTO как свойством глобального контекста (т.е. который синглтон) и объектом, созданным через конструктор "Новый ФабрикаXDTO". Разница есть и весьма немалая.
POWone; anchovy; ateplouhov123; +3 Ответить
6. ZLENKO 26.12.12 09:56 Сейчас в теме
(1) Yashazz, Я делал обмен между различными по структуре базами XDTO через свойство глобального контекста - намучился прилично пока придумал как сделать взаимосвязь между схемами двух баз. Когда уже сделал и начал мучить разработчиков в 1С по поводу ошибки передачит регистра сведений и AnyType - они сказали что правильно было бы создавать объекты из фабрики и заполнять их свойствами и потом уже их выгружать в XML.
2. Oleg_nsk 237 26.12.12 08:09 Сейчас в теме
За любую статью по столь нужной теме всегда плюс
Восьмой; nvk1234; user769249; kuliev-emil; Spade; vi_maestro; Vitaly1C8; адуырщдв; Alex_grem; +9 Ответить
3. bogdan_sukonnov 57 26.12.12 09:19 Сейчас в теме
Автор молодец! Но! Если не будет продолжения - это будет подлость. Ждем...
Elisey654321; user769249; DmitrySinichnikov; vi_maestro; Irmo; +5 Ответить
4. comol 4321 26.12.12 09:22 Сейчас в теме
"+" за "Liquid XML Studio", лучше бы ему статью и посвятил... XDTO уже "избитая" тема.
5. cleaner_it 240 26.12.12 09:51 Сейчас в теме
(0) Автор молодец!
juliia1992; vi_maestro; +2 Ответить
7. RomanUzmov 40 26.12.12 10:06 Сейчас в теме
Полезная статья. Ждём продолжения!
juliia1992; user777757; +2 Ответить
8. SPID 26.12.12 10:28 Сейчас в теме
Начало хорошее, ждем продолжения.
Хоть тема XDTO избитая, но найти хорошего, полного, детального описания со всеми возможностями довольно сложно.
juliia1992; user777757; savauu; Трактор; +4 Ответить
102. makfromkz 9 16.01.13 06:41 Сейчас в теме
Набил код автора и в строке:
	// Создаем объект списка
	ОбъектСписок = ФабрикаXDTO.Создать(ТипОбъектаСписок);

получил ошибку времени выполнения:
{Форма.Форма.Форма(8)}: Ошибка при вызове метода контекста (Создать)
ОбъектСписок = ФабрикаXDTO.Создать(ТипОбъектаСписок);
по причине:
Несоответствие типов (параметр номер '1')


Что это значит?
110. echo77 1156 27.03.13 15:03 Сейчас в теме
Я тоже набил код из примера и такая же ошибка как в (102)
130. didkovskij 44 10.11.15 08:34 Сейчас в теме
(102) makfromkz, (110) только начал разбираться. Такая ошибка возникает если код выполняется на клиенте, например. Пространства имен, которые мы описываем в разделе "XDTO-пакеты", доступны только на сервере.
174. POWone 05.02.20 13:48 Сейчас в теме
(102) У тебя ТипОбъектаСписок=Неопределено. Похоже что ТипОбъектаСписок не создался(
9. vbuots 20 26.12.12 10:37 Сейчас в теме
Давно думал разобраться с XDTO, Ваша статья доступно ответила мне на многие вопросы. Спасибо!
user777757; +1 Ответить
10. y22-k 231 26.12.12 10:49 Сейчас в теме
Спасибо большое теперь хоть стал понимать что это и для чего это нужно, ждем с нетерпением продолжения
POWone; user777757; +2 Ответить
11. leonidkorolev 103 26.12.12 10:49 Сейчас в теме
Без вводной про схемы и xml трудно даётся статья. Мне кажется можно вообще отдельную статью писать про схемы и xml. Спасибо. Плюсую.
POWone; Gang031; user777757; Gavri1a; blich; +5 Ответить
12. sstar90 26.12.12 11:22 Сейчас в теме
Плюс. жду продолжения
user777757; +1 Ответить
13. DoctorRoza 26.12.12 11:24 Сейчас в теме
Однозначно плюс автору за поднятую тему. Много еще темных пятен в недрах дерева метаданных конфигуратора. Жду продолжения! :)
juliia1992; user777757; +2 Ответить
14. DitriX 1810 26.12.12 12:32 Сейчас в теме
Весьма интригующе :) Есть правда пару спорных моментов, но посмотрим что будет дальше, сделаем поправку на то, что это первая часть.
16. Evil Beaver 6750 26.12.12 13:11 Сейчас в теме
Спасибо за комментарии, вдохновляет продолжить :)

(14) DitriX, Если не секрет, какие моменты спорные? можем поспорить ;)
Трактор; +1 Ответить
18. DitriX 1810 26.12.12 14:34 Сейчас в теме
(16) ну вот по сути в (15) кусок затронули, вы просто говорите о хдто, как о панацее, хотя к примеру можно просто сериализовать дерево, тз или даже табличный документ. И не мучаясь перегнать данные.
Т.е. в вашем примере было бы удобней получить запросом ТЗ по сотрудникам и сериализовать ТЗ в 1 строку получить хмл, который потом на приемнике можно десериализовать в ТЗ и работать уже с ТЗ.

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

Я бы хотел например увидеть вводную часть о сравнении.

Т.е. например есть задача - надо сделать вот так, это можно сделать так, так и вот так.

Если мы задачу усложним до вот такого уровня, то первый метод не подойдет, а второй и третий в самый раз.
А вот уж если вы хотите строить многоуровневое древо с не пересекающимися типами элементов в ветках, то используйте хдто.

Если вы хотите работать с веб сервисами и передавать данные сереализованные через хдто, то должны быть готовы что передаваться будет оно не в формате хмл, а в формате json-подобном. Если хотите формат хмл, то надо делать по другому.

Кроме того, там же есть ньюансы, при создании списков, там обязательно в хдто у элемента, который характеризует другой элемент (т.е. является, по сути, строкой в ТЗ) надо ставить максимальное количество "-1", ибо нифига не работает. Почему так, я если честно так и не разобрался, и принял за аксиому :)

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

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

З.Ы. А вообще круто - я смотрю 1С мир начинает качественно развиваться, вот уже люди с многолетним опытом в узких сферах - делятся своим опытом, а это самое ценное. ИМХО
POWone; Vlad87; narutouzumaki_13; NittenRenegade; jif; Evil Beaver; v3132; invertercant; frc; +9 Ответить
19. Evil Beaver 6750 26.12.12 15:15 Сейчас в теме
(18) DitriX, Смысл понятен. Статья самая первая и самая вводная. Хочется сделать постепенный переход к конкретным примерам.
Если не возражаете, отвечу по интересным мне пунктам:

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

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

Т.е. например есть задача - надо сделать вот так, это можно сделать так, так и вот так.
Если мы задачу усложним до вот такого уровня, то первый метод не подойдет, а второй и третий в самый раз.
А вот уж если вы хотите строить многоуровневое древо с не пересекающимися типами элементов в ветках, то используйте хдто


Ну это целая отдельная тема, нужно исследование, подбор примеров. Мне кажется Вы лучше меня такую напишете.

Кроме того, там же есть ньюансы, при создании списков, там обязательно в хдто у элемента, который характеризует другой элемент


Ага, нюансов куча. Именно обо всех нюансах (какие вспомню) и хочется рассказать.
20. DitriX 1810 26.12.12 15:34 Сейчас в теме
(19)
Наоборот, я говорю, что набил кучу шишек, и что документирование туманное. Механизм интересный, но не панацея ни разу.

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

Ну это целая отдельная тема, нужно исследование, подбор примеров. Мне кажется Вы лучше меня такую напишете.

Ну так это же самое интересно. А лучше Вас я точно не напишу, ибо профан в этой теме. Т.е. я в нее тыкал, но не более :)

Ага, нюансов куча. Именно обо всех нюансах (какие вспомню) и хочется рассказать.

Ну вот тут Вы сами говорите о ньюансах, и что будете их описывать. Вот я и предложил - выбрать любой реальный пример из жизни. Я так понял примеры будут из Вашей жизни:) Это тоже хорошо, но там все 100% будет правильно :)

Вообщем увидим.
45. frc 03.01.13 01:20 Сейчас в теме
(18) DitriX,
я смотрю 1С мир начинает качественно развиваться, вот уже люди с многолетним опытом в узких сферах - делятся своим опытом

а я вот вижу переписку куцей справки плюс выдержки пары других статей.
Автор, если XDTO - это для тебя просто, объясни работу фабрики XDTO.
Не перечисли свойства и методы, а объясни, по какому принципу там типизация происходит.
Т.е. - как оно работает на самом деле. Слабо, автор, которому "XDTO в 1С - это просто"?
47. Evil Beaver 6750 03.01.13 10:24 Сейчас в теме
(45) frc, Терпение, мой друг, все будет. Смотри: многим даже описанное не было известно. Чтобы не толочь воду в ступе, скажи, будь добр, что именно про типизацию ты хотел узнать? Могу ответить в личку, если вопрос срочный. В виде статьи будет позже. И насчет перепостов - статья на 100% моя. Каждое слово. Доказывать не собираюсь, если хочешь, можешь сам подоказывать - откуда и что я перепостил. Но более полезным, все-таки, будет, если мы вместе тут обозначим вопросы, которых нигде нет, и которые действительно НЕОБХОДИМО описать и рассказать.
Drivingblind; Maero; POWone; user777757; Гриффин; Windsor77; extel; zoytsa; +8 Ответить
56. frc 03.01.13 16:57 Сейчас в теме
(47)
многим даже описанное не было известно

наверное, им было лень поискать в инете или посмотреть справку? :)
что именно про типизацию ты хотел узнать?

непосредственно механизм работы, будь добр, озвучь :)
А то заявлено и распиарено одно, а работает как обычно - почти никак (в смысле - никакой настоящей типизации и автораспознования объектов, не говоря уже об общей "стандартизации схем по умолчанию" таких обменов между подобными интерфейсами коммерческих систем).
И насчет перепостов - статья на 100% моя

согласен, хорошо, пересказ других статей и справки. Свой-то труд - где? :)
если мы вместе тут обозначим вопросы

они давно все на поверхности - если ты действительно занимался этим:
- зачем прикручен XDTO в 1С.
- как и в каких случаях обмена он наиболее оптимален.
Случай передачи/обмена номенклатуры - абсолютно не оптимально ). Даже при обмене документами не особо оптимально - если перед этим была синхронизация номенклатуры и прочих ключевых справочников. Ну, и? :)
- какие жесткие ограничения существуют при обмене XDTO (начиная от наличия загруженным схем и заканчивая все тем же основополагающим вопросом "а как же работает эта пресловутая фабрика XDTO при чтении/десериализации").
- конкретные примеры (не один! один - это в музей или на плакат) использования с разбором "почему так решил" с последующим подробным разбором "шагов реализации".
57. Evil Beaver 6750 03.01.13 17:06 Сейчас в теме
(56) frc,
зачем прикручен XDTO в 1С.


Если бы я его разрабатывал, то дал бы точный ответ :) Мое предположение - упрощение работы с XML, абстрагирование от низкоуровневых понятий "Узлов" и оперирование объектами бизнес логики.

как и в каких случаях обмена он наиболее оптимален.
Случай передачи/обмена номенклатуры - абсолютно не оптимально ). Даже при обмене документами не особо оптимально


Я больше скажу - он вообще не оптимален. Вернее, он является надстройкой над средствами работы с XML, а значит - по определению не может работать быстрее, чем тот же DOM. Он повышает удобство, но не повышает скорость выполнения.

Свой-то труд - где? :)

Ах да, опять наезды... Свой труд - здесь, в статье. Полностью изложил, как я вижу подсистему, начиная от азов. Да, кто-то в сети наверняка делал что-то подобное, и что? Он тоже сделал эту работу. Я уже предложил тебе привести пример - откуда и что я стырил. Не привел? Извини, тогда это пустой трёп.

какие жесткие ограничения существуют при обмене XDTO (начиная от наличия загруженным схем и заканчивая все тем же основополагающим вопросом "а как же работает эта пресловутая фабрика XDTO при чтении/десериализации")


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

Во-вторых, поясни, будь добр свой вопрос "а как же работает эта пресловутая фабрика XDTO при чтении/десериализации". Что именно непонятно? Фабрика вообще не занимается сериализацией/десериализацией. Принцип работы объяснять в комментах к статье - слишком долго, тут тянет на отдельную заметку. поэтому, еще раз повторяю предложение - конкретный вопрос "почему она работает так, а не иначе" задать в личку, с примером кода.

конкретные примеры (не один! один - это в музей или на плакат) использования с разбором "почему так решил" с последующим подробным разбором "шагов реализации"


С удовольствием! Выкатывай пример кода и проблему - "вот это не работает, так, как я хочу - почему?".

Без конкретных вопросов и прикладных задач дальнейшее обсуждение не имеет смысла, ибо превращается в необоснованные наезды и обвинения в некомпетентности. Ты не прав, дружище ;)

Свой-то труд - где? :)

Ах да, опять наезды... Свой труд - здесь, в статье. XDTO - один на всех, кто-то в сети наверняка делал похожую работу, статьи не могут не перекликаться. Я уже предложил тебе привести пример - откуда и что я стырил. Не привел? Извини, тогда это пустой трёп.
Гриффин; +1 Ответить
59. frc 03.01.13 17:18 Сейчас в теме
(57)
Вернее, он является надстройкой над средствами работы с XML, а значит - по определению не может работать быстрее, чем тот же DOM

ну, приехали.
DOM - это те же "схемы", но включенные в сам файл обмена XML, давая возмжность перегружать данные без загрузки "схем" в конфигуратор.
Аналог DOM - это Конвертация обмена в 1С, только там "поиск 1С своего пути" все также ни к чему хорошему не привел.
XDTO - схемы уже загружены в конфигурацию базы-приемника, по ним читается входящий файл XML.
Так и где просматривается "разница в скорости"? )
61. Evil Beaver 6750 03.01.13 17:24 Сейчас в теме
(59) frc,
DOM - это те же "схемы", но включенные в сам файл обмена XML, давая возмжность перегружать данные без загрузки "схем" в конфигуратор.


Вы бредите. DOM это совсем другое.

Аналог DOM - это Конвертация обмена в 1С, только там "поиск 1С своего пути" все также ни к чему хорошему не привел.
XDTO - схемы уже загружены в конфигурацию базы-приемника, по ним читается входящий файл XML.
Так и где просматривается "разница в скорости"? )


DOM - аналог конвертации? или наоборот? Батенька, да вы вообще не в теме, я гляжу. А откуда же такая самоуверенная риторика?
user1021675; baobingo; +2 Ответить
63. frc 03.01.13 17:30 Сейчас в теме
(61)
DOM - аналог конвертации? или наоборот? да вы вообще не в теме, я гляжу

ага, вот и поймал тебя на первом же повороте :)
Теперь, видимо, про цикл статей можно больше не дискутировать :)
Итак, как работает DOM, а как - Конвертация? Вкратце, без воды: принцип, формат обмена, на чем основан DOM и на чем - Конвертация. Пять предложений.
62. frc 03.01.13 17:27 Сейчас в теме
(57)
Выкатывай пример кода и проблему

ну уж нет, извини, это тебе плюсики ставят за "XDTO - это просто" все, кто им ни разу пользовался, ведясь на заголовок и пересказ желаемого функционала работы XDTO, вот и давай докажи реальными примерами, как это просто и легко :)
Без конкретных вопросов и прикладных задач дальнейшее обсуждение не имеет смысла

позволь, тогда я перефразирую тебя немного - "без конкретных ответов на конкретные вопросы и описание прикладных задач дальнейшие статьи (и эта тоже) на эту тему не имеют смысла" :)
А иначе - все это "превращается в обоснованный наезд и признание некомпетентности" в данном вопросе :)
Уж извини, это ты так бодро "это - просто!" статьи (и даже целый цикл!) про XDTO начал, наобещав и наполучав авансом сотни плюсов. Вот и отрабатывай реальным контентом, так сказать :)
65. Evil Beaver 6750 03.01.13 17:57 Сейчас в теме
(62) frc,
ну уж нет, извини, это тебе плюсики ставят за "XDTO - это просто" все, кто им ни разу пользовался, ведясь на заголовок

Ну здесь вообще все просто. Каждый ставит плюсик, так, как считает нужным. Если материал ему полезен - ставит плюсик. Нет - не ставит. Или Вы считаете пользователей тупыми баранами, которые ставят плюсик только за заголовок? Все плюсики, сколько бы их не было - абсолютно заслужены только потому, что они существуют. И ровно столько человек сочли статью полезной. Тут и обсуждать нечего. Вас что, жаба душит?
Вот и отрабатывай реальным контентом

Я-то с радостью. Но я не получаю денег за эти статьи, заметь. А стало быть "отрабатывать" не обязан. Я действительно хочу поделиться опытом и прошу у читателей подкинуть описание реальных случаев, когда что-то было непонятно. Так статьи будут более эффективны, ибо будут рассматривать реально возникающие проблемы, а не те, которые я надумал. В конечном итоге, от более полезных статей выигрывает сообщество, а не я один.
Итак, как работает DOM, а как - Конвертация? Вкратце, без воды: принцип, формат обмена, на чем основан DOM и на чем - Конвертация. Пять предложений.

Я нигде не говорил, что знаю ВСЁ. Вот и сейчас, я смотрю на Ваш вопрос и не понимаю - а в чем вопрос? Возможно, что это я тупой, а возможно вопрос некорректно задан...
DOM, он же "объектная модель документа" - стандарт w3c, позволяющий оперировать деревом XML в оперативной памяти, в объектной стилистике. (причем тут конвертация?)
Конвертация данных - механизм фирмы "1С" позволяющий настроить соответствие данных между разными конфигурациями и выполнять обмен по так называемым "Правилам конвертации". Обмен выполняется посредством XML файлов. (Причем тут DOM?)
Я реально не понимаю, как они могут связаны напрямую. Поясните?
68. ZLENKO 03.01.13 19:13 Сейчас в теме
(62)
Свой-то труд - где? :)

Уважаемый, что то я не заметил где Ваш труд ? Не вижу на Инфостарте ни одной Вашей разработки или статьи ...
А пустые понты гонять - много ума не надо. Уважающие себя люди сначала показывают свою работу, а потом критикуют чужую, а иначе это не более чем ничего не значащий поток сознания.
narutouzumaki_13; Deslime; sandybaev; Evil Beaver; purgin; katunya88; JohnyDeath; charushkin; sh4d0w; tname; zoytsa; +11 Ответить
64. frc 03.01.13 17:44 Сейчас в теме
(57)
схемы загружать в конфигурацию не надо, их можно создавать динамически

даже так? :)
(61)
да вы вообще не в теме, я гляжу

т.е. Конвертация - аналог XDTO? или оригинальная находка 1С?
69. frc 03.01.13 19:15 Сейчас в теме
(57)
Во-первых, схемы загружать в конфигурацию не надо, их можно создавать динамически

итак, что такое "схемы XML" в 1С, и как они связаны с пакетами XDTO? Ну, и в кратце - как динамически (т.е. программно, так ведь?) создать/добавить новый объект XDTO конфигурации (без загрузки схемы), а не "достать" куцый тип данных из библиотеки "фабрика XDTO".
(61)
Вы бредите. DOM это совсем другое.

это у вас есть еще шанс не прожить всю свою жизнь в бреду.
(65)
DOM, он же "объектная модель документа" - стандарт w3c, позволяющий оперировать деревом XML в оперативной памяти

DOM - это движок, позволяющий работать с HTML, XHTML и XML-документами "по-своему", читая их в виде объектов.
А не "нечто", специально оперирующая там чем-то в оперативной памяти. В памяти все приложения чем-нибудь оперируют, и DOM никак не выделяется в этом направлении среди них - он не работает с железом, это сугубо программный интерфейс.
Поясните?

Поглядите единственную и побочную реализацию DOM в 1С - ДокументDOM.
Логическая DOM - это самодостаточная структура, описывающая объекты в формате XML.
Логическая Конвертация Данных - это самодостаточный пакет, сотсоящий из: схемы описания стурктуры ("правила...") и непосредственно самих данных, сохраненных в формате XML.
Логичеси XDTO - отдельно схемы (или наборы схем - пакеты, чего ты так и не понял до сих пор), отдельно данные в формате XML.
Вот видишь - все действительно просто, когда знаешь и понимаешь. И можно объяснить все - сколько там? три предложения?
И у тебя еще есть шанс двигаться в этом направлении, а не по общему широкому проспекту самообмана в 1С.
83. Evil Beaver 6750 03.01.13 21:34 Сейчас в теме
(69) frc,

DOM - это движок, позволяющий работать с HTML, XHTML и XML-документами "по-своему", читая их в виде объектов.
А не "нечто", специально оперирующая там чем-то в оперативной памяти. В памяти все приложения чем-нибудь оперируют, и DOM никак не выделяется в этом направлении среди них - он не работает с железом, это сугубо программный интерфейс.
Поясните?


Что-то пахнет словоблудием.. Да, приложения чем-то оперируют. Спасибо, кэп.

Поглядите единственную и побочную реализацию DOM в 1С - ДокументDOM.
Логическая DOM - это самодостаточная структура, описывающая объекты в формате XML.
Логическая Конвертация Данных - это самодостаточный пакет, сотсоящий из: схемы описания стурктуры ("правила...") и непосредственно самих данных, сохраненных в формате XML.
Логичеси XDTO - отдельно схемы (или наборы схем - пакеты, чего ты так и не понял до сих пор), отдельно данные в формате XML.


Сильно пахнет словоблудием...

итак, что такое "схемы XML" в 1С, и как они связаны с пакетами XDTO? Ну, и в кратце - как динамически (т.е. программно, так ведь?) создать/добавить новый объект XDTO конфигурации (без загрузки схемы), а не "достать" куцый тип данных из библиотеки "фабрика XDTO".


Я нигде не говорил, про создание прикладных типов языка динамически. Я говорил про Пакеты. Развели срач, кидаясь язвительными фразами и пытаясь подменять понятия.. Кого вы пытаетесь на*бать, уважаемый?
Здесь сообщество профессионалов, а не трольчатник. Спорить с глупцом здесь ни у кого нет интереса. Дискуссия закончена. Диалог, от которого за версту несет школотой, для меня неинтересен. Спасибо за внимание.
Гриффин; +1 Ответить
87. DitriX 1810 04.01.13 15:32 Сейчас в теме
(45) опоздал немного с камментами, но - прочтите верхние комментарии и скажите - где и что я не так сказал.
И вообще то вы всего лишь перефразировали мой текст в более агрессивной форме не понятно к кому направленной
15. Alien_RS_Forever 26.12.12 12:33 Сейчас в теме
(0) хорошая статья, все понятно.. xdto все же, имхо, подходит для обработки больших объемов данных со сложной структурой.. для простых вещей проще напрямую через xml обмен написать.. и кстати, в статье ни слова про загрузку.. ждем продолжения )
17. Kyrales 136 26.12.12 13:38 Сейчас в теме
Мне кажется для работы с XML более удобен Oxygen XML Editor, чем Liquid XML Studio.
21. skyp 35 26.12.12 23:31 Сейчас в теме
Автор молодец! Много раз пытался с чего-то начать работу по XDTO... Каждый раз останавливала мутность документации разработчика. А здесь - довольно простои понятно!
22. kasper076 71 27.12.12 10:03 Сейчас в теме
Поделюсь своим примером работы с XDTO.

Имеем схему:
<xs:schema xmlns:tns="ДопФайлУниверсальный" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="ДопФайлУниверсальный" attributeFormDefault="unqualified" elementFormDefault="qualified">
	<xs:element name="Реквизит" type="tns:Реквизит"/>
	<xs:element name="ДопФайл" type="tns:ДопФайл"/>
	<xs:complexType name="ДопФайл">
		<xs:sequence>
			<xs:element name="Данные" type="tns:Реквизит" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="ИдФайла" type="xs:string" use="required"/>
		<xs:attribute name="ИдДопФайла" type="xs:string" use="required"/>
		<xs:attribute name="ВерсияФормата" type="xs:string" use="required"/>
		<xs:attribute name="ДатаФормирования" type="xs:dateTime" use="required"/>
	</xs:complexType>
	<xs:complexType name="Реквизит">
		<xs:choice>
			<xs:element name="Реквизит" type="tns:Реквизит" minOccurs="0" maxOccurs="unbounded"/>
		</xs:choice>
		<xs:attribute name="Имя" type="xs:string"/>
		<xs:attribute name="Значение" type="xs:string"/>
	</xs:complexType>
</xs:schema>
Показать


Схему храним в макете обработки.

И вот такой код:
Функция ПолучитьОбъектXDTO(Фабрика, Владелец, Имя, ЗначениеСвойства = "")
	Если ТипЗнч(Владелец) = Тип("ПакетXDTO") Тогда
		СвойствоXDTO = Владелец.КорневыеСвойства.Получить(Имя);
	Иначе
		СвойствоXDTO = Владелец.Свойства.Получить(Имя);
	КонецЕсли;	
	ТипXDTO = СвойствоXDTO.Тип;
	Если  ТипЗнч(ТипXDTO) = Тип("ТипЗначенияXDTO") Тогда
		ОбъектXDTO = Фабрика.Создать(ТипXDTO, ЗначениеСвойства);
	Иначе
		ОбъектXDTO = Фабрика.Создать(ТипXDTO);
	КонецЕсли;	
	Возврат ОбъектXDTO;
КонецФункции	

Процедура КнопкаВыполнитьНажатие1(Кнопка)
	
	ИмяФайла = ПолучитьИмяВременногоФайла("xsd");
	Макет = ПолучитьМакет("Схема");
	Макет.Записать(ИмяФайла);
	
	Фабрика = СоздатьФабрикуXDTO(ИмяФайла);
	ПакетXDTO = Фабрика.Пакеты.Получить("ДопФайлУниверсальный");
	
	ДопФайлОбъект	= ПолучитьОбъектXDTO(Фабрика, ПакетXDTO, "ДопФайл");
	
	ДопФайлОбъект.ВерсияФормата 	= "1.0";
	ДопФайлОбъект.ДатаФормирования	= РабочаяДата;
	ДопФайлОбъект.ИдДопФайла		= Строка(Новый УникальныйИдентификатор);
	ДопФайлОбъект.ИдФайла			= Строка(Новый УникальныйИдентификатор);
	
	ДанныеОбъектXDTO = ПолучитьОбъектXDTO(Фабрика, ДопФайлОбъект.Тип(), "Данные");
	
	СправочникиОбъектXDTO			= ПолучитьОбъектXDTO(Фабрика, ДанныеОбъектXDTO.Тип(), "Реквизит");
	СправочникиОбъектXDTO.Имя		= "Справочники";
	
	Запрос = Новый Запрос;
	
	Запрос.Текст = 
	"ВЫБРАТЬ ПЕРВЫЕ 3
	|	Номенклатура.Код,
	|	Номенклатура.Наименование
	|ИЗ
	|	Справочник.Номенклатура КАК Номенклатура
	|ГДЕ
	|	НЕ Номенклатура.ЭтоГруппа
	|АВТОУПОРЯДОЧИВАНИЕ";
	
	ВыборкаНоменклатура = Запрос.Выполнить().Выбрать();
	Пока ВыборкаНоменклатура.Следующий() Цикл

		НоменклатураОбъектXDTO			= ПолучитьОбъектXDTO(Фабрика, ДанныеОбъектXDTO.Тип(), "Реквизит");
		НоменклатураОбъектXDTO.Имя		= "Номенклатура";
		
			НоменклатураРеквизитОбъектXDTO			= ПолучитьОбъектXDTO(Фабрика, ДанныеОбъектXDTO.Тип(), "Реквизит");
			НоменклатураРеквизитОбъектXDTO.Имя		= "Код";
			НоменклатураРеквизитОбъектXDTO.Значение	= СокрЛП(ВыборкаНоменклатура.Код);
		
			НоменклатураОбъектXDTO.Реквизит.Добавить(НоменклатураРеквизитОбъектXDTO);
		
			НоменклатураРеквизитОбъектXDTO			= ПолучитьОбъектXDTO(Фабрика, ДанныеОбъектXDTO.Тип(), "Реквизит");
			НоменклатураРеквизитОбъектXDTO.Имя		= "Наименование";
			НоменклатураРеквизитОбъектXDTO.Значение	= СокрЛП(ВыборкаНоменклатура.Наименование);
		
			НоменклатураОбъектXDTO.Реквизит.Добавить(НоменклатураРеквизитОбъектXDTO);
		
		СправочникиОбъектXDTO.Реквизит.Добавить(НоменклатураОбъектXDTO);
		
	КонецЦикла;
	
	РегистрыСведенийОбъектXDTO			= ПолучитьОбъектXDTO(Фабрика, ДанныеОбъектXDTO.Тип(), "Реквизит");
	РегистрыСведенийОбъектXDTO.Имя		= "РегистрыСведений";
		
	Запрос.Текст = 
	"ВЫБРАТЬ ПЕРВЫЕ 3
	|	Штрихкоды.Владелец.Код,
	|	Штрихкоды.Штрихкод
	|ИЗ
	|	РегистрСведений.Штрихкоды КАК Штрихкоды
	|АВТОУПОРЯДОЧИВАНИЕ";
	
	ВыборкаШтрихКоды = Запрос.Выполнить().Выбрать();
	Пока ВыборкаШтрихКоды.Следующий() Цикл

		ШтрихКодыОбъектXDTO			= ПолучитьОбъектXDTO(Фабрика, ДанныеОбъектXDTO.Тип(), "Реквизит");
		ШтрихКодыОбъектXDTO.Имя		= "ШтрихКоды";
		
			ШтрихКодыРеквизитОбъектXDTO			= ПолучитьОбъектXDTO(Фабрика, ДанныеОбъектXDTO.Тип(), "Реквизит");
			ШтрихКодыРеквизитОбъектXDTO.Имя		= "ВладелецКод";
			ШтрихКодыРеквизитОбъектXDTO.Значение	= СокрЛП(ВыборкаШтрихКоды.ВладелецКод);
		
			ШтрихКодыОбъектXDTO.Реквизит.Добавить(ШтрихКодыРеквизитОбъектXDTO);
		
			ШтрихКодыРеквизитОбъектXDTO			= ПолучитьОбъектXDTO(Фабрика, ДанныеОбъектXDTO.Тип(), "Реквизит");
			ШтрихКодыРеквизитОбъектXDTO.Имя		= "Штрихкод";
			ШтрихКодыРеквизитОбъектXDTO.Значение	= СокрЛП(ВыборкаШтрихКоды.Штрихкод);
		
			ШтрихКодыОбъектXDTO.Реквизит.Добавить(ШтрихКодыРеквизитОбъектXDTO);
		
		РегистрыСведенийОбъектXDTO.Реквизит.Добавить(ШтрихКодыОбъектXDTO);
		
	КонецЦикла;
	
	ДанныеОбъектXDTO.Реквизит.Добавить(СправочникиОбъектXDTO);
	ДанныеОбъектXDTO.Реквизит.Добавить(РегистрыСведенийОбъектXDTO);
	
	ДопФайлОбъект.Данные = ДанныеОбъектXDTO;
	
	ЗаписьXML = Новый ЗаписьXML;
	ЗаписьXML.ОткрытьФайл("C:\uno.xml", "windows-1251");
	ЗаписьXML.ЗаписатьОбъявлениеXML();	
	Фабрика.ЗаписатьXML(ЗаписьXML, ДопФайлОбъект, "Файл");
	
	ЗаписьXML.Закрыть();
	
КонецПроцедуры
Показать


В результате получаем такой вот файл:

<?xml version="1.0" encoding="windows-1251"?>
<Файл xmlns="ДопФайлУниверсальный" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ИдФайла="303444e5-35c0-414a-a12e-6953dc687934" ИдДопФайла="53403769-45f0-4dd6-8e8c-4861c19f9809" ВерсияФормата="1.0" ДатаФормирования="2012-12-27T00:00:00">
	<Данные>
		<Реквизит Имя="Справочники">
			<Реквизит Имя="Номенклатура">
				<Реквизит Имя="Код" Значение="00000005316"/>
				<Реквизит Имя="Наименование" Значение="!!!!!!!!!!!!!!!!!!!!!!"/>
			</Реквизит>
			<Реквизит Имя="Номенклатура">
				<Реквизит Имя="Код" Значение="00000008308"/>
				<Реквизит Имя="Наименование" Значение="лом L130"/>
			</Реквизит>
			<Реквизит Имя="Номенклатура">
				<Реквизит Имя="Код" Значение="00000010954"/>
				<Реквизит Имя="Наименование" Значение="неисключительная лицензия"/>
			</Реквизит>
		</Реквизит>
		<Реквизит Имя="РегистрыСведений">
			<Реквизит Имя="ШтрихКоды">
				<Реквизит Имя="ВладелецКод" Значение="00000012853"/>
				<Реквизит Имя="Штрихкод" Значение=""/>
			</Реквизит>
			<Реквизит Имя="ШтрихКоды">
				<Реквизит Имя="ВладелецКод" Значение="00000012794"/>
				<Реквизит Имя="Штрихкод" Значение=""/>
			</Реквизит>
			<Реквизит Имя="ШтрихКоды">
				<Реквизит Имя="ВладелецКод" Значение="00000004095"/>
				<Реквизит Имя="Штрихкод" Значение=""/>
			</Реквизит>
		</Реквизит>
	</Данные>
</Файл>
Показать


Прочитать полученный файл можно так:

Процедура Прочитать()
	
	ИмяФайла = ПолучитьИмяВременногоФайла("xsd");
	Макет = ПолучитьМакет("Схема");
	Макет.Записать(ИмяФайла);
	
	Фабрика = СоздатьФабрикуXDTO(ИмяФайла);
	
	ЧтениеXML = Новый ЧтениеXML;
	ЧтениеXML.ОткрытьФайл("C:\uno.xml");
	
	ФайлОбъектXDTO = Фабрика.ПрочитатьXML(ЧтениеXML);
	ДанныеОбъектXDTO = ФайлОбъектXDTO.Данные;
	МетаданныеОбъектXDTO = ДанныеОбъектXDTO.Реквизит;
	
	Если ТипЗнч(МетаданныеОбъектXDTO) = Тип("СписокXDTO") Тогда
		МетаданныеОбъектXDTOКол_во = МетаданныеОбъектXDTO.Количество() - 1;
	Иначе
		МетаданныеОбъектXDTOКол_во = 0;
	КонецЕсли;
	Для ИндексМетаданныеОбъектXDTO = 0 По МетаданныеОбъектXDTOКол_во Цикл
		Если ТипЗнч(МетаданныеОбъектXDTO) = Тип("СписокXDTO") Тогда
			ТекМетаданныеОбъектXDTO = МетаданныеОбъектXDTO.Получить(ИндексМетаданныеОбъектXDTO);
		Иначе
			ТекМетаданныеОбъектXDTO = МетаданныеОбъектXDTO;
		КонецЕсли;
		
		ТекМетаданныеОбъектXDTOИмя = ТекМетаданныеОбъектXDTO.Имя;
		
		ВидМетаданныхОбъектXDTO = ТекМетаданныеОбъектXDTO.Реквизит;

		Если ТипЗнч(ВидМетаданныхОбъектXDTO) = Тип("СписокXDTO") Тогда
			ВидМетаданныхОбъектXDTOКол_во = ВидМетаданныхОбъектXDTO.Количество() - 1;
		Иначе
			ВидМетаданныхОбъектXDTOКол_во = 0;
		КонецЕсли;
		Для ИндексВидМетаданныхОбъектXDTO = 0 По ВидМетаданныхОбъектXDTOКол_во Цикл
			Если ТипЗнч(ВидМетаданныхОбъектXDTO) = Тип("СписокXDTO") Тогда
				ТекВидМетаданныхОбъектXDTO = ВидМетаданныхОбъектXDTO.Получить(ИндексВидМетаданныхОбъектXDTO);
			Иначе
				ТекВидМетаданныхОбъектXDTO = ВидМетаданныхОбъектXDTO;
			КонецЕсли;
			
			ТекВидМетаданныхОбъектXDTOИмя = ТекВидМетаданныхОбъектXDTO.Имя;
			
			ЭлементОбъектXDTO = ТекВидМетаданныхОбъектXDTO.Реквизит;
			
			Если ТипЗнч(ЭлементОбъектXDTO) = Тип("СписокXDTO") Тогда
				ЭлементОбъектXDTOКол_во = ЭлементОбъектXDTO.Количество() - 1;
			Иначе
				ЭлементОбъектXDTOКол_во = 0;
			КонецЕсли;
			Для ИндексЭлементОбъектXDTO = 0 По ЭлементОбъектXDTOКол_во Цикл
				Если ТипЗнч(ЭлементОбъектXDTO) = Тип("СписокXDTO") Тогда
					ТекЭлементОбъектXDTO = ЭлементОбъектXDTO.Получить(ИндексЭлементОбъектXDTO);
				Иначе
					ТекЭлементОбъектXDTO = ЭлементОбъектXDTO;
				КонецЕсли;
				
				ТекЭлементОбъектXDTOИмя			= ТекЭлементОбъектXDTO.Имя;
				ТекЭлементОбъектXDTOЗначение	= ТекЭлементОбъектXDTO.Значение;
				
			КонецЦикла;	
			
		КонецЦикла;	
		
	КонецЦикла;	
	
	
КонецПроцедуры
Показать
POWone; user811769; NittenRenegade; mevgenym; rayastar; kazann; ximian; Dzenn; Мах; MorningStalker; dminrii.butorin; harmless; vsinyavkin; Mraque; EsKay; vi_maestro; shiaju; veiuper; адуырщдв; stupidgamer; logarifm; Gal_B; webester; xsazar; lars-net; A.Sytchev; Chif13; bashirov.rs; dima1c; Crush; kpakaguJL; Alex_1066; CratosX; +33 Ответить
139. Mraque 20.04.16 16:41 Сейчас в теме
(22) Привет ! Не подскажешь, пожалуйста, как изменить схему, чтобы файл выгрузки принял следующий вид:

<?xml version="1.0" encoding="windows-1251"?>
<Файл xmlns="ДопФайлУниверсальный" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ИдФайла="303444e5-35c0-414a-a12e-6953dc687934" ИдДопФайла="53403769-45f0-4dd6-8e8c-4861c19f9809" ВерсияФормата="1.0" ДатаФормирования="2012-12-27T00:00:00">
    <Данные>
            <Справочники Имя="Номенклатура">
                <Реквизит Имя="Код" Значение="00000005316"/>
                <Реквизит Имя="Наименование" Значение="!!!!!!!!!!!!!!!!!!!!!!"/>
            </Справочники>
            <Справочники Имя="Номенклатура">
                <Реквизит Имя="Код" Значение="00000008308"/>
                <Реквизит Имя="Наименование" Значение="лом L130"/>
            </Справочники>
            <Справочники Имя="Номенклатура">
                <Реквизит Имя="Код" Значение="00000010954"/>
                <Реквизит Имя="Наименование" Значение="неисключительная лицензия"/>
            </Справочники>
    </Данные>
</Файл>
Показать


Т.е. чтобы тэг для объекта назывался не "Реквизит" ?
140. Evil Beaver 6750 21.04.16 16:06 Сейчас в теме
(139) Mraque,
Не подскажешь, пожалуйста, как изменить схему

Чтобы изменить схему, ее надо как минимум иметь. Где схема?
23. zigomodo 27.12.12 12:22 Сейчас в теме
Спасибо,грамотно изложено все!
24. sikuda 625 28.12.12 09:45 Сейчас в теме
Тема очень нужная. Потому что спецификация xsd и ее реалазиция фирмой 1С - это разные вещи. В большинстве схем, которые приходят от других вендоров (SAP и др.) тупо не понимаются 1С.

Пример:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="element1">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="xs:decimal">
					<xs:attribute name="attr" type="xs:boolean"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
</xs:schema>
Показать

Не понимает 1С атрибут и значение на одном уровне.
25. Evil Beaver 6750 28.12.12 10:00 Сейчас в теме
(24) sikuda, Такую схему 1С не поймет. В ней нет типов, в ней описание узлов. Я в статье упомянул, что схема и модель данных это не одно и тоже, но не очень явно, а так, между делом...
В Вашей схеме сказано, что в документе XML один элемент и один атрибут. Все. Имен типов нет, в XDTO такое не загрузится, это нормально, это не вина 1С.
27. sikuda 625 28.12.12 10:42 Сейчас в теме
(25). Насчет типов не понял.
Следующая схема прекрасно грузиться:
<xs:schema xmlns:tns="http://www.sample-package.org" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.sample-package.org" attributeFormDefault="unqualified" elementFormDefault="qualified">
	<xs:attribute name="element" type="xs:string"/>
</xs:schema>


Для меня XDTO пакет встроенный в 1С реализующий схемы данных, но своим собственным способом.
Но проблема не в этом, а в том что эта типизиция объектов никак не пересекается с типами внутри 1С.
Зачем делать еще одну типизицию объектов не соответствующую стандартам, вопрос больше филосовский. Как у нас обычно говорят, так исторически сложилось(думаю что так и есть в 1С).

Но следуя большому и великому SAP. Майнстрим обменов и них идет через систему XI, основанную на XML схемах.
Надо задуматься.
frc; kasper076; +2 Ответить
28. Evil Beaver 6750 28.12.12 11:20 Сейчас в теме
(27) sikuda, Пакет XDTO это способ описать некий набор типов, который можно почерпнуть из схемы XML. Во второй схеме только один элемент. Он воспринимается, как корневое свойство. Если у него будет атрибут, то я честно говоря, не знаю, какой смысл все это будет иметь с точки зрения модели типов... Что будет означать данная схема для движка XDTO и зачем она такая нужна?

Что касается атрибутов и элементов на одном уровне, то это поддерживается, если вложено в complex-тип. Проверено. Вне типа - написал уже, что не вижу смысла в этом с точки зрения XDTO.

Теперь про разные, непересекающиеся типизации. Совсем не понял Ваших претензий. Есть данные, передаваемые во внешние системы посредством XML. Данные эти структурированы, согласно некоторой системе типов. С помощью XDTO мы можем абстрагироваться от слоя XML и работать с этими данными в объектном стиле, через точки.

Встроенные типы 1С просто имеют отображение на XML, но это именно отображение, сделанное через пакеты и фабрики и все такое прочее, т.е. тип XDTO CatalogRef и СправочникСсылка, это не одно и то же. Первое - инструмент обмена данными, второе - прикладной тип системы. Превращение одного в другое называется сериализацией... Суть претензии неясна...
34. sikuda 625 29.12.12 12:31 Сейчас в теме
Примерчик дал бы, но сейчас не при делах. На прошлой работе было дело. Но из (24) я думаю легко сделать вэб-сервис возвращающий этот тип с помощью вашей программы.

Р.S. В прошлой работе контора была серьезная. Для xml схем купила Altova XML Spy(стандарт де факто). И все ошибки проверяли в ней.

Еще раз всех с наступающими!!!
104. vlad.frost 187 16.01.13 19:02 Сейчас в теме
(24) sikuda,
Не понимает 1С атрибут и значение на одном уровне.

Всё 1С понимает! Автор в следующей главе как раз рассматривает этот вариант.

(0) поправьте, пожалуйста, ссылку в начале статьи, а то получается ссылка на самоё себя.
147. AlexanderKai 28.06.16 11:49 Сейчас в теме
(104) vlad.frost,
Понимает, но не очень удобно.
26. i_volodin 28.12.12 10:02 Сейчас в теме
Эх эту бы статью мне 3 года назад. Тогда бы она очень помогла.
29. sikuda 625 28.12.12 12:15 Сейчас в теме
А суть проста из области философии. Для большинства 1С-ников я не могу в двух словах объяснить зачем нужен XDTO, и зачем нужно было делать столько дополнительных объектов в самой 1С. Только для сериализации элемента справочника или для сериализации других данных в 1С? В объектном стиле я работаю с объектами 1С, с XML схемами я работаю в XML.

В философии есть термин "бритва Окамы". Не следует привлекать новые сущности без самой крайней на то необходимости.

Вы молодцы. Вы расписали как это работает. И за это Вам большой плюс.
user777757; +1 Ответить
30. Evil Beaver 6750 28.12.12 13:56 Сейчас в теме
(29) sikuda,
с XML схемами я работаю в XML


Каждому свое. Когда у меня есть стабильная XML схема, мне приятнее перевести ее в термины XDTO и работать, мысля объектами предметной области (сотрудниками и счетами), а не "узлами XML".
POWone; user811769; Гриффин; CratosX; kasper076; +5 Ответить
31. kasper076 71 29.12.12 08:22 Сейчас в теме
Так же XDTO избавляет от необходимости последовательной записи XML-файла. Можно подготовить необходимые объекты в процессе обработки данных, а затем просто присвоить их нужным реквизитам объекта XDTO.
user777757; +1 Ответить
32. sikuda 625 29.12.12 09:22 Сейчас в теме
30,31 Ребята так я Вам и пытаюсь втолковать, что связка XDTO -> XSD работает только в одну сторону (24,27).
По практике приходят тебе внешний вэб-сервис или xsd от javа(sap xi), dotnet. А в 1С через XDTO пакеты это не принимается никак. И у нас два пути
1. Делать XDTO -> XSD переделывая все под 1С
2. Используем внешние средства.

Или Вы живете только в вселенной 1С? Завидую..., нет пожелаю Вам интеграции с SAP :)))). Хорошее пожелание в плане карьеры...
33. Evil Beaver 6750 29.12.12 11:41 Сейчас в теме
(32) sikuda, Без проблем подключал внешние (не 1С-овские) веб-сервисы, никаких проблем. Разумеется, допускаю, что проблемы возможны, но надо бы примерчик сервиса, чтобы звучало не голословно.

Хорошее пожелание в плане карьеры


Таити, таити... нас и здесь неплохо кормят (с)
Мы про карьеру тут все в курсе, и сами умные;) С наступающим!

Кстати, взял Вашу схему из ответа 24. В 1С прекрасно грузится... Что у Вас там не получается, я может проблему не понял толком?
35. kasper076 71 29.12.12 12:44 Сейчас в теме
(33) А схемку-то не ту ты взял. ;)
71. ZLENKO 03.01.13 19:21 Сейчас в теме
(32) sikuda,
Или Вы живете только в вселенной 1С? Завидую..., нет пожелаю Вам интеграции с SAP :)))). Хорошее пожелание в плане карьеры...

Не понимаю что в этом пожелании хорошего в плане карьеры. Вы видимо уже забыли где оказались все SAP-еры когда случился "кризис" 2008 года? Не в SAP или OA счастье и не в 1С... :-)
73. frc 03.01.13 19:25 Сейчас в теме
(71) ZLENKO.PRO,
Вы видимо уже забыли где оказались все SAP-еры

там же, где и сейчас - с зарплатами в 3-4 раза выше 1совских "начальников проектов". Не говоря уже про программистов.
75. ZLENKO 03.01.13 19:31 Сейчас в теме
(73)
с зарплатами в 3-4 раза выше 1совских "начальников проектов"

Не буду "снимать штаны и прикладывать линейку", но скажу что это высказывание так же далеко от правды как я от Камчатки.
92. zoytsa 06.01.13 13:06 Сейчас в теме
Evil Beaver, спасибо! Ждем продолжения!

(73) frc, Вы, простите своими публикациями когда побалуете? Хотя бы одной что ли...
36. sikuda 625 29.12.12 12:52 Сейчас в теме
33. Вы не оттуда брали. Прикрепляю файлики. Мнения не важны - истина дороже.

1С:Предприятие 8.2 (8.2.17.153). В конфигураторе XDTO-пакеты - правой клавишей импорт XML-схемы. Выбрать прикрепленный файл SimpleBad1C .xsd. Тишина. Выбираем SimpleGood1C.xsd? появляется пакет.

Развлекайтесь...
Ну скажите мне, где я ошибаюсь. Пока вижу XDTO -> XSD работает только в одну сторону.
Прикрепленные файлы:
SimpleBad1C .xsd
SimpleGood1C.xsd
37. Evil Beaver 6750 29.12.12 13:01 Сейчас в теме
(36) sikuda, Хм... я может чего-то недопонял?
1. Беру файлик Bad1C. Загружаю в конфигуратор, ничего не происходит...
2. Открываю в Liquid, вижу, что не задано пространство имен, задаю, повторяю пункт 1. Вуаля, схема загружена.
Читаем статью и видим, что пространство имен обязательно должно быть.
38. sikuda 625 29.12.12 13:22 Сейчас в теме
Сравните два файла. До и после. Тип стал другим? Пришлите файлик...
Или сделайте мне в 1С значение и атрибут на одном уровне. Там физически это не сделаешь.
39. Evil Beaver 6750 29.12.12 13:39 Сейчас в теме
(38) sikuda, Я все-таки, думаю, что не понимаю чего-то...
Вот мои файлики:
1 - исходный Bad + добавил пространство имен, чтобы грузилось в 1С
2 - Файл номер 1 загружен в пакет XDTO, после чего, выгружен из 1С обратно в схему
3 - сравнение 2-х файлов. Разница только в заголовке, где порядок атрибутов изменен, но смысл тот же.
Итого, файл логически остался тем же и декларирует один и тот же состав узлов XML.
Во всей этой истории мне просто хочется понять (я правда не понимаю), что означает Ваша фраза "XDTO -> XSD работает только в одну сторону" Что это значит? И в какую именно сторону? Как это выглядит при решении прикладных задач?
Возможно, я невнимателен и не вижу чего-то важного в Ваших примерах?
Прикрепленные файлы:
SimpleBad1C .xsd
exported.xsd
40. sikuda 625 29.12.12 14:40 Сейчас в теме
Да заметил targetNamespace критично для 1С. Спасибо, добавил себе в знания.
Жаль нельзя вернуть все что у меня не загружалсь в 1С и еще раз протестировать.

Фраза XDTO -> XSD. Означает что из хорошего XDTO пакета всегда получается правильная схема, а обратно не всегда верно.
46. frc 03.01.13 01:28 Сейчас в теме
(40) sikuda,
Да заметил targetNamespace критично для 1С

я чего-то не понимаю, или Evil Beaver просто доописал нэймспэйс, по какой схеме должно грузится в 1С - "четко" по-пацански указав, каким образом нужно грузить, хотя Вы намекали, что если таковая стандартная для всех остальных схема тупо не будет загружена в 1С - ничего и не загрузится?
41. Evil Beaver 6750 29.12.12 15:40 Сейчас в теме
Да, это действительно так. "Схема" не равно "Пакет".
42. headMade 143 29.12.12 15:48 Сейчас в теме
подскажите а чем можно воспользоваться для просмотра (анализа) XML ?
43. andru_dv 02.01.13 23:58 Сейчас в теме
Спасибо за статью! Никогда не поздно учиться.
user777757; +1 Ответить
44. frc 03.01.13 01:08 Сейчас в теме
Автор, вся статья - три предложения:
- есть предопределенные схемы XML - XDTO называются;
- в эти схемы можно впихнуть все данные;
- схемы нужно загружать в таргет-конфу, иначе все бестолку.
Но! Если не будет продолжения - это будет подлость.

не будет никакого продолжения. Все описанное в статье - есть в десятках статей по инету.
А вот конкретиики применения, да пример разобрать подробно - кот наплакал.
А вот этим как раз и не будет никто заниматься, снова перепостят готовые статьи, и заработают миллион плюсиков.
48. ZLENKO 03.01.13 12:36 Сейчас в теме
Расскажу немного своего практического опыта. Для обмена данными между различными конфигурациями я поступил так. Выгрузил из двух баз схемы и в заголовке заменил пространство имен на произвольное. Затем загрузил в каждую из баз схему другой базы. При выгрузке данных в файле выгрузки подменял пространство имен на то, которое указывал в схемах.

Таким образом сериализацию и десереализацию данных удалось сделать посредством ФабрикиXDTO глобального контекста. Однако, как вы наверное догадываетесь, с десериализацией не все так гладко. Чтобы создать объект базы данных приемника приходится определять по заданным правилам обмена, соответствующий тип данных базы данных приемника (то же самое для реквизитов со ссылочным типом) и приводить строковые GUID к ссылкам. Вобщем получаем в базе-приемнике переданный XDTO объект с типизацией базы данных источника, а дальше его "ручками" "переливаем" в объект базы-приемника.

Плюс такого подхода в том что при изменении структуры баз не нужно вручную править схемы XDTO, а нужно просто перевыгрузить схемы баз и при необходимости откорректировать правила соответствия реквизитов. Изначально в голове представлялась простая схема обмена, по по факту кода, который "переливает" данные из объекта XDTO в объект базы-приемника получилось прилично. Большой ложкой дегтя была невозможность определить тип реквизита составного типа считанного объекта XDTO. Он указывался как AnyType и хотя в выгруженных данных указывался реальный тип выгруженного значения, но в считанном объекте узнать их было невозможно. Надеюсь сейчас это исправлено (я делал это года два назад на релизе 8.2.12), а мне пришлось ставить "костыли".

Единственная проблема которая возникает с этим обменом - при изменении состава реквизитов объектов, участвующих в обмене, обмен останавливается и требуется обновить схемы в конфигурациях. В остальном работает очень быстро и очень надежно. XDTO "рулит"!
49. Evil Beaver 6750 03.01.13 13:20 Сейчас в теме
(48) ZLENKO.PRO, переливать данные между разными конфигурациями, используя стандартные "платформенные" пакеты - занятие неблагодарное. Получится набор "костылей", за которым нужно пристально следить. Как мне кажется, для таких задач лучше использовать стандартный механизм "Конвертации данных".
XDTO лучше использовать, когда есть стабильная схема данных и набор четко обозначенных бизнес-объектов. Если же надо переливать универсальные данные по принципу "грузи все, что есть", то XDTO теряет свои преимущества и привносит излишнюю сложность.
Разумеется, это только мое мнение, оно запросто может быть ошибочным.
50. ZLENKO 03.01.13 13:37 Сейчас в теме
(49) К сожалению стандартный механизм "Конвертация данных" работал слишком медленно и очень ненадежно. Я не от хорошей жизни взялся ковырять XDTO.

У меня была задача организовать обмен между 1С: Розница и 1С: УПП. Первым делом мне надо было передать в Розницу прайс-лист на 10 тыс. номенклатуры с двумя типами цен - через стандартный механизм это загружалось 40 минут(!) (в практически пустую базу розницы) и через раз вываливалась ошибка нехватки памяти. Через XDTO то же самое передалось за 40 секунд (наверное можно было бы еще быстрее сделать, но не было времени оптимизировать код) и вот уже 2 года работает как часы.
53. frc 03.01.13 16:36 Сейчас в теме
(50) ZLENKO.PRO,
через стандартный механизм это загружалось 40 минут(!)

ну Вы сравнили чтение "почти" текстового файла построчно и блоками из XDTO.
обмен между 1С: Розница и 1С: УПП...передать в Розницу прайс-лист на 10 тыс. номенклатуры с двумя типами цен...

Все уже изобретено и выдумано задолго до 1С - есть прекрасный быстрый обмен через DBF.
который "переливает" данные из объекта XDTO в объект базы-приемника получилось прилично.

Поэтому и вопрос к Evil Beaver - объясните работу фабрики XDTO.
А потом - на кой тогда все эти сложности, если, как в указаном примере, такого объекта нет в тагерте (тип-то из базы-источника), и его все равно нужно создавать вручную через создание соответствующего объекта в приемнике со всеми последующими плясками?
Т.е. так называемые "схемы" - сами по себе ничего не создают "по типам", а только помогают "быстро" найти уже существующие объекты. И даже тут проблемы - а тот ли объект найден? А тот ли ГУИД у него, или уже другой по каким-то причинам (а то и просто поработали с этим объектом уже в приемнике, а в "источник" еще не синхронизировали)? Ведь управлять "по какому ключу искать в приемнике" - мы не можем, все зашито в "фабрике" (это опять к вопросу "а как оно там работает?") - в отличие от "построчного" чтения в Конвертации, там хоть есть видимость выбора типа поиска (однако и там работает, как обычно, по принципу "поиск по коду почти никогда не работает даже при явном указании").
А реквизиты-примитивы перегружать - так зачем огород городить?
NittenRenegade; +1 Ответить
55. Evil Beaver 6750 03.01.13 16:51 Сейчас в теме
(53) frc, попробую ответить, если я правильно понял проблему..
Фабрика XDTO работает так, как я написал в статье - создает в контексте выполнения виртуальной машины 1С объект с типом ОбъектXDTO (или ЗначениеXDTO). С точки зрения самой фабрики этот объект еще и носит некий тип XDTO (тот, который ей указали при создании). Можно провести аналогию с COM. Если вы создали некий COM объект, то у него в отладчике будет всегда тип COMОбъект. Сам же объект реально является неким другим типом, например Word.Application. Так же и здесь - фабрика создала объект некоторого типа, о котором знает только она сама. Для среды исполнения это всегда ОбъектXDTO. Больше фабрика ничего не делает. Совсем. Она ничего не ищет по GUID, она не превращает кусочки XML в ссылки базы данных. Все это делать надо ручками. Немножко автоматизировать это позволяет СериализаторXDTO. Вот он как раз и ищет ссылки по GUID-ам. Т.е. занимается превращением объектов среды исполнения (ссылок ИБ, например) в объекты XDTO (которые для среды все на одно лицо, а для фабрики - разные). Данный процесс называется сериализацией. Обратный процесс - десериализация, когда из кусочков XML получаются объекты среды исполнения (например ссылки ИБ). Алгоритмы сериализации/десериализации для стандартных типов прошиты в платформе, а те типы, которые вы сделали сами - сами и сериализуете, ручками. Никакой магии. Т.е. превращение GUID в ссылку выполняет сериализатор, а не фабрика.
Сложность здесь в том, что XDTO все это дело пытается спрятать под ковер, но уши вылезают. Получается "закон дырявых абстракций" в действии. Про все это я планирую написать. Если очень интересно, задайте конкретный вопрос в личке, обсудим.
NittenRenegade; IrinaKostroma; frc; +3 Ответить
58. frc 03.01.13 17:12 Сейчас в теме
(55)
С точки зрения самой фабрики этот объект еще и носит некий тип XDTO

то у него в отладчике будет всегда тип COMОбъект


Немножко автоматизировать это позволяет СериализаторXDTO...обратный процесс - десериализация...когда из кусочков XML получаются объекты среды исполнения (например ссылки ИБ)

как раз получаем-то "объекты" из базы источника. Для приемника это не имеет никакого смысла.
Алгоритмы сериализации/десериализации для стандартных типов прошиты в платформе

вот и расскажите "просто и понятно", что это за алгоритмы, и какие "стандартные типы" и как они обрабатывают.
Это ведь просто, не так ли? :)
Т.е. превращение GUID в ссылку выполняет сериализатор

Так и пишите тогда - "поиск ссылки на объект в приемнике по ГУИД (и всегда ли по ГУИД?) - что я называю превращением GUID в ссылку, - выполняет сериализатор".
Видите, сколько у Вас за кадром остается при описании реальной картины дел :)
Если очень интересно, задайте конкретный вопрос в личке

да отвечайте здесь - вот конкретный вопрос: объекта в приемнике нет, а тип (описан в конфигурации, конечно же; если еще и типа не будет - для 1С это туши свет и бери отпуск за свой счет) - есть.
Так какого ляда вся так называемая королевская рать фабрика XDTO не может его создать?
60. Evil Beaver 6750 03.01.13 17:21 Сейчас в теме
(58) frc,
что это за алгоритмы, и какие "стандартные типы" и как они обрабатывают.
Это ведь просто, не так ли? :)

Вот кусок кода:
Для Каждого Пакет Из ФабрикаXDTO.Пакеты Цикл
   Сообщить(Пакет.URIПространстваИмен);
КонецЦикла;


Сериализацию/десериализацию всех типов, указанных в этих пакетах платформа должна обеспечивать автоматически. Пакеты, которые вы руками добавили в ПакетыXDTO, разумеется, она сериализовывать не может.
вот конкретный вопрос: объекта в приемнике нет, а тип (описан в конфигурации, конечно же; если еще и типа не будет - для 1С это туши свет и бери отпуск за свой счет) - есть.
Так какого ляда вся так называемая королевская рать фабрика XDTO не может его создать?


Дано: Объекта нет в приемнике, из источника он выгружен как СправочникОбъект, а не как СправочникСсылка.
Если из источника вышла СправочникСсылка, то объект на ее основе вообще никак не создать, надеюсь это не требует объяснений.
Идем дальше, сериализатор XDTO получив на вход ОбъектXDTO вернет СправочникОбъект, с установленными реквизитами, в т.ч. GUID. Если в приемнике и источнике изменен состав реквизитов объекта (или даже их порядок) - будет исключение, автоматическая сериализация не сработает. Полученный от сериализатора объект надо ручками записать в ИБ через Объект.Записать(). Никаких чудес.
NittenRenegade; +1 Ответить
66. ZLENKO 03.01.13 18:57 Сейчас в теме
(53) frc,
Все уже изобретено и выдумано задолго до 1С - есть прекрасный быстрый обмен через DBF.

Ну если уж на то пошло, то обмен через CSV и быстрее и универсальнее...
70. TMV 14 03.01.13 19:20 Сейчас в теме
(66) ZLENKO.PRO, Универсальней? Действительно?
74. ZLENKO 03.01.13 19:27 Сейчас в теме
(70) TMV,
Универсальней? Действительно?

Вне всякого сомнения! В текст я могу выгрузить все что угодно, а в DBF далеко не все...
77. TMV 14 03.01.13 19:41 Сейчас в теме
(74) ZLENKO.PRO,
а в DBF далеко не все...
Пример?
(75)
как я от Камчатки
А где вы? Ради интереса..
79. ZLENKO 03.01.13 19:46 Сейчас в теме
(77) 7528 км (между городами Киев и Петропавловск-Камчатский)
81. ZLENKO 03.01.13 20:00 Сейчас в теме
(77) Обсуждать преимущества и недостатки обмена через DBF файлы по сравнению с XML считаю ниже точки зрения здравого смысла. Я думаю спор здесь неуместен :-) Признаюсь что был неправ в том что затронул эту тему.
76. frc 03.01.13 19:34 Сейчас в теме
(66) ZLENKO.PRO,
то обмен через CSV и быстрее и универсальнее...

даже не буду советовать узнать - вы свой потолок уже достигли.
80. ZLENKO 03.01.13 19:51 Сейчас в теме
(76) frc,
вы свой потолок уже достигли

Было бы странно если бы я в свои 37 лет не достиг состояния некоторой определенности. Чего и Вам желаю :-)
51. ZLENKO 03.01.13 14:00 Сейчас в теме
(49) Если бы я взялся заново переписать этот механизм, то костылей получилось бы уже не так много. Просто тогда долго искал подход к решению задачи, а сроки уже поджимали. Единственный реально костыль там был из-за невозможности определить тип значения реквизита составного типа указанный как AnyType - надеюсь что это уже доработали, хотя разработчики из 1С отказались анализировать эту проблему сославшись на то что использовать фабрику глобального контекста для данной задачи неправильно. Только когда я ранее спрашивал как правильно - а в ответ тишина...

Ну а "Конвертация данных" механизм безусловно нужный и хороший, но в силу своей универсальности слишком громоздкий и медлительный. Мне нужно было обеспечить обмен документами со скоростью близкой к реалтайму для работы десяти (плановый минимум) супермаркетов (реально в часы пиковой нагрузки скорость примерно 1 чек в 5 секунд). Решение на базе конвертации не обеспечивало такой скорости обмена.
52. Evil Beaver 6750 03.01.13 14:21 Сейчас в теме
(51) ZLENKO.PRO, показатели скорости очень даже хорошие. Респект и уважуха!
54. frc 03.01.13 16:43 Сейчас в теме
(52)
показатели скорости очень даже хорошие

не увидел во всем сообщении ZLENKO.PRO и во фразе в частности: "реально в часы пиковой нагрузки скорость примерно 1 чек в 5 секунд" никаких показателей скорости чего-либо.
Если намекали на "тогда скорость обмена должна быть таковой или быстрей" - то тут, первое, намеки - это "не считается", а второе - она (скорсоть обмена) в данном случае скорей будет зависеть от скорости установки соединения с базой-приемником - если одно только соединение с ней будет устанавливаться минуту и больше, то и чеков будете перегружать уже 50-100 за раз, а то и больше. И, соответственно, дольше.
67. ZLENKO 03.01.13 19:06 Сейчас в теме
(54) frc,
она (скорсоть обмена) в данном случае скорей будет зависеть от скорости установки соединения с базой-приемником - если одно только соединение с ней будет устанавливаться минуту и больше

Если бы Вы были пообразованее, то знали бы что COM соединение можно хранить в интервалах между обменами, а не инициализировать каждый раз заново. Но даже если не хранить инициализация COM соединения занимает не более 15 секунд. А под скоростью я понимаю то что сериализация даже относительно больших объектов (документ с десятками тысяч строк) в XDTO файл занимает менее секунды (точное время я не засекал). Никакой алгоритм выгрузки ни в DBF ни в CSV файл такой скорости не даст...
72. frc 03.01.13 19:24 Сейчас в теме
(67) ZLENKO.PRO,
Если бы Вы были пообразованее

ну ладно.
если бы вы были посамообразованее, то знали бы, что до COM-соединения есть еще и установка сетевого соединения.
что то я не заметил где Ваш труд ?

извините, ошибся - подумал, что перевод стрелок - не самый прокаченый ваш скилл.
Уважающие себя люди сначала показывают свою работу

можете себе еще и орден дать - в качестве самоуважения.
а иначе это не более чем ничего не значащий поток сознания.

поздравляю, вы реализовали самое значимое достижение вашей жизни - обмен через XDTO.
Пусть даже и ненужный в данном случае - но ведь это не важно, так ведь? Зато теперь везде можно задвигать про "потоки сознания" и "сперва добейся!"
(67) ZLENKO.PRO,
А под скоростью я понимаю то что сериализация даже относительно больших объектов (документ с десятками тысяч строк) в XDTO файл занимает менее секунды

отлично, можно вас в книгу рекордов смело записать.
Вы - единственный в мире, кто смог обойти аппаратные ограничения записи файла на диск.
78. ZLENKO 03.01.13 19:43 Сейчас в теме
(72) frc,
 Зато теперь везде можно задвигать про "потоки сознания" и "сперва добейся!" 

Я за свои 15 лет трудовой деятельности по разработке и внедрению информационных систем уже столько всего "задвинул" и "добился", что на самом деле мне глубоко все равно то что Вы не согласны с частью того что я тут написал. А вот Вы сначала выложите сюда на всеобщее обозрение свои достижения, тогда и критикуйте. А то читаеш это топик и в голову приходят слова из песни "Ничего нового" (С. Шнуров, группа Рубль).
82. ZLENKO 03.01.13 20:17 Сейчас в теме
(72) frc,
Вы - единственный в мире, кто смог обойти аппаратные ограничения записи файла на диск

Я не понимаю о каких ограничениях Вы говорите. У меня файл в памяти создается и передается через COM соединение. Зачем мне его на HDD писать? Вот запустил тест на своем домашнем компьютере - скорость записи в память ~21 Гигабайт/секунду. Вы представляете себе документ объемом в 21 Гигабайт ?

P.S.: А даже если записывать на HDD - разве скорость записи современных HDD 200 Мегабайт/секунду мало?
84. sikuda 625 04.01.13 10:28 Сейчас в теме
Немного основ товарищам сверху...

Грубо можно разделить анализаторы XML файла на две группы DOM и SAX (некоторые говорят парсеры)
DOM - строит дерево в оперативной памяти...
SAX - анализирует XML основываясь на событиях.

В Конвертации 1С используется SAX анализатор (XMLЧтение, XMLЗапись) рассматривающий файл как последовательный поток тегов.
И спасибо 1С за такую реализацию, так как DOM при больших объемах файлов просто встанет.
victorree; +1 Ответить
86. Evil Beaver 6750 04.01.13 11:20 Сейчас в теме
(84) sikuda, Разве ЧтениеXML - это SAX? Я думал, что это простой последовательный XMLReader. Вроде как бы в SAX нужно подписки на события определять, наподобие "ПриВстречеВФайлеНекоторогоАтрибута()"?
85. Abazinchik 04.01.13 10:59 Сейчас в теме
itmages внезапно умер. Не могли бы Вы перезалить картинки на другой фотохостинг?
NittenRenegade; +1 Ответить
88. dimbos_s 04.01.13 23:15 Сейчас в теме
Хорошая статья, в свое время тоже много что не получалось с XDTO, в следующей статье хотелось бы побольше про подводные камни в реализации 1С, коих кажется мне довольно много
89. hame1e00n 517 06.01.13 06:20 Сейчас в теме
Автор, можно картинки перезалить? а то половина не отображается...
NittenRenegade; +1 Ответить
91. Evil Beaver 6750 06.01.13 10:21 Сейчас в теме
(89) hame1e00n, Смогу перезалить только после НГ каникул.
hame1e00n; +1 Ответить
Оставьте свое сообщение

См. также

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    32263    0    ids79    40    

Партионный учет по двум количественным показателям

Математика и алгоритмы Учет ТМЦ v8 1cv8.cf Оптовая торговля, дистрибуция, логистика Россия УУ Бесплатно (free)

Особенности учета партионной системы при наличии двух количественных показателей.

26.03.2020    2864    0    lastcontra    4    

Treemapping — способ визуализации данных древовидной структуры. Карта-схема дерева

Математика и алгоритмы Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

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

18.02.2020    4156    0    randomus    18    

[После]Новогодние задачи

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

Совсем немного времени осталось до того момента, когда отзвучат куранты, шампанское будет выпито, мандарины съедены, и даже оливье закончится. Возникнет вопрос: чем бы занять неожиданно появившееся свободное время?

30.12.2019    2847    0    Alxby    23    

Как работает серверный вызов в 1С Промо

Математика и алгоритмы v8::УФ Бесплатно (free)

Клиент-серверная архитектура заложена в платформе изначально — со времен «1С:Предприятие 8.0». Однако при разработке на 8.0 и 8.1 о разделении кода на клиентскую и серверную часть можно было не заботиться, поскольку на клиенте (на толстом клиенте) был доступен тот же функционал, что и на сервере. Всё изменилось с выходом платформы «1С:Предприятие 8.2», когда появился тонкий клиент. Теперь на клиенте доступен один функционал, на сервере — другой. Клиент и сервер «общаются» между собой с помощью серверного вызова. Конечно, это усложнило процесс разработки, но с другой стороны – можно создавать более оптимальные (быстрые) решения, поскольку все сложные задачи выполняются на сервере.

18.11.2017    53435    0    pahich    82    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    24215    0    YPermitin    24    

"Хочу универсально!" [Часть 1]

Математика и алгоритмы Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

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

02.09.2019    9205    0    SeiOkami    35    

Обмен данными через Web Сервисы

Перенос данных из 1C8 в 1C8 v8 1cv8.cf Россия Бесплатно (free)

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

02.09.2019    19205    0    user5300    41    

Будни автоматизации или "мне нужна программка для 3D упаковки" Промо

Практика программирования Математика и алгоритмы Оптовая торговля Оптовая торговля v8 1cv8.cf УУ Бесплатно (free)

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

24.03.2014    44364    0    ildarovich    116    

Иерархия без "В ИЕРАРХИИ"

Математика и алгоритмы v8 Бесплатно (free)

Говорится о том, как эффективно представлять иерархию в СУБД, как получать и использовать эти представления при решении задач в запросной технике. Уточняются и дополняются запросы из статьи "Уровни, глубина, прародители, циклы и аналоги запросом" [https://infostart.ru/public/160707/].

22.08.2019    11266    0    ildarovich    19    

EnterpriseData – часть 3. Загрузка данных, идентификация объектов

Практика программирования Математика и алгоритмы Перенос данных из 1C8 в 1C8 Разработка v8 v8::УФ 1cv8.cf Бесплатно (free)

Основные этапы загрузки данных через EnterpriseData. Идентификация объектов загружаемых полностью и по ссылке. Приведены схемы процессов загрузки данных. Описание основных операций и обработчиков. Перечень процедур БСП, используемых при загрузке данных, структура «КомпонентыОбмена».

22.08.2019    13402    0    ids79    8    

Обработчики событий при записи объектов. Зачем и что за чем?

Математика и алгоритмы v8 Бесплатно (free)

Программисту, имеющему немного опыта на платформе 1С 8.3, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта.... Эта шпаргалка была создана в процессе обучения и реального опыта с целью разложить всё по полочкам, чтобы было четкое понимание в каком случае какой обработчик нужно использовать и в какой последовательности они запускаются при записи и проведении документов. Данная статья будет полезна в большей степени начинающим разработчикам. Но и опытным позволит освежить информацию, упорядочить её.

25.07.2019    39918    4    AlbinaAAA    26    

Приемы обработки больших данных в 1С Промо

Универсальные обработки Математика и алгоритмы Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

Рассказ об эффективных приемах организации обработок больших объемов данных на платформе 1С

07.08.2015    65678    0    tormozit    27    

Как проводятся документы в типовых конфигурациях от 1С

Математика и алгоритмы Практика программирования Разработка v8::ОУ ERP2 УТ11 Россия УУ Бесплатно (free)

В свое время, когда только начинал шаги в 1С и изучал, как проводятся документы в конфигурациях на платформе 1С по книге "Разработка управляемого интерфейса" (Хрусталева Е.Ю.), и там были представлены примеры совсем далекие от того, как сейчас проводятся документы в современных конфигурациях от 1С.

24.07.2019    25584    0    skv_79    35    

FizzBuzz на 1С. Чем короче, тем веселее. Варианты принимаются...

Практика программирования Математика и алгоритмы Разработка v8 Бесплатно (free)

Мне было скучно, я не мог себя заставить написать ничего полезного. И читал статью на Хабре. Потом я читал комментарии, а потом... нет я не ушел смотреть котиков на ютюбе. Я решил сделать несколько решений задачки FizzBuzz на 1С, с целью "чем короче, тем лучше". Прошу сильно не пинать, это просто развлечение для вечера.

24.07.2019    5151    0    vandalsvq    16    

Управление качеством кода

Математика и алгоритмы Рефакторинг и качество кода v8 Бесплатно (free)

О SonarQube, АПК, EDT. Какие преимущества дает их использование. Для каких команд подходит.

22.07.2019    15334    0    Stepa86    33    

Самоучитель языка запросов 1С. Промо

Практика программирования Решение задач на 1С:Специалист Математика и алгоритмы v8 v8::Запросы Бесплатно (free)

Сервис для изучения запросов 1С: "Консоль изучения запросов 1С:Предприятие 8". Теперь и с конструктором запросов!

07.05.2013    108237    0    bpc222    327    

Что делает "В ИЕРАРХИИ" в запросе?

Математика и алгоритмы v8 Бесплатно (free)

Описание действий платформы 1С при использовании конструкции "В ИЕРАРХИИ" в запросах.

16.07.2019    22217    0    YPermitin    34    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    45653    0    ids79    20    

Реализуем Стек, Очередь и Приоритетную очередь в 1С

Практика программирования Математика и алгоритмы v8 1cv8.cf Россия Бесплатно (free)

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

24.06.2019    13340    0    RonX01    65    

Решение транспортной задачи запросом Промо

Математика и алгоритмы v8 Бесплатно (free)

Списание по двум последовательностям партий запросом (без программной обработки)

1 стартмани

30.04.2014    34612    10    bforce    22    

Организация хранения промежуточных данных

Математика и алгоритмы v8 Бесплатно (free)

Организация хранения промежуточных данных в процедуре сверки.

29.05.2019    3952    0    scientes    1    

Вычисление 200 тысяч знаков числа pi

Математика и алгоритмы v8 Россия Бесплатно (free)

В статье рассматриваются возможности платформы выполнять сверхточные вычисления без использования сложных алгоритмов и внешних компонент на примере вычисления числа pi.

28.05.2019    7260    0    Oleg_nsk    96    

Регистры накопления. Виртуальные таблицы. Часть №1: Обороты

Практика программирования Математика и алгоритмы Разработка v8 1cv8.cf Бесплатно (free)

Описание работы платформы 1С:Предприятие 8.2 с виртуальной таблицей "Обороты" регистров накопления.

20.05.2019    24254    0    YPermitin    7    

Парсер запросов 1С. Часть 1: Введение, разбор математических выражений Промо

Математика и алгоритмы v8 Бесплатно (free)

Рано или поздно становится скучно решать типичные задачи, для которых придумана 1С. Голова пухнет от бухгалтерских терминов и очередных "хотелок" пользователей. Именно в такие моменты хочется гордо поднять голову, воскликнуть "Но я же программист!" и заняться чем-то интересным. В цикле статей я постараюсь доступно описать, как устроены парсеры в целом и на примере парсера языка запросов 1С. Требования к навыкам читающего: основы языка 1С, основы алгоритмизации.

1 стартмани

04.12.2013    30258    5    juntatalor    49    

Даем названия переменным: как префиксы экономят наше время

Практика программирования Математика и алгоритмы Разработка v8 Бесплатно (free)

Понятные названия переменных экономят время и силы разработчика : в начале, когда мы даём названия переменным, в процессе развития разработки, когда мы "на лету" понимаем назначение той или иной переменной, в конце, когда мы передаём разработку на поддержку других программистов, сами переходя к новым разработкам

06.05.2019    6344    0    Designer1C    81    

Заметки по SQL: Срез последних - аналог запроса

Математика и алгоритмы Практика программирования v8 1cv8.cf Россия Бесплатно (free)

В статье описывается создание среза последних данных средствами классического языка запросов. Причем метод построения запроса был разработан еще во времена, когда автор работал с СУБД Oracle 9i и программировал на PL SQL. Основная идея заключается преобразовании запроса с подзапросом, в запрос без подзапроса (в примерах описывается преобразование до двух вложенных подзапросов). Запросы тестировались на реальных базах данных. Платформа - 1С:Предприятие 8.3 (8.3.10.2561).

15.01.2019    10634    0    IVC_goal    7    

Сервис для изучения методов платформы 1С:Предприятие 8. Бесплатно! Промо

Практика программирования Решение задач на 1С:Специалист Математика и алгоритмы v8 Бесплатно (free)

Бесплатный ON-Line сервис изучения методов платформы 1С:Предприятие 8. Подготовка к аттестации 1С:Специалист on-line! Тестовые задания по различным видам учета! Подсказки для оптимального решения!

27.06.2013    49307    0    bpc222    51    

Новый подход к обмену данными EnterpriseData

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

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

14.12.2018    37651    0    ids79    72    

Многопоточное восстановление последовательностей

Производительность и оптимизация (HighLoad) Практика программирования Математика и алгоритмы Универсальные функции v8 Бесплатно (free)

Универсальный алгоритм многопоточного фонового восстановления любой последовательности.

05.12.2018    12500    0    _ASZ_    33    

Основные понятия и механизмы оптимизации клиент-серверного взаимодействия в 1C

Математика и алгоритмы Практика программирования v8 Россия Бесплатно (free)

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

23.08.2018    36308    0    Rain88    46    

v8: Концепция минимального изменения конфигурации для легкого обновления Промо

Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

"Лучше день потерять потом за пять минут долететь" ((с) "Крылья, ноги и хвосты") или как сделать так чтобы обновление конфигурации проходило с минимальными трудозатратами.

28.01.2013    37585    0    MarSeN    57    

Заполнение справочника с изображениями элементами по умолчанию

Практика программирования Обмен через XML Универсальные функции v8 Абонемент ($m)

Пример одного из решений, как можно заполнить справочник с изображениями значениями по умолчанию включая сами изображения. Сами изображения взяты из программы MapSource 6.16.3. Данные для загрузки хранятся в макете в формате XML.

1 стартмани

26.03.2018    8455    2    Kim1C    0    

Теорема номер тринадцать

Математика и алгоритмы v8 Бесплатно (free)

Использование математических методов для языка запросов.

15.03.2018    11848    0    vasilev2015    24    

"Взлом" теста "1С:Профессионал" методом машинного обучения

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

Нейронные сети – не единственная модель, реализующая принципы машинного обучения. Есть еще байесовская модель, которая математически строже и определеннее, поскольку построена на надежном фундаменте теории вероятностей. Применению байесовского вывода к решению интересной теоретической задачи и посвящена данная статья. Слово "взлом" в заголовке использовано для привлечения внимания. Речь идет исключительно о математическом методе, показанном на примере знакомой всем задачи. 

12.03.2018    18662    0    ildarovich    19    

Пример выбора несколько обработчиков событий записи объекта для решения одной задачи Промо

Математика и алгоритмы v8 Бесплатно (free)

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

27.09.2012    193865    0    AlbinaAAA    65    

Готовим Soap для Web-сервисов. Рецепты

WEB v8 Россия Бесплатно (free)

В статье описаны различные варианты обмена данными с web-сервисами по протоколу Soap, основанные на личном опыте.

28.12.2017    38445    0    987ww765    29    

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

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

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

1 стартмани

21.12.2017    42940    53    sandybaev    23    

Введение в CI для 1С

Математика и алгоритмы v8 Россия Бесплатно (free)

Значение роли тестирования при разработке ПО трудно переоценить, его применение позволяет повысить надёжность продукта и улучшить качество кода. Для продуктов для платформы 1С:Предприятие существует ряд инструментов для проведения тестирования, в том числе и от самого вендора. Но, также появились открытые инструменты, реализующие мировые практики проведения тестирования (проверки продукта), поддерживаемые сообществом. В этой статье описаны базовые принципы, которые необходимо понимать перед началом применения этих инструментов.

21.11.2017    22980    0    real_MaxA    22    

Альтернативные способы работы с XML. Часть 2: Введение в xPath или запросы к XML Промо

Обмен через XML Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

В предыдущей статье "Введение в DOM или объектная модель документа" было описано понятие объектной модели документа (DOM), раскрыты плюсы и минусы использования модели при разборе файлов XML, приведено сравнение с построчным последовательным разбором. Были представлены варианты выборки данных с помощью объекта 1С ДокументDOM. Теперь настало время познакомить читателей с самым, на мой взгляд, интересным способом извлечения данных из XML - при помощи языка запросов xPath.

09.08.2012    41648    0    1cspecialist    13    

#Область ВНЕШНИЕ_ВЫЗОВЫ или MVC в 1С, библиотечность и упрощение интеграции кода

Практика программирования Математика и алгоритмы Универсальные функции v8 Бесплатно (free)

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

12.10.2017    17514    0    for_sale    58    

1С, oauth2, Google API и Google Merchant. Сбор данных и парсинг

Практика программирования WEB v8 УТ10 Россия Бесплатно (free)

Всем привет. Стала задача, собрать данные с Google Merchants и внести их в 1С, для более детального анализа того, что сейчас показывается, что нет и какие проблемы при этом есть. Если кому это интересно, прошу под кат.

14.09.2017    16583    0    Mi11er    8    

Пишем игру Минер. Обработка событий ActiveX в 1С

Практика программирования Математика и алгоритмы v8 Россия Бесплатно (free)

Пример демонстрирует обработку событий генерируемых компонентой ActiveX в 1С.

29.05.2017    14527    0    user621724_Dimav1979    12    

От Hello world - к защите конфигураций за 1 минуту Промо

Защита и шифрование Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

Вы всегда хотели но боялись создать COM объект? Тогда мы идем к вам! С обычным блокнотом, где будем программировать на c#, и таймером ...

19.05.2012    34392    0    O-Planet    130    

Как я доступ на kb.1c.ru получал

Решение задач на 1С:Специалист Математика и алгоритмы v8 Россия Бесплатно (free)

kb.1c - база знаний по технологическим вопросам крупных внедрений и не только. В этой базе знаний собираются методики и решения технологических проблем эксплуатации 1с, check-list'ы и инструкции по настройке ПО на серверах. Какие-то из размещенных статей дублируются на ИТС. Когда я искал пути получения доступа к нему я столкнулся с проблемой: мало кто доподлинно знает как получить доступ к нему, не работая у франчайзи 1с. Я опишу путь, который прошёл я, как физическое лицо.

01.05.2017    25657    0    ikekoval    34    

Улучшение стандарта "Структура модуля"

Математика и алгоритмы v8 1cv8.cf Россия Бесплатно (free)

Описывается структура областей модулей, которую я использую при разработке на своих проектах. Обсуждаются недостатки стандарта 1С "Структура модуля". Предложен улучшенный подход к работе со структурой модуля.

26.03.2017    14155    0    o.nikolaev    23    

"Распределение в запросе" или "избавляемся от перебора"

Математика и алгоритмы Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

Хороший перебор - это отсутствие перебора. Рассмотрим пример замены полного перебора запросом.

16.12.2016    32740    0    alexandersh    48    

Новые функции СКД 8.2.14 Промо

Математика и алгоритмы v8::СКД 1cv8.cf Россия Бесплатно (free)

Демонстрация новых функций СКД 8.2.14

29.06.2011    214109    0    fishca    51    

Планы обмена. Квитировать или гарантировать?

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

Планы обмена предлагают использовать две стратегии удаления обработанных изменений: квитирование и гарантированная доставка сообщений. Как сделать правильный выбор?

12.12.2016    16783    0    zhichkin    9    

Некоторые принципы оптимизации запросов 1С (+SQL)

Математика и алгоритмы v8 Бесплатно (free)

Разработка нового функционала часто связана с созданием новых таблиц в базе и написанием запросов. Собственно, размышляя о запросах, мы и формируем в голове содержание таблиц, индексы и количество таблиц и индексов. Заранее можно уверенно рассуждать о том, какая нужна архитектура, если задачу удалось понять. На этом этапе важно привлекать свой опыт. Что же делать, если его нет? Как рассуждать о запросах и формате хранения?

17.11.2016    10511    0    ture    40