Имя: Пароль:
1C
1С v8
Выгрузка в xml для Росздравнадзора
0 masi
 
30.08.22
12:15
Всем добрый день, появилась новая для меня задача, поэтому не судите строго...

Необходимо срочно сделать выгрузку для Росздравнадзора из УТ 10.3 по импортным поступлениям, все что прислал получатель образец файла, он ниже.

Насколько понял тут файл по xsd схеме и поэтому нужно сначала получить у Росздавнадзора xsd- схему и уже по ней писать выгрузку или же все это не так и можно без схемы сделать выгрузку файла?

Как обычно бывает в таких случаях выгрузка нужна уже вчера...



****
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="urn://smev-roszdravnadzor-ru/EPGU/MedDevicesCirculationInfo/1.0.0" targetNamespace="urn://smev-roszdravnadzor-ru/EPGU/MedDevicesCirculationInfo/1.0.0" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:element name="BatchInfo" type="tns:BatchInfoType"/>
    <xs:complexType name="BatchInfoType">
        <xs:annotation>
            <xs:documentation xml:lang="ru">Сведения о вводе в гражданский оборот медицинских изделий</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="NotificationInfo" type="tns:NotificationInfoType" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:attribute name="BatchId" type="tns:UUID" use="required">
            <xs:annotation>
                <xs:documentation xml:lang="ru">Идентификация пакета, включающего несколько уведомлений о вводе в гражданский оборот</xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="NotificationInfoType">
        <xs:annotation>
            <xs:documentation xml:lang="ru">Сведения о вводе в гражданский оборот медицинских изделий</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="RegisterInfo" type="tns:RegisterInfoType"/>
        </xs:sequence>
        <xs:attribute name="NotificationId" type="tns:UUID" use="required">
            <xs:annotation>
                <xs:documentation xml:lang="ru">Идентификация уведомления о вводе в гражданский оборот</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="NotificationKind" type="tns:NotificationKindType" use="required">
            <xs:annotation>
                <xs:documentation xml:lang="ru">Тип уведомления о вводе в гражданский оборот</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="NotificationParent" type="tns:UUID" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="ru">Идентификация уведомления о вводе в гражданский оборот, сведения которого требуется скорректировать</xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="RegisterInfoType">
        <xs:annotation>
            <xs:documentation xml:lang="ru">Сведения о госудраственной регистрации медицинского изделия в Российской Федерации</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="MedDevicesId" type="xs:long">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Идентификация модели медицинского изделия</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="IsImported" type="tns:IsImportedType"/>
            <xs:element name="MedDevicesInfo" type="tns:MedDevicesInfoType" maxOccurs="unbounded"/>
            <xs:element name="DocTransferInfo" type="tns:DocType" minOccurs="0">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Сведения об универсальном передаточном документе</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="DeclCustomInfo" type="tns:DocType" minOccurs="0">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Сведения о таможенной декларации</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="MedDevicesComplectsInfo" type="tns:MedDevicesComplectsInfoType" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="MedDevicesInfoType">
        <xs:annotation>
            <xs:documentation xml:lang="ru">Сведения о медицинском изделии</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="ReleaseDate" type="xs:date">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Дата ввода в гражданский оборот</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="ManufactureDate" type="tns:DateInfoType">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Дата производства</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="ExpirationDate" type="tns:DateInfoType">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Срок годности (службы)</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="SerialNumber" type="tns:string-255" minOccurs="0">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Номер серии</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="PartNumber" type="tns:string-255" minOccurs="0">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Номер партии</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="FactoryNumber" type="tns:string-255" minOccurs="0">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Заводской номер</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Quantity" type="xs:int">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Общее количество</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Measure" type="tns:MeasureType">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Цифровой код единицы измерения (справочник ОКЕИ)</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="MedDevicesInfoId" type="tns:UUID" use="required">
            <xs:annotation>
                <xs:documentation xml:lang="ru">Идентификация сведений о медицинском изделии</xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="MedDevicesComplectsInfoType">
        <xs:annotation>
            <xs:documentation xml:lang="ru">Сведения о составе / комплектации / перечне принадлежностей для медицинского изделия</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Label" type="tns:string-65535">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Наименование</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="ManufactureDate" type="tns:DateInfoType">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Дата производства</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="ExpirationDate" type="tns:DateInfoType">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Срок годности (службы)</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="SerialNumber" type="tns:string-255" minOccurs="0">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Номер серии</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="PartNumber" type="tns:string-255" minOccurs="0">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Номер партии</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="FactoryNumber" type="tns:string-255" minOccurs="0">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Заводской номер</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Quantity" type="xs:int">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Общее количество</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Measure" type="tns:MeasureType">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Цифровой код единицы измерения (справочник ОКЕИ)</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="MedDevicesComplectsInfoId" type="tns:UUID" use="required">
            <xs:annotation>
                <xs:documentation xml:lang="ru">Идентификация сведений о составе / комплектации / перечне принадлежностей для медицинского изделия</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="MedDevicesComplectsKind" type="tns:MedDevicesComplectsKindType" use="required" />
    </xs:complexType>
    <xs:simpleType name="NotificationKindType">
        <xs:annotation>
            <xs:documentation xml:lang="ru">Тип уведомления</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:int">
            <xs:enumeration value="1">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Первичное предоставление</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="2">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Корректировка</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="MedDevicesComplectsKindType">
        <xs:annotation>
            <xs:documentation xml:lang="ru">Тип сведений о составе / комплектации / перечне принадлежностей для медицинского изделия</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:int">
            <xs:enumeration value="1">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Состав</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="2">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Комплектация</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="3">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Принадлежности</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="DateInfoType">
        <xs:annotation>
            <xs:documentation xml:lang="ru">Сведения о дате или временном периоде</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:choice>
                <xs:element name="Date" type="xs:date">
                    <xs:annotation>
                        <xs:documentation xml:lang="ru">Дата</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="Period" type="tns:PeriodType">
                    <xs:annotation>
                        <xs:documentation xml:lang="ru">Период (формат ГГГГММ)</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="Duration" type="tns:DurationType">
                    <xs:annotation>
                        <xs:documentation xml:lang="ru">Длительность (количество лет / месяцев / дней)</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="Val" type="xs:string" fixed="4">
                    <xs:annotation>
                        <xs:documentation xml:lang="ru">Период неограничен</xs:documentation>
                    </xs:annotation>
                </xs:element>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="DocType">
        <xs:annotation>
            <xs:documentation xml:lang="ru">Сведения о документе</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="DocNumber" type="tns:string-255">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Номер документа</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="DocDate" type="xs:date">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Дата документа</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="DocFile" type="tns:DocFileType"  minOccurs="0">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Сканированная копия документа</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="DocFileType">
        <xs:annotation>
            <xs:documentation xml:lang="ru">Текстовая информация, представленная в двоичной форме, с указанием формата данных</xs:documentation>
        </xs:annotation>
        <xs:simpleContent>
            <xs:extension base="xs:base64Binary">
                <xs:attribute name="mediaTypeCode" type="tns:string-255" use="required">
                    <xs:annotation>
                        <xs:documentation xml:lang="ru">Кодовое обозначение формата данных</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="name" type="tns:string-255" use="required">
                    <xs:annotation>
                        <xs:documentation xml:lang="ru">Имя файла</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:simpleType name="UUID">
        <xs:annotation>
            <xs:documentation xml:lang="ru">Идентификация позиции</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="IsImportedType">
        <xs:annotation>
            <xs:documentation xml:lang="ru">Медицинское изделие ввезено из-за границы?</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:int">
            <xs:enumeration value="1">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Нет</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="2">
                <xs:annotation>
                    <xs:documentation xml:lang="ru">Да</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="PeriodType">
        <xs:restriction base="xs:string">
            <xs:pattern value="\d{4}\d{2}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="DurationType">
        <xs:restriction base="xs:string">
            <xs:pattern value="[YMD]\d{1,}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="MeasureType">
        <xs:restriction base="xs:string">
            <xs:pattern value="\d{3,10}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="string-255">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="255" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="string-65535">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="65535" />
        </xs:restriction>
    </xs:simpleType>
</xs:schema>
***
1 RomaH
 
naïve
30.08.22
12:27
слушай- я делал через DOM
т.е. читал "пример" в DOM а потом собирал новый DOM уже с моими значениями
2 RomaH
 
naïve
30.08.22
12:33
как-то так:

    Обработка = РеквизитФормыВЗначение("Объект");
    
    ТекстШаблона = Обработка.ПолучитьМакет("СЭМД_4").ПолучитьТекст();
    ТекстШаблона = Обработка.ПолучитьМакет("СЭМД_5").ПолучитьТекст();
    
    ШаблонДОМ = ТФОМС_Обмен.ПолучитьПостроительDOM(ТекстШаблона);
    
    
    УзелДанныеОПациенте = ШаблонДОМ.ПолучитьЭлементыПоИмени("recordTarget")[0];
    
    УзелАвторДокумента = ШаблонДОМ.ПолучитьЭлементыПоИмени("author")[0];
    
    УзелОрганизацияВладелец = ШаблонДОМ.ПолучитьЭлементыПоИмени("custodian")[0];
    
    УзелОрганизацияПолучатель = ШаблонДОМ.ПолучитьЭлементыПоИмени("informationRecipient")[0];
    
    УзелЛицоПридавшееЮридическуюСилу = ШаблонДОМ.ПолучитьЭлементыПоИмени("legalAuthenticator")[0];
    
    УзелСведенияОИсточникеОплаты = ШаблонДОМ.ПолучитьЭлементыПоИмени("participant")[0];
    
    УзелВрачебнаяКомиссия = ШаблонДОМ.ПолучитьЭлементыПоИмени("documentationOf")[0];
    
    УзелТелоДокумента = ШаблонДОМ.ПолучитьЭлементыПоИмени("component")[0];
    
    
    ДокументПриемник = ТФОМС_Обмен.ПолучитьПостроительDOM(ТекстШаблона);

    УзелДокумента = ДокументПриемник.ДочерниеУзлы[1];
    
    ДочерниеУзлы = УзелДокумента.ДочерниеУзлы;

    МассивЛишнихУзлов = Новый Массив;
    
    Для Каждого Узел Из ДочерниеУзлы Цикл
        
        Если Узел.ИмяУзла = "title" Тогда
            Продолжить;
        КонецЕсли;
        
        Если Узел.ИмяУзла = "#comment" Тогда
            МассивЛишнихУзлов.Добавить(Узел);
            Продолжить;
        КонецЕсли;
        
        Если Узел.ЕстьДочерниеУзлы() Тогда
            МассивЛишнихУзлов.Добавить(Узел);
            Продолжить;
        КонецЕсли;
        
    КонецЦикла;
    
    Для Каждого Узел Из МассивЛишнихУзлов Цикл
        УзелДокумента.УдалитьДочерний(Узел);        
    КонецЦикла;
    
    ЗаполнитьИдентификаторДокумента(УзелДокумента,Объект.НаправлениеНаМСЭ);
    
    ЗаполнитьИдентификаторНабораВерсийДокумента(УзелДокумента,Объект.НаправлениеНаМСЭ);
    
    ЗаполнитьДатуДокумента(УзелДокумента,Объект.НаправлениеНаМСЭ);
    
    
    #Область Пациент
    
    ОчиститьОтКомментариев(УзелДанныеОПациенте);
    
    ЗаполнитьИдентификаторПациента(ШаблонДОМ, УзелДанныеОПациенте, Объект.НаправлениеНаМСЭ);
    
    ДанныеОПациенте = ДокументПриемник.ИмпортироватьУзел(УзелДанныеОПациенте,Истина);
    
    УзелДокумента.ДобавитьДочерний(ДанныеОПациенте);
3 RomaH
 
naïve
30.08.22
12:34
иначе все-то же самое, но через XDTO
4 masi
 
30.08.22
12:40
(3) подскажите, как можно с Вами связаться? написал на почту
5 RomaH
 
naïve
30.08.22
12:45
ну и насколько я понял в (0) XSD схема все-же
6 Гость из Мариуполя
 
гуру
30.08.22
14:26
(5) она самая и есть
вот тут еще можно посмотреть требования по заполнению реквизитов
https://www.roszdravnadzor.gov.ru/i/upload/files/Новости/Файлы/02.08.2022/Ввод%20в%20ГО%20МИ_Описание_сервиса_по_обмену%20(пакетная%20загрузка).docx
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.