Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Работа с XDS в XML
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
Zlyukka
Как указать с какой схемой работать при выгрузке данных в XML
Petre
Что такое "выгрузка данных в XML"?
Zlyukka
Для регистрации налоговых накладных налоговая инспекция убедительно просит отправлять их в формате xml при этом требует использовать схему J1201005.xsd
Zlyukka
Примерное решение

Процедура КнопкаВыполнитьНажатие(Кнопка)
    ИмяСхемы="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
Это все хорошо и красиво, а что делать если у меня нет COMОбъект("Msxml2.DOMDocument.4.0")? Первый же вопрос, который будет мне задан "как это нет?" или что-то в этом роде, отвечу заранее - LINUX. Вот как то же самое реализовать именно на Linux?
alex040269
необходимо зарегистрироваться для просмотра ссылки
Veizdem
Цитата(alex040269 @ 30.10.14, 12:30) необходимо зарегистрироваться для просмотра ссылки
необходимо зарегистрироваться для просмотра ссылки

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

У меня сервер 1С на debian крутится, БД PostgreSQL на CentOS лежит, на клиентах всех Kubuntu стоит.
Vofka
От дальнейшего офтопа (учитывая что есть тема необходимо зарегистрироваться для просмотра ссылки эту тему закрываю.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.