|
Фабрика XDTO (Заполнение свойств) | ☑ | ||
---|---|---|---|---|
0
LeyNoEscrita
24.06.13
✎
06:27
|
Здравствуйте. Помогите пожалуйста. В 1С v8.2 имеется объект данных "Фабрика XDTO" что является, практически, синонимом схеме XML. И в этой фабрике есть поля: - Свойства
- Типы значений - Типы объектов. Не как не могу понять как заполнить "Коллекцию свойств XDTO", код представлен ниже. Помогите кто чем может... //************************************************************************************************ ФайлыXSD = Новый Массив; ФайлыXSD.Добавить("D:\XMLSchema1.xsd"); Фабрика = СоздатьФабрикуXDTO(ФайлыXSD); //Заполним свойства XML Пакет = Фабрика.Пакеты.Получить("http://tempuri.org/XMLSchema.xsd"); Для Каждого ТекСвойство Из Пакет.КорневыеСвойства Цикл //Получаем свойство "Файл" Для Каждого ТекДочСвойство Из ТекСвойство.Тип.Свойства Цикл //Получаем все дочерние свойства Если ТекДочСвойство.Имя = "ВерсФорм" Тогда //ТекДочСвойство.ЗначениеПоУмолчанию = "5.01"; КонецЕсли; КонецЦикла; КонецЦикла; ФабФайл = Фабрика.Тип("http://tempuri.org/XMLSchema.xsd", "ФИОТип"); Сотр = Фабрика.Создать(ФабФайл); Сотр.Имя = "Иван"; Сотр.Фамилия = "Иванов"; Сотр.Отчество = "Иванович"; Параметры = Новый ПараметрыЗаписиXML("windows-1251", "1.0"); Файл = Новый ЗаписьXML; Файл.ОткрытьФайл(ЭлементыФормы.Адрес.Значение, Параметры); Файл.ЗаписатьОбъявлениеXML(); Фабрика.ЗаписатьXML(Файл, Сотр); Файл.Закрыть(); |
|||
1
LeyNoEscrita
24.06.13
✎
06:30
|
Вопросы собственно по следующему участку кода (остальное все работает)
Пакет = Фабрика.Пакеты.Получить("http://tempuri.org/XMLSchema.xsd"); Для Каждого ТекСвойство Из Пакет.КорневыеСвойства Цикл //Получаем свойство "Файл" Для Каждого ТекДочСвойство Из ТекСвойство.Тип.Свойства Цикл //Получаем все дочерние свойства Если ТекДочСвойство.Имя = "ВерсФорм" Тогда //ТекДочСвойство.ЗначениеПоУмолчанию = "5.01"; КонецЕсли; КонецЦикла; КонецЦикла; |
|||
2
ЧеловекДуши
24.06.13
✎
07:20
|
А оно тебе зачем?
Обмены пишешь рукотворные? :) |
|||
3
LeyNoEscrita
24.06.13
✎
07:25
|
Причем тут обмены???
Приказ ФНС России (какой то там номер) чтобы сдавать книги покупок книги продаж и журнал счет-фактур выданных и полученных в формате MXL. А так как предприятие весьма сложной Структуры (В том числе и бухгалтерия) 1С полностью с самописной конфигурацией. Вот и пишу сам себе обнавление 1С. В общем не важно зачем. Пожалуйста по теме. |
|||
4
LeyNoEscrita
24.06.13
✎
07:29
|
Срри не MXL а XML
|
|||
5
ЧеловекДуши
24.06.13
✎
07:30
|
+(1) Зачем это делать руками?
(3) >>> в формате XML Тогда ты не с того конца зашёл, XDTO нужен в сущности для полу автоматической выгрузки метаданных БД в другую БД или среду. Вот как мне проще всего заполнять "своими руками", а не через "XDTO" :) |
|||
6
LeyNoEscrita
24.06.13
✎
07:40
|
Человек Души))) А предложи ка мне альтернативу...
Ну и собственно на заметку... А XDTO выгружает данные в полуавтоматическом режиме куда??? в какие файлы??? Для справки я в коде не пользовался XDTO а пользовался Cхемой XML (что является ПРАКТИЧЕСКИ синонимами). Повторяю. По теме.... ну пожалуйста. |
|||
7
ЧеловекДуши
24.06.13
✎
07:43
|
(6) ЗаписьXML (XMLWriter)
|
|||
8
ЧеловекДуши
24.06.13
✎
07:45
|
+(6) Наверняка перед тобой должно лежать типо "Формат от ФНС № ххх" с полным описанием узлов, формата представления данных :)
|
|||
9
ЧеловекДуши
24.06.13
✎
07:49
|
+(6) >>> По теме.... ну пожалуйста.
По теме, что за фигня в (1)? Я же говорю, через "XDTO" грузится чут ли не весь объект метаданных. А основываясь на фабрикеXDTO в файл XML все заполняется чуть ли не в пару строчек но на основе объектов метаданных и содержимого БД, т.е. пишется весь документ махом и не надо долго думать по узлам. http://v8.1c.ru/overview/xdto.htm?printversion=1 Вот тут более подробней... что такое XDTO http://v8.1c.ru/overview/Term_000000274.htm#1 |
|||
10
Ageres
24.06.13
✎
08:00
|
(9) Сам-то прочитал, для чего XDTO нужен?
Одно из применений: создание собственной системы типов и значений для обработки произвольных данных |
|||
11
LeyNoEscrita
24.06.13
✎
08:02
|
Спасибо. На конец то более менее по теме)))
1) Так как конфигурация полностью самописная сериализатор я не буду использовать просто потому что сеарилизатор предназначен для быстрой и просто выгрузки/загрузки БД (он также будет путаться с полями типа "ПРЧА_ОТ2_ФИОСотрудника") а мне необходимо точное соответствие поля "ПРЧА_ОТ2_ФИОСотрудника" Трем полям (которые есть в коде) Фамилия Имя Отчество. 2) Ты совершенно прав у меня лежат стандарты ФНС России и (ими же утвержденная) схема XML c расширением *.XSD которая посредством стандартной функции 1С (Контекстное меню) импортируется в "ФабрикаXDTO". Все чуточку сложнее в общем.. 3) Спасибо за ссылки. Но прежде чем написать эту тему, я перерыл весь интернет и на офф сайте 1С конечно тоже был. И если ты перейдешь по ним ты убедишься что описанны там лишь "Типы Объектов", а про то как заполнить свойства ни слова.... В том числе и в Руководстве разработчика (Книжка от 1С) |
|||
12
Ageres
24.06.13
✎
08:04
|
(0) ПакетXDTO (XDTOPackage)
КорневыеСвойства (RootProperties) Использование: Только чтение. Описание: Тип: КоллекцияСвойствXDTO. Содержит коллекцию корневых свойств пакета XDTO. |
|||
13
Ageres
24.06.13
✎
08:05
|
(0) На инфостарте работу с XDTO подробно описывали.
|
|||
14
Ageres
24.06.13
✎
08:10
|
Вот у меня рабочий код:
НаборСхемXML = ФабрикаXDTO.ЭкспортСхемыXML("http://www.tempuri.org/CatalogPrice"); Фабрика = Новый ФабрикаXDTO(НаборСхемXML); ДанныеТип = Фабрика.Тип("http://www.tempuri.org/CatalogPrice","Данные"); ОписаниеНоменклатурыТип = Фабрика.Тип("http://www.tempuri.org/CatalogPrice","ОписаниеНоменклатуры"); ОписаниеШтрихкодТип = Фабрика.Тип("http://www.tempuri.org/CatalogPrice","ОписаниеШтрихКода"); ДанныеXDTO = Фабрика.Создать(ДанныеТип); ДанныеXDTO.ИдОтправителя = Строка(ЮрФизЛицо.УникальныйИдентификатор()); |
|||
15
Defender aka LINN
24.06.13
✎
08:16
|
(0) А перевод можно? Что именно не получается-то?
|
|||
16
LeyNoEscrita
24.06.13
✎
08:27
|
Defender aka
Я не знаю еще как объяснить...((( Вот ссылка на такойже мой топик тока он с картинками http://forum.infostart.ru/forum26/topic88450/ |
|||
17
Ageres
24.06.13
✎
08:34
|
Вот у меня рабочий код:
НаборСхемXML = ФабрикаXDTO.ЭкспортСхемыXML("http://www.tempuri.org/CatalogPrice"); Фабрика = Новый ФабрикаXDTO(НаборСхемXML); ДанныеТип = Фабрика.Тип("http://www.tempuri.org/CatalogPrice","Данные"); ОписаниеНоменклатурыТип = Фабрика.Тип("http://www.tempuri.org/CatalogPrice","ОписаниеНоменклатуры"); ОписаниеШтрихкодТип = Фабрика.Тип("http://www.tempuri.org/CatalogPrice","ОписаниеШтрихКода"); ДанныеXDTO = Фабрика.Создать(ДанныеТип); ДанныеXDTO.ИдОтправителя = Строка(ЮрФизЛицо.УникальныйИдентификатор()); Пока Выборка.Следующий() Цикл ОписаниеНоменклатурыXDTO = Фабрика.Создать(ОписаниеНоменклатурыТип); ОписаниеНоменклатурыXDTO.Код = ВыборкаТоваров.ТоварКод; ОписаниеНоменклатурыXDTO.Наименование = ВыборкаТоваров.Наименование; ДанныеXDTO.Номенклатура.Добавить(ОписаниеНоменклатурыXDTO); КонецЦикла; |
|||
18
Defender aka LINN
24.06.13
✎
08:46
|
Ну и т.д. |
|||
19
LeyNoEscrita
24.06.13
✎
09:07
|
Defender aka
Ты не прав. Значение "Файл" в фабрике XDTO это свойство а не Типы объектов. Твой код "ТипФайл = Фабрика.Тип("http://tempuri.org/XMLSchema.xsd", "Файл");" Вернет тебе значение Неопределено. Но все равно тебе огромное спасибо твой Работающий пример оказался не то что надо, но он навел на мысль как надо. Спасибо огромное ТЕМА ЗАКРЫТА |
|||
20
ЧеловекДуши
24.06.13
✎
09:11
|
(10) Да, объясни мне, что я неправ :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |