А применение Urlencode (ну или printf('%u',ParamStr)) ко всей строке параметров закодирует и другие спецсимволы.

Тут мало того, что у всех участников этого действия тараканы, так они ещё и разные.

Модератор: Дед Пахом
Даже не сомневаюсь в этом. И ещё покупаете современные сервера для использование технологий.
Проверял, не работает. Ни в ansi, ни в utf8. Почему, хз. На выходе все равно получается стандартный urlencode, который почему-то некорректно передается в сервис. К слову, в postmen есть возможность конвертации запросов в синтаксис curl. И он тоже дает аналогичный код с параметром в urlencode вида function=%D0%A1%D0%A7%D0%A4%D0%94%D0%9E%D0%9F
Разумеется, кодируется только значение (слово СЧФДОП).Игорь Столяров писал(а): 28 Июнь 2025, 19:02 Конкретно в этом случае, проблема в том, что кодировать для Diadoc нужно только одно значение параметра с русскими буквами.
А применение Urlencode (ну или printf('%u',ParamStr)) ко всей строке параметров закодирует и другие спецсимволы.
Тут мало того, что у всех участников этого действия тараканы, так они ещё и разные.![]()
Авторизация в любом случае выполняется при каждом запросе к сервису. Стартовать внешний exe в виде процесса не такая затратная операция, дернуть 500кб из кеша. Создание временных файлов тоже, они маленькие. Сколько временных файлов создает винда, не задумывались? Я понимаю, что без файлов более экономично. Нафига - это проще и быстрее при отладке и сопровождении. Не надо думать, что пользователи только и делают, что обращаются к внешним серверам. У них это занимает, может, долю процента рабочего времени. Если это была бы не вспомогательная задача, то я бы подумал об оптимизации и использовании библиотеки.Игорь Столяров писал(а): 28 Июнь 2025, 19:11Даже не сомневаюсь в этом. И ещё покупаете современные сервера для использование технологий.
Но потом стартуете на нём десятки раз внешний EXE, c новой авторизацией на REST сервисе для каждой
операции и записью результата в текстовые файлы, с их последующей загрузкой для парса ...
Невольно напрашивается мой любимый вопрос. А нафига ?![]()
Не хотелось бы Вас огорчать в день такого великого достижения ... но нет.finsoftrz писал(а): 28 Июнь 2025, 19:30 Авторизация в любом случае выполняется при каждом запросе к сервису.
В чём проще ? Я сегодня за два часа получил список параметров и ответ сервиса,
Не хочу дискутировать, так как плохо понимаю, про что Вы пишите.Игорь Столяров писал(а): 28 Июнь 2025, 20:34Не хотелось бы Вас огорчать в день такого великого достижения ... но нет.finsoftrz писал(а): 28 Июнь 2025, 19:30 Авторизация в любом случае выполняется при каждом запросе к сервису.
Авторизация выполняется разово и далее уже идёт обмена GET / PUT и т.д.
Тут даже не вопрос о том, что это ресурсозатратно, купите ещё один сервер.
Когда Вы с одного IP адреса инициируете долбёжку REST авторизациями - он
начинает отвечать через time-out избегая перегрузки DOS атакой.
В чём проще ? Я сегодня за два часа получил список параметров и ответ сервиса,
с которым неработал несколько лет. Половина времени ушла на поиск и чтение справки.
А сопровождение текстовых строк запуска c параметрами будет через год супер-квестом.![]()
Ответ:curl -X POST -G "https://echo.free.beeceptor.com" --data-urlencode "param1=value 1" --data-urlencode "param2=ЙЦУКЕНГ"
{
"method": "POST",
"protocol": "https",
"host": "echo.free.beeceptor.com",
"path": "/?param1=value+1¶m2=%d0%99%d0%a6%d0%a3%d0%9a%d0%95%d0%9d%d0%93",
"ip": "86.122.441.8:00877",
"headers": {
"Host": "echo.free.beeceptor.com",
"User-Agent": "curl/8.13.0",
"Content-Length": "0",
"Accept": "*/*",
"Accept-Encoding": "gzip"
},
"parsedQueryParams": {
"param1": "value 1",
"param2": "ЙЦУКЕНГ"
},
"rawBody": "",
"warnings": [
"Missing Content-Type header for the POST request."
]
}
Код: Выделить всё
curl.exe -X GET "https://diadoc-api.kontur.ru/GetContent?typeNamedId=UniversalTransferDocument&function=СЧФДОП&version=utd970_05_03_01&titleIndex=1&contentType=SignerUserContractXsd" -H "Connection: Keep-Alive" -H "Authorization: DiadocAuth ddauth_api_client_id=api-d7...,ddauth_token=ObqDEqh...=" -o edo_diad_in.xml
Код: Выделить всё
curl.exe -X GET -G "https://diadoc-api.kontur.ru/GetContent" --data-urlencode "typeNamedId=UniversalTransferDocument" --data-urlencode "function=СЧФДОП" --data-urlencode "version=utd970_05_03_01" --data-urlencode "titleIndex=1" --data-urlencode "contentType=SignerUserContractXsd" -H "Connection: Keep-Alive" -H "Authorization: DiadocAuth ddauth_api_client_id=api-d7...,ddauth_token=ObqDEqh...=" -o edo_diad_in.xml
Код: Выделить всё
Cannot find sign content at coordinates TypeNamedId=UniversalTransferDocument, Function=╤╫╘─╬╧, Version=utd970_05_03_01, TitleIndex=1
Код: Выделить всё
curl.exe -X GET "https://diadoc-api.kontur.ru/GetContent?typeNamedId=UniversalTransferDocument&function=%D0%A1%D0%A7%D0%A4%D0%94%D0%9E%D0%9F&version=utd970_05_03_01&titleIndex=1&contentType=SignerUserContractXsd" -H "Authorization: DiadocAuth ddauth_api_client_id=api-d7...,ddauth_token=ObqDEqh...=" -o edo_diad_in.xml
Код: Выделить всё
Cannot find sign content at coordinates TypeNamedId=UniversalTransferDocument, Function=A1A7A4949E9F, Version=utd970_05_03_01, TitleIndex=1
Код: Выделить всё
curl.exe -X GET "https://diadoc-api.kontur.ru/GetContent?typeNamedId=UniversalTransferDocument&function=%%D0%%A1%%D0%%A7%%D0%%A4%%D0%%94%%D0%%9E%%D0%%9F&version=utd970_05_03_01&titleIndex=1&contentType=SignerUserContractXsd" -H "Authorization: DiadocAuth ddauth_api_client_id=api-d7...,ddauth_token=ObqDEqh...=" -o edo_diad_in.xml
Код: Выделить всё
<?xml version="1.0" encoding="windows-1251"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Signers">
<xs:complexType>
<xs:sequence>
<xs:element name="Signer" type="Signer" />
</xs:sequence>
<xs:attribute name="BoxId" type="guid">
<xs:annotation>
<xs:documentation>Идентификатор ящика организации</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:complexType name="Signers">
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Signer" type="Signer" />
</xs:sequence>
<xs:attribute name="BoxId" type="guid">
<xs:annotation>
<xs:documentation>Идентификатор ящика организации</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="Signer">
<xs:sequence>
<xs:element minOccurs="0" name="Certificate" type="Certificate" />
<xs:element minOccurs="0" name="Fio" type="Fio" />
<xs:element minOccurs="0" name="Position">
<xs:annotation>
<xs:documentation>Должность</xs:documentation>
<xs:documentation>Один из элементов является обязательным</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="string255z">
<xs:attribute name="PositionSource" use="required">
<xs:annotation>
<xs:documentation>Автоматическое заполнение должности из настроек сотрудника указанных в сервисе</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Employee">
<xs:annotation>
<xs:documentation>
<xs:annotation xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:documentation>Первым шагом пытается сформировать должность из данных по сотруднику в сервисе</xs:documentation>
<xs:documentation>Если данные в сервисе не найдены, то значение будет взято из значения в элементе Position</xs:documentation>
<xs:documentation>Если данные в сервисе не найдены и в элементе Position пустое значение, то атрибут в конечном файле не сформируется</xs:documentation>
</xs:annotation>
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="Certificate">
<xs:annotation>
<xs:documentation>
<xs:annotation xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:documentation>Первым шагом пытается сформировать должность из данных по сотруднику из сертификата</xs:documentation>
<xs:documentation>Если данные в сертификате не найдены, то значение будет взято из значения в элементе Position</xs:documentation>
<xs:documentation>Если данные в сертификате не найдены и в элементе Position пустое значение, то атрибут в конечном файле не сформируется</xs:documentation>
</xs:annotation>
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="StorageByTitleTypeId">
<xs:annotation>
<xs:documentation>
<xs:annotation xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:documentation>Используется для типов @970 формата. Для остальных - игнорируется</xs:documentation>
<xs:documentation>Для использования данного варианта формирования должности необходимо заполнить элемент Certificate</xs:documentation>
<xs:documentation>Первым шагом пытается сформировать должность из данных, сохраненных с помощью метода ExtendedSignerDetails для указанного сертификата и documentTitleType</xs:documentation>
<xs:documentation>Если данные в сервисе не найдены, то значение будет взято из значения в элементе Position</xs:documentation>
<xs:documentation>Если данные в сервисе не найдены и в элементе Position пустое значение, то атрибут в конечном файле не сформируется</xs:documentation>
</xs:annotation>
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="Manual">
<xs:annotation>
<xs:documentation>Используется для ручного заполнения должности</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="SignerAdditionalInfo">
<xs:annotation>
<xs:documentation>
<xs:annotation xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:documentation>Используется для типов @970 и @405 форматов. Для остальных - игнорируется</xs:documentation>
<xs:documentation>ДопСведПодп - Дополнительные сведения о подписанте</xs:documentation>
</xs:annotation>
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="string255z">
<xs:attribute name="SignerAdditionalInfoSource" use="required">
<xs:annotation>
<xs:documentation>Автоматическое заполнение дополнительных сведений из настроек указанных в сервисе</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="StorageByTitleTypeId">
<xs:annotation>
<xs:documentation>
<xs:annotation xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:documentation>Используется для типов @970 формата. Для остальных - игнорируется</xs:documentation>
<xs:documentation>Для использования данного варианта формирования дополнительных сведений необходимо заполнить элемент Certificate</xs:documentation>
<xs:documentation>Первым шагом пытается сформировать дополнительные сведения из данных, сохраненных с помощью метода ExtendedSignerDetails для указанного сертификата и documentTitleType</xs:documentation>
<xs:documentation>Если данные в сервисе не найдены, то значение будет взято из значения в элементе SignerAdditionalInfo</xs:documentation>
<xs:documentation>Если данные в сервисе не найдены и в элементе пустое значение SignerAdditionalInfo, то атрибут в конечном файле не сформируется</xs:documentation>
</xs:annotation>
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="Manual">
<xs:annotation>
<xs:documentation>Используется для ручного заполнения дополнительных сведений</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="PowerOfAttorney" type="PowerOfAttorney" />
</xs:sequence>
<xs:attribute name="SignerStatus">
<xs:annotation>
<xs:documentation>
<xs:annotation xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:documentation>Используется для типов @405 и @691 форматов. Для остальных - игнорируется</xs:documentation>
<xs:documentation>СтатПодп - Статус подписанта</xs:documentation>
</xs:annotation>
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="1" />
<xs:enumeration value="1">
<xs:annotation>
<xs:documentation>Лицо, имеющее полномочия на подписание документа без доверенности</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="2">
<xs:annotation>
<xs:documentation>Лицо, имеющее полномочия на подписание документа на основании доверенности в электронной форме</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="3">
<xs:annotation>
<xs:documentation>Лицо, имеющее полномочия на подписание документа на основании доверенности в бумажном виде</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="SignatureType">
<xs:annotation>
<xs:documentation>ТипПодпис - Тип подписи</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="1" />
<xs:enumeration value="1">
<xs:annotation>
<xs:documentation>Усиленная квалифицированная электронная подпись</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="2">
<xs:annotation>
<xs:documentation>Простая электронная подпись</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="3">
<xs:annotation>
<xs:documentation>Усиленная неквалифицированная электронная подпись</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="SigningDate" type="date">
<xs:annotation>
<xs:documentation>
<xs:annotation xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:documentation>Используется для типов @970 формата. Для остальных - игнорируется</xs:documentation>
<xs:documentation>ДатаПодДок - Дата подписания документа</xs:documentation>
</xs:annotation>
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SignerPowersConfirmationMethod">
<xs:annotation>
<xs:documentation>
<xs:annotation xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:documentation>Используется для типов @970 и @405 форматов. Для остальных - игнорируется</xs:documentation>
<xs:documentation>СпосПодтПолном - Способ подтверждения полномочий представителя на подписание документа</xs:documentation>
</xs:annotation>
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="1" />
<xs:enumeration value="1">
<xs:annotation>
<xs:documentation>В соответствии с данными, содержащимися в электронной подписи</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="2">
<xs:annotation>
<xs:documentation>В соответствии с доверенностью в электронной форме в машиночитаемом виде, если представление доверенности осуществляется посредством включения в каждый пакет электронных документов, подписываемых представителем</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="3">
<xs:annotation>
<xs:documentation>В соответствии с доверенностью в электронной форме в машиночитаемом виде, если представление доверенности осуществляется из информационной системы. При этом необходимая информация для запроса доверенности из информационной системы, указана в электронном документе</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="4">
<xs:annotation>
<xs:documentation>В соответствии с доверенностью в электронной форме в машиночитаемом виде, если представление доверенности осуществляется из информационной системы. При этом необходимая информация для запроса доверенности из информационной системы, представляется способом, отличным от указания в электронном документе</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="5">
<xs:annotation>
<xs:documentation>В соответствии с доверенностью в форме документа на бумажном носителе</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="6">
<xs:annotation>
<xs:documentation>Иное</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:complexType name="Certificate">
<xs:attribute name="CertificateThumbprint" type="string100" />
<xs:attribute name="CertificateBytes" type="xs:base64Binary" />
</xs:complexType>
<xs:complexType name="PowerOfAttorney">
<xs:sequence>
<xs:element minOccurs="0" name="Electronic" type="Electronic">
<xs:annotation>
<xs:documentation>Электронная доверенность</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="Paper" type="Paper">
<xs:annotation>
<xs:documentation>Бумажная доверенности</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Electronic">
<xs:sequence>
<xs:choice>
<xs:element name="Storage" type="Storage">
<xs:annotation>
<xs:documentation>Автоматическое заполнение информации по доверенности на основе номера и ИНН</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Manual" type="Manual">
<xs:annotation>
<xs:documentation>Ручное заполнение данных доверенности</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Storage">
<xs:sequence>
<xs:element minOccurs="0" name="FullId">
<xs:complexType>
<xs:attribute name="RegistrationNumber" type="guid" use="required">
<xs:annotation>
<xs:documentation>Номер доверенности</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="IssuerInn" type="inn" use="required">
<xs:annotation>
<xs:documentation>ИНН организации, выдавшей доверенность</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="UseDefault" use="required">
<xs:annotation>
<xs:documentation>Автоматическое заполнение информации на основе доверенности, используемой сотрудником по умолчанию</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="true" />
<xs:enumeration value="false" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:complexType name="Manual">
<xs:attribute name="RegistrationNumber" type="guid">
<xs:annotation>
<xs:documentation>Номер доверенности</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="RegistrationDate" type="date">
<xs:annotation>
<xs:documentation>Дата совершения (выдачи) доверенности</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="InternalNumber" type="string50">
<xs:annotation>
<xs:documentation>Внутренний регистрационный номер доверенности</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="InternalDate" type="date">
<xs:annotation>
<xs:documentation>Дата внутренней регистрации доверенности</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SystemId" type="string500">
<xs:annotation>
<xs:documentation>Идентифицирующая информация об информационной системе, в которой осуществляется хранение доверенности</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SystemUrl" type="string500">
<xs:annotation>
<xs:documentation>
<xs:annotation xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:documentation>Используется для типов @970 формата. Для остальных - игнорируется</xs:documentation>
<xs:documentation>Сведения в формате URL об информационной системе, которая предоставляет техническую возможность получения информации о доверенности</xs:documentation>
</xs:annotation>
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="Paper">
<xs:annotation>
<xs:documentation>Сведения о доверенности, используемой для подтверждения полномочий на бумажном носителе</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element minOccurs="0" name="Person" type="Fio">
<xs:annotation>
<xs:documentation>Фамилия, имя, отчество (при наличии) лица, подписавшего доверенность</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="InternalNumber" type="string50">
<xs:annotation>
<xs:documentation>Внутренний регистрационный номер доверенности</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="RegistrationDate" type="date">
<xs:annotation>
<xs:documentation>Дата совершения (выдачи) доверенности</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="IssuerInfo" type="string1000">
<xs:annotation>
<xs:documentation>Сведения о доверителе</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="Fio">
<xs:attribute name="LastName" type="string60" use="required">
<xs:annotation>
<xs:documentation>Фамилия</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="FirstName" type="string60" use="required">
<xs:annotation>
<xs:documentation>Имя</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="MiddleName" type="string60">
<xs:annotation>
<xs:documentation>Отчество</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:simpleType name="string1f">
<xs:restriction base="xs:string">
<xs:length value="1" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string2">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="2" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string3f">
<xs:restriction base="xs:string">
<xs:length value="3" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string3">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="3" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string4f">
<xs:restriction base="xs:string">
<xs:length value="4" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string4">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="4" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string5f">
<xs:restriction base="xs:string">
<xs:length value="5" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string8">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="8" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string9f">
<xs:restriction base="xs:string">
<xs:length value="9" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string10">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="10" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string11f">
<xs:restriction base="xs:string">
<xs:length value="11" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string13f">
<xs:restriction base="xs:string">
<xs:length value="13" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string13z">
<xs:restriction base="xs:string">
<xs:minLength value="0" />
<xs:maxLength value="13" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string14f">
<xs:restriction base="xs:string">
<xs:length value="14" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string15z">
<xs:restriction base="xs:string">
<xs:minLength value="0" />
<xs:maxLength value="15" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string16">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="16" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string20">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="20" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string20f">
<xs:restriction base="xs:string">
<xs:length value="20" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string24">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="24" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string27f">
<xs:restriction base="xs:string">
<xs:length value="27" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string29">
<xs:restriction base="xs:string">
<xs:maxLength value="29" />
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string30">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="30" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string36">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="36" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string40">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="40" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string50">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string55">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="55" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string60">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="60" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string100">
<xs:restriction base="xs:string">
<xs:maxLength value="100" />
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string100z">
<xs:restriction base="xs:string">
<xs:maxLength value="100" />
<xs:minLength value="0" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string120">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="120" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string128">
<xs:restriction base="xs:string">
<xs:maxLength value="128" />
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string140z">
<xs:restriction base="xs:string">
<xs:minLength value="0" />
<xs:maxLength value="140" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string128z">
<xs:restriction base="xs:string">
<xs:maxLength value="128" />
<xs:minLength value="0" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string200">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="200" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string255z">
<xs:restriction base="xs:string">
<xs:minLength value="0" />
<xs:maxLength value="255" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string255">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="255" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string256">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="256" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string275z">
<xs:restriction base="xs:string">
<xs:minLength value="0" />
<xs:maxLength value="275" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string500">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="500" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string510">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="510" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string1000">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="1000" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string1000z">
<xs:restriction base="xs:string">
<xs:minLength value="0" />
<xs:maxLength value="1000" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string2000">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="2000" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string2000z">
<xs:restriction base="xs:string">
<xs:minLength value="0" />
<xs:maxLength value="2000" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="string10000">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="10000" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="inn">
<xs:restriction base="xs:string">
<xs:minLength value="10" />
<xs:maxLength value="12" />
<xs:pattern value="([0-9]{1}[1-9]{1}|[1-9]{1}[0-9]{1})([0-9]{10}|[0-9]{8})" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="guid">
<xs:restriction base="xs:string">
<xs:pattern value="([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})|(\{[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\})" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="okei">
<xs:annotation>
<xs:documentation>Код из Общероссийского классификатора единиц измерения</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:minLength value="3" />
<xs:maxLength value="4" />
<xs:pattern value="[0-9]{3}" />
<xs:pattern value="[0-9]{4}" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="okv">
<xs:annotation>
<xs:documentation>Код из Общероссийского классификатора валют</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:length value="3" />
<xs:pattern value="[0-9]{3}" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="okpd">
<xs:annotation>
<xs:documentation>Код товара по ОКДП 2</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:minLength value="2" />
<xs:maxLength value="12" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ogrn">
<xs:annotation>
<xs:documentation>ОГРН - ОГРНИП</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:minLength value="13" />
<xs:maxLength value="15" />
<xs:pattern value="[0-9]{13,15}" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="kpp">
<xs:annotation>
<xs:documentation>Код причины постановки на учет (КПП) - 5 и 6 знаки от 0-9 и A-Z</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:length value="9" />
<xs:pattern value="([0-9]{1}[1-9]{1}|[1-9]{1}[0-9]{1})([0-9]{2})([0-9A-Z]{2})([0-9]{3})" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="date">
<xs:annotation>
<xs:documentation>Дата в формате ДД.ММ.ГГГГ (01.01.1800 - 31.12.2099)</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:length value="10" />
<xs:pattern value="(((0[1-9]{1}|[1-2]{1}[0-9]{1})\.(0[1-9]{1}|1[0-2]{1}))|((30)\.(01|0[3-9]{1}|1[0-2]{1}))|((31)\.(01|03|05|07|08|10|12)))\.(18[0-9]{2}|19[0-9]{2}|20[0-9]{2})" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="time">
<xs:annotation>
<xs:documentation>Время в формате ЧЧ.ММ.СС</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:length value="8" />
<xs:pattern value="([0-1]{1}[0-9]{1}|2[0-3]{1})\.([0-5]{1}[0-9]{1})\.([0-5]{1}[0-9]{1})" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="datetime">
<xs:annotation>
<xs:documentation>Дата и время в формате ДД.ММ.ГГГГ ЧЧ.ММ.СС (01.01.1800 - 31.12.2099)</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:length value="19" />
<xs:pattern value="(((0[1-9]{1}|[1-2]{1}[0-9]{1})\.(0[1-9]{1}|1[0-2]{1}))|((30)\.(01|0[3-9]{1}|1[0-2]{1}))|((31)\.(01|03|05|07|08|10|12)))\.(18[0-9]{2}|19[0-9]{2}|20[0-9]{2})\s([0-1]{1}[0-9]{1}|2[0-3]{1})\.([0-5]{1}[0-9]{1})\.([0-5]{1}[0-9]{1})" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="innindividual">
<xs:annotation>
<xs:documentation>Идентификационный номер налогоплательщика - физического лица</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:length value="12" />
<xs:pattern value="([0-9]{1}[1-9]{1}|[1-9]{1}[0-9]{1})[0-9]{10}" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="innlegalentity">
<xs:annotation>
<xs:documentation>Идентификационный номер налогоплательщика - юридического лица</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:length value="10" />
<xs:pattern value="([0-9]{1}[1-9]{1}|[1-9]{1}[0-9]{1})[0-9]{8}" />
</xs:restriction>
</xs:simpleType>
</xs:schema>