Версия для печати темы (https://pro1c.org.ua/index.php?s=9d20601995d481657d23105125ffd081&showtopic=19930)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Работа с XDS в XML

Автор: Zlyukka 24.09.14, 15:00

Как указать с какой схемой работать при выгрузке данных в XML

Автор: Petre 24.09.14, 15:17

Что такое "выгрузка данных в XML"?

Автор: Zlyukka 24.09.14, 15:29

Для регистрации налоговых накладных налоговая инспекция убедительно просит отправлять их в формате xml при этом требует использовать схему J1201005.xsd

Автор: Zlyukka 25.09.14, 12:10

Примерное решение

Процедура КнопкаВыполнитьНажатие(Кнопка)
    ИмяСхемы="D:\Отчеты\Схемы\pharmacy";
    ИмяФайла="D:\Rez\test.xml";

    
    //-----------------------------Попітка создать парсер
    Попытка        
        ДокЭкспорт=Новый COMОбъект("Msxml2.DOMDocument.4.0");
        Сообщить("Парсер подключен");
    Исключение
        Сообщить("Парсер не установлен");
    КонецПопытки;
    pi =ДокЭкспорт.createProcessingInstruction("xml", "version=""1.0"" encoding=""windows-1251""");
    ДокЭкспорт.insertBefore(pi, ДокЭкспорт.childNodes.item(0));
    элДокумента = ДокЭкспорт.createElement("Apteki");
    ДокЭкспорт.appendChild(элДокумента);
    
    элДокумента.setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema");
    элДокумента.setAttribute("xsi:noNamespaceSchemaLocation",ИмяСхемы+".xsd");
    //------Создоем Элемент тела
    Тело=ДокЭкспорт.createElement("Apteka");
    //------Заполняем елемент тела    
    элДокумента.appendChild(Тело);    
    
    ТТочеи=Справочники.ТорговыеТочки.Выбрать();    
    Пока ТТочеи.Следующий() Цикл
        //------Создаем поле ID/Adres
        Если ТТочеи.ЭтоГруппа Тогда продолжить КонецЕсли;
        ИД=ДокЭкспорт.createElement("ID");        
        Адрес=ДокЭкспорт.createElement("Adres");
        //------Добавляем в тело XML документа строки для полей ИЛ и Адрес
        Тело.appendChild(ИД);
        Тело.appendChild(Адрес);
        //------Заполняем строки значениями
        ИД.text = ТТочеи.Код;
        Адрес.text = СокрЛП(ТТочеи.Адрес);           
    КонецЦикла;                     
    ДокЭкспорт.Save(ИмяФайла);        
    
    Попытка
        фОшибка = 0;
        
        ДокЭкспорт.validateOnParse = Истина;
        ДокЭкспорт.async = Ложь;
        ДокЭкспорт.Load(ИмяФайла);
        
        Error = ДокЭкспорт.parseError;
        Если Error.errorCode<>0 Тогда
            // есть ошибка
            фОшибка = 1;
            Сообщить(НСтр("ru = 'Ошибка:'; uk = 'Помилка:'"));
            Сообщить(Error.reason);
        КонецЕсли;
        
    Исключение
        фОшибка = 1;
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
    
    Сообщить(НСтр("ru='-- Проверка завершена!';uk='-- Перевірка завершена!'"), ?(фОшибка = 1,СтатусСообщения.Важное, СтатусСообщения.Обычное));    
КонецПроцедуры

Автор: Veizdem 30.10.14, 11:29

Это все хорошо и красиво, а что делать если у меня нет COMОбъект("Msxml2.DOMDocument.4.0")? Первый же вопрос, который будет мне задан "как это нет?" или что-то в этом роде, отвечу заранее - LINUX. Вот как то же самое реализовать именно на Linux?

Автор: alex040269 30.10.14, 12:30

http://pro1c.org.ua/redirect.php?http://alah-my.blogspot.com/2010/12/1-77-wine-ubuntu-1004.html

Автор: Veizdem 30.10.14, 12:47

Цитата(alex040269 @ 30.10.14, 12:30) http://pro1c.org.ua/index.php?act=findpost&pid=92679

А зачем столь большое извращение с wine, если есть клиент и сервер родные? Меня интересует выгрузка xml, использование xsd именно в нативном варианте. Вряд ли 1С выпускала бы клиент и сервер под linux, без поддержи COM объектов, чтобы все-равно все ставили версию windows под wine.

У меня сервер 1С на debian крутится, БД PostgreSQL на CentOS лежит, на клиентах всех Kubuntu стоит.

Автор: Vofka 30.10.14, 14:04

От дальнейшего офтопа (учитывая что есть тема http://pro1c.org.ua/index.php?showtopic=20498&hl=) эту тему закрываю.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua