Имя: Пароль:
1C
1С v8
XML выгрузка
, ,
0 Стажер_1С
 
09.06.18
09:28
Добрый день всем!
Подскажите какой-нибудь материал,где описана как создать обработку выгрузки в xml файл из 1с, использую xdto пакет
1 FIXXXL
 
09.06.18
09:31
Лови, стажер!

&НаСервере
Процедура ХДТОвФайл(ПолныйПуть, ОбъектХДТО)
    
    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.ОткрытьФайл(ПолныйПуть);
    ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ОбъектХДТО);
    ЗаписьXML.Закрыть();    
    
КонецПроцедуры
2 igorPetrov
 
09.06.18
09:33
(1) Круто, чо...
3 Стажер_1С
 
09.06.18
09:33
Спасибо,то есть тут он открывает файл xml и при загрузки создает схему xml и загружает его в пакет  xdto?
4 FIXXXL
 
09.06.18
09:34
(3) тут он пишет в файл заранее созданный ОбъектХДТО
5 Стажер_1С
 
09.06.18
09:35
Мне надо с нуля создать пакет xdto, со своими типами, и потом создать обработку, которая будет выгружать данные и формировать xml файл, определенной структуры
6 igorPetrov
 
09.06.18
09:36
(5) Создавай. Можно.
7 FIXXXL
 
09.06.18
09:36
(5) создавай
будут вопросы - пиши
тебе для каких целей это надо?
8 Стажер_1С
 
09.06.18
09:39
Я знаю, что можно)
Нужно написать выгрузку данных из 1с в xml. Там большой набор данных- контрагенты,номенклатура,документы, остатки.
Потом данный xml файл будет загружаться на сайт. Пример того как должен выглядит xml файл есть. Поэтому мне надо создать свой пакет xdto, чтобы иметь структуру такую же как в файле. Я просто не знаю с чего начать
9 RomaH
 
naïve
09.06.18
09:43
(8) начни с пакета - пару атрибутов опиши
потом сделай выгрузку для них
10 dvva
 
09.06.18
09:44
сначала определись структура хдто пакета будет жесткая или нет (имеет смысл внедрять в конфу или нет)
11 Стажер_1С
 
09.06.18
09:45
А можно ее внешней как то сделать?
12 quest
 
09.06.18
09:45
Поищи на инфостарте "XDTO это просто"
13 quest
 
09.06.18
09:46
(11) да.
14 Стажер_1С
 
09.06.18
09:49
Да мне нельзя меня конф,все внешнее, то есть в этой статье описано как это сделать?
15 hhhh
 
09.06.18
09:50
(8) в принципе xdto тут у тебя лишнее звено в цепочке. Пиши просто данные в файл, без всяких xdto.
16 RomaH
 
naïve
09.06.18
09:51
(15) это грустно и одиноко
17 Стажер_1С
 
09.06.18
09:53
Просто выгрузку в xml?Хорошо,а как мне описать какой должен быть файл,в смысле структуру?Мне на работе сказали через пакет делать
18 quest
 
09.06.18
09:54
(14) нет в статье не написано как сделать твою выгрузку. там просто дано объяснение что такое xdto, для чего используется, как работать с ним.
Конфу для работы с пакетом не надо менять, пакет  можно создать как програмно (кодом), так и на основании описания из файла xsd
19 RomaH
 
naïve
09.06.18
10:02
(17) правильно сказали
если конфу не менять - рисуй схему
в конфигураторе набираешь пакет и экспортируй в xsd
или если есть другой конструктор - используй его
20 RomaH
 
naïve
09.06.18
10:04
но я бы начал с вопроса - назачем вам XML
JSON лучше
21 RomaH
 
naïve
09.06.18
10:13
22 FIXXXL
 
09.06.18
10:26
(17) у тебя есть уже xsd с необходимой структурой?
если есть, почитай СП на тему СоздатьФабрикуXDTO (CreateXDTOFactory)
если нет и нельзя конфу менять, можно в чистой конфе создать XDTO-пакет необходимой структуры, ПКМ - Экспорт ХМЛ-схемы и получившийся xsd-файл использовать в СоздатьФабрикуXDTO(ТвойXSD)
далее через получившиесю фабрику набиваешь данными ОбъектХДТО и сохраняешь в ХМЛ-файл

весь гемморой - описать xsd и написать алгоритмы выгрузки данных...
23 Стажер_1С
 
09.06.18
10:48
Спасибо большое,буду читать и делать. Конф буду менять все таки.Добавлю свой пакет xdto,со своими значениями.А там посмотрю как будет.Если что напишу сюда,спасибо большое вам всем!
24 Стажер_1С
 
09.06.18
10:49
xml потому что заказчику надо в таком формате
25 FIXXXL
 
09.06.18
11:11
(23) выше писал, необязательно конфу менять, пакет описать можно в любой тестовой конфе
можно даже сварганить внешнюю обработку, поместив выгруженный из тестовой конфы xsd в макет обработки
26 Стажер_1С
 
09.06.18
12:09
Смотрите есть пакет xdro, прописала заполнения,выдает ошибку.
Текст кода:
ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML("UTF-8", "1.0", Ложь);
    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.ОткрытьФайл(путь, ПараметрыЗаписиXML);
    ЗаписьXML.ЗаписатьОбъявлениеXML();
    
    ТипЗначенияXDTO = ФабрикаXDTO.Тип("Выгрузка", "Номенклатура");
    НоменклатураXDTO = ФабрикаXDTO.Создать(ТипЗначенияXDTO);    

    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    Номенклатура.Наименование КАК Наименование,
                   |    Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения
                   |ИЗ
                   |    Справочник.Номенклатура КАК Номенклатура
                   |ГДЕ
                   |    Номенклатура.ПометкаУдаления = ЛОЖЬ";
    Запрос.УстановитьПараметр("Ссылка",Справочники.Номенклатура.НайтиПоКоду("00-000000001799"));
    Результат = Запрос.Выполнить().Выбрать();
    Пока Результат.Следующий() Цикл

        НоменклатураXDTO.Наименование = Результат.Наименование;
        НоменклатураXDTO.ЕдИзмерения = Строка(Результат.ЕдиницаИзмерения);

КонецЦикла;

ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, НоменклатураXDTO);

ЗаписьXML.Закрыть();
Сообщить("Создан файл ");

Ругается вот на это:

    
{ВнешняяОбработка.Тест_XML.Форма.Форма.Форма(24)}: Поле объекта недоступно для записи (Наименование)
        НоменклатураXDTO.Наименование = Результат.Наименование;
27 Стажер_1С
 
09.06.18
12:41
Разобралась в причине ошибки, надо было указать в свойстве: форма = атрибут