|
Есть у кого пример записи в XML не через план обмена? | ☑ | ||
---|---|---|---|---|
0
breezee
23.02.16
✎
14:30
|
Пишу обмен между ИБ на мобильном и ИБ на сервере. Нужно загружать всех пользователей без узлов обмена.
Есть запись данных в XML через планы обмена. Вот код: ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку("UTF-8"); ЗаписьXML.ЗаписатьОбъявлениеXML(); ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения(); ЗаписьСообщения.НачатьЗапись(ЗаписьXML, УзелОбмена); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance"); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/data"); ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(УзелОбмена, ЗаписьСообщения.НомерСообщения); Пока ВыборкаИзменений.Следующий() Цикл Данные = ВыборкаИзменений.Получить(); // Если перенос данных не нужен, то, возможно, необходимо записать удаление данных Если Не НуженПереносДанных(Данные, УзелОбмена) Тогда // Получаем значение с возможным удалением данных УдалениеДанных(Данные); КонецЕсли; // Записываем данные в сообщение ЗаписатьДанные(ЗаписьXML, Данные); КонецЦикла; ЗаписьСообщения.ЗакончитьЗапись(); Возврат Новый ХранилищеЗначения(ЗаписьXML.Закрыть(), Новый СжатиеДанных(9)); Мне нужно его изменить так, чтобы записывались все желементы справочника, не важно, были ли они изменены. Попытался сделать так(просто убрать информацию об обмене) ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку("UTF-8"); ЗаписьXML.ЗаписатьОбъявлениеXML(); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance"); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/data"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Пользователи.Ссылка |ИЗ | Справочник.Пользователи КАК Пользователи"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Попытка Пользователь = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект(); Исключение Сообщить(ОписаниеОшибки()); Продолжить; КонецПопытки; ЗаписатьДанные(ЗаписьXML, Пользователь); КонецЦикла; Возврат Новый ХранилищеЗначения(ЗаписьXML.Закрыть(), Новый СжатиеДанных(9)); Пишет ошибку, когда начинает записывать соответствие пространства имен. Как побороть ошибку и может кто кинет пример как записать все элементы справочника в XML. |
|||
1
Armando
23.02.16
✎
14:38
|
Можно XDTO. Пишу наугад:
Выборка = Справочники.Пользователи.Выбрать(); Пока Выборка.Следующий() Цикл ЗаписьXML = Новый ЗаписьXML; СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Выборка.ПолучитьОбъект()); КонецЦикла; надеюсь ход мысли понятен |
|||
2
breezee
23.02.16
✎
14:41
|
(1) Ок, понял. Спасибо. Неудобно немного что в XML нельззя писать без какого либо объекта. Наверное так не сделали, потому что тогда было бы не понятно как читать XML. Ладно, не важно. Еще раз спасибо
|
|||
3
Александр_
Тверь 23.02.16
✎
14:55
|
(2) а что значит без какого либо объекта? Странная фраза.
Можешь открыть текстовый файл и писать туда напрямую что хочешь и как хочешь (в том числе и XML). Можешь через записьXML писать что хошочешь. Посмотри синтаксис помошник. |
|||
4
breezee
23.02.16
✎
15:13
|
(3) Спасибо, наверное проще писать сразу в XML. Нашел пример с XDTO. Может кому поможет. Оставлю здесь. В примере я получаю все данные из справочника пользователи, помещаю их в ТЗ и ТЗ передаю в процедуру, функция, которая пишет их в XML и XML возвращает
Функция СформироватьПользователей() Экспорт Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Пользователи.Ссылка, | Пользователи.Наименование |ИЗ | Справочник.Пользователи КАК Пользователи"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выгрузить(); СериализованнаяСтруктураДанных = Сериализовать(ВыборкаДетальныеЗаписи); Возврат Новый ХранилищеЗначения(СериализованнаяСтруктураДанных, Новый СжатиеДанных(9)); КонецФункции Функция Сериализовать(ОбъектСериализации) ДеревоВОбъектеXDTO = СериализаторXDTO.ЗаписатьXDTO(ОбъектСериализации); МойXML = Новый ЗаписьXML; МойXML.УстановитьСтроку(); ФабрикаXDTO.ЗаписатьXML(МойXML, ДеревоВОбъектеXDTO); Возврат МойXML.Закрыть(); КонецФункции |
|||
5
breezee
23.02.16
✎
15:21
|
Бл*, я только что получил всех пользователей после того как авторизовался. Как мне получить всех пользователей до авторизации?
|
|||
6
Cyberhawk
23.02.16
✎
15:27
|
Справочник "Пользователи" и пользователи ИБ - это разные вещи.
К справочнику (как и к любому объекту БД) ты имеешь доступ только после авторизации. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |