ИС "Такском-Доклайнз"                  ИНФОРМАЦИЯ ДЛЯ РАЗРАБОТЧИКОВ
×
3.3.4.9. Формирование и отправка ответа на формализованный документ
 
Под ответом на формализованный документ здесь подразумевается один из следующих документов:
Уведомление об уточнении в ответ на счет-фактуру, ТОРГ 12, Акт выполненных работ, Документ о передаче товаров при торговых операциях, Документ о передаче результатов работ.
Титул покупателя в ответ на ТОРГ 12 или Документ о передаче товаров при торговых операциях.
Титул заказчика в ответ на Акт выполненных работ или Документ о передаче результатов работ.
Информация покупателя в ответ на счет-фактуру с функцией СЧФДОП или ДОП.
Файл ответа на формализованный документ можно сформировать в системе или импортировать файл ответа, сформированный вне системы (Уведомление об уточнении, Титул покупателя - ТОРГ 12, Титул заказчика - Акт выполненных работ, ...).
Отправка сформированного в системе или импортированного ответа на формализованный документ происходит при вызове метода AutoSendReceive (см. п. 3.3.4.1. Метод AutoSendReceive).
Регистрационный номер МЧД, которая ранее была загружена в систему, можно добавить в теге <Warrants> Если указанный в блоке <Warrants> номер МЧД присутствует в системе и привязан к учетной записи подписанта, то МЧД будет добавлена к документу и отправлена вместе с ним.
Пример тега <Warrants> с регистрационным номером МЧД:
<Warrants>
<Warrant MetaID="f8a95bf3-662f-44f9-b998-b941e747c106" > </Warrant>
</Warrants>
Тег Warrant MetaID может повторяться, если необходимо передать сведения о нескольких МЧД.
Блок <Warrants> необязателен, но если он указан, то должен быть заполнен.

 
Формирование Уведомления об уточнении
Чтобы сформировать Уведомление об уточнении (отклонить полученный документ), необходимо воспользоваться одним из двух методов SDK:
1.
public void Reject(string docflowId, string comment). Автоматическое создание Уведомления об уточнении по DocflowID. 2-м параметром является комментарий, который будет добавлен в текст Уведомления об уточнении.
2.
public void RejectWithRawData(string docActionXml). Создание Уведомления об уточнении с использованием xml.
  Формат xml такой же, как и в случае Accept, с той лишь разницей, что блок AdditionalParameter не имеет смысла.
 
<?xml version="1.0" encoding="utf-8"?>
<Document InternalId="732f4bce-cf42-4855-93dd-05828e9bd4df" Action="Reject">
       <Comment>Недостаточно данных!</Comment>
       <Signers>
            <Signer>
                    <Person LastName="Автотестовый" FirstName="Файлер" Patronymic="ЮЛ2" Inn="9977707345" />
            </Signer>
            <Signer>
                    <Certificate Thumbprint="9baa116ed41cc4d9a8932af5493c8bf8964e1a0b" SerialNumber="6c22e4ec000000001348" />
            </Signer>
      </Signers>
<Warrants>
<Warrant MetaID="f8a95bf3-662f-44f9-b998-b941e747c106" > </Warrant>
</Warrants>
</Document>
 
В поле Comment получателем формализованного документа указывается причина отказа принять документ или произвольный комментарий, который будет добавлен в текст Уведомления об уточнении.
Если сотрудник не имеет прав доступ к указанному документу, то ему возвратится информация об ошибке 2120.
 
Положительный ответ на формализованный документ (ТОРГ 12, Акт выполненных работ, Документ о передаче результатов работ, Документ о передаче товаров при торговых операциях)
Для формирования положительного ответа на формализованный документ предназначена группа методов Accept.
Сигнатуры методов:
public void Accept(string docflowId). Предназначен для подписания полученного документа по его DocflowID.
public void Accept(string docflowId, ICustomerTitle customerTitle). Данный метод позволяет указать самостоятельно сформированный титул покупателя/заказчика наряду с DocflowID.
public void AcceptWithRawData(string docActionXml). Для подписания используется xml, в котором есть возможность указать дополнительные параметры для подписания документа. Формат xml для данного метода:
               
<?xml version="1.0" encoding="utf-8"?>
      <Document InternalId="f1712a8e-256b-4076-a370-b35aa629f44a" Action="Accept">
            <AdditionalData>
                      <AdditionalParameter Name="ГрузПринялФамилия" Value="Фам1" />
                      <AdditionalParameter Name="ГрузПринялИмя" Value="Александерр" />
                      <AdditionalParameter Name="ГрузПринялОтчество"  Value="Петровичч" />
                      <AdditionalParameter Name="ГрузПринялДолжность" Value="Дол1" />
                      <AdditionalParameter Name="ГрузПолучилФамилия"  Value="Носовв" />
                      <AdditionalParameter Name="ГрузПолучилИмя"          Value="Иванн" />
                      <AdditionalParameter Name="ГрузПолучилОтчество"  Value="Васильевичч" />
                      <AdditionalParameter Name="ГрузПолучилДолжность" Value="Долж2" />
                      <AdditionalParameter Name="ДатаПолученияГруза" Value="27.02.2010" />
                     
                                         
                      <AdditionalParameter Name="ДоверенностьНомер" Value="12345678" />
                      <AdditionalParameter Name="ДоверенностьДата"    Value="21.11.2007" />
                      <AdditionalParameter Name="НаименованиеОрганизацииВыдавшейДоверенность"  Value="Ласточкаа1" />
                      <AdditionalParameter Name="ДоверенностьВыданаКемИмя"    Value="Олегг" />
                      <AdditionalParameter Name="ДоверенностьВыданаКемФамилия"    Value="Фам" />
                    <AdditionalParameter Name="ДоверенностьВыданаКемОтчество"    Value="Петровиxx" />
                      <AdditionalParameter Name="ДоверенностьВыданаКемДолжность"    Value="Дол3" />
                      <AdditionalParameter Name="ДоверенностьВыданаКемДополнительныеСведения" Value="" />
                     
                      <AdditionalParameter Name="ДоверенностьВыданаКомуИмя"    Value="Олеггг" />
                      <AdditionalParameter Name="ДоверенностьВыданаКомуФамилия"    Value="Вдовиченко" />
                      <AdditionalParameter Name="ДоверенностьВыданаКомуОтчество"    Value="Петровичч" />
                      <AdditionalParameter Name="ДоверенностьВыданаКомуДолжность"    Value="Дол4" />
                      <AdditionalParameter Name="ДоверенностьВыданаКомуДополнительныеСведения" Value="" />
            </AdditionalData>
             <Signers>
                    <Signer>
                          <Person LastName="Автотестовый" FirstName="Файлер" Patronymic="ЮЛ2" Inn="9977707345" />
                    </Signer>
                    <Signer>
                          <Certificate Thumbprint="9baa116ed41cc4d9a8932af5493c8bf8964e1a0b" SerialNumber="6c22e4ec000000001348" />
                    </Signer>
            </Signers>
<Warrants>
<Warrant MetaID="f8a95bf3-662f-44f9-b998-b941e747c106" > </Warrant>
</Warrants>
      </Document>
 
В internalID указывается DocflowID документооборота, над которым необходимо провести действия.
Тэг Action отвечает за  тип действия: Accept либо Reject.
Блог Signers предназначен для указания сертификатов ключей ЭП, которыми должен быть подписан документ. Указывается либо владелец сертификата, либо серийный номер с отпечатком.
Блок AdditionalParameter служит для указания набора дополнительных параметров, которые будут использованы для создания ответного титула продавца либо заказчика. Применяется только для формирования ответа на ТОРГ-12 и Акты выполненных работ. Приведен полный список возможных параметров.
Warrants – опциональная секция, содержащая регистрационный номер ранее зарегистрированной в системе Такском-Доклайнз доверенности для подписанта.
Если сотрудник не имеет прав доступ к указанному документу, то ему возвратится информация об ошибке 2120.
 
Импорт файла ответа на формализованный документ (Уведомления об уточнении, Титула покупателя - на ТОРГ 12 или Документ о передаче товаров при торговых операциях, Титула заказчика - на Акт выполненных работ или Документ о передаче результатов работ)
Для импорта файла ответа на формализованный документ предназначены методы:
void SendServiceDocument(TaxcomContainer container,string docflowId)
void SendServiceDocumentFromFile(string fileName, string docflowId)
Соответствующие классы в .NET SDK и COM SDK имеют следующие имена:
CorrectionNoticeDocument (Уведомление об уточнении)
FormalizedConsigmentCustomerTitleDocument (Титул покупателя - ТОРГ 12)
FormalizedTradingCustomerTitleDocument (Титул покупателя - Документ о передаче товаров при торговых операциях)
FormalizedStatementCustomerTitleDocument (Титул заказчика - Акт выполненных работ)
FormalizedWorkResultCustomerTitleDocument (Титул заказчика - Документ о передаче результатов работ)
В качестве обязательных параметров следует передать либо объект контейнера, содержащего один из перечисленных выше документов, либо путь к zip файлу контейнера и id документооборота, к которому относится данный документ.
Передача null в качестве любого из параметров приводит к ArgumentNullException с указанием имени некорректного параметра.
Для перечисленных выше документов имеется возможность добавить файл подписи, либо сформировать ЭП на машине клиента. Для реализации этой возможности применяются следующие методы:
void AddCertificateForSign(string thumbprint);
void AddExistingSignature(string _filePath).
Если сотрудник не имеет прав доступ к указанному документу, то ему возвратится информация об ошибке 2120.
 
Формирование Информации покупателя на счет-фактуру с функцией СЧФДОП или ДОП
При получении счета-фактуры с функцией СЧФДОП или ДОП возможна (не не является обязательной) отправка документа «Информация покупателя». Для функции СЧФ и счетов-фактур без функции отправка такого документа не поддерживается.
Для отправки документа «Информация покупателя» используется метод:
public void SendCustomerInformationWithRawData(string docActionXml)
,где docActionXml – XML-описатель с параметрами вызова метода (пример XML-описателя приведен ниже).
Метод формирует и отправляет «Информацию покупателя» в соответствии со значением параметра метода.
Возвращаемых значений у данного метода нет.
В составе XML-описателя передаются необходимые для формирования документа параметры (все они являются обязательными, допустимо указание двух подписантов):
  • Покупатель.НаименованиеЭкономическогоСубъектаСоставителя
  • СодержаниеФактаХозЖизни.СодержаниеОперации
  • Подписант.ОблПолн
  • Подписант.Статус
  • Подписант.ОснПолн
  • Подписант.Должн
 
Примеры XML-описателя для ответа на УПД формата 5.01
Пример 1, с одним подписантом:
<?xml version="1.0" encoding="utf-8"?>
      <Document InternalId="ИД ДО" Action="SendCustomerInformation">
            <AdditionalData>
            <AdditionalParameter Name="Покупатель.НаименованиеЭкономическогоСубъектаСоставителя" Value="СубъектаСоставителя" />
            <AdditionalParameter Name="СодержаниеФактаХозЖизни.СодержаниеОперации" Value="Услуги получены, претензий нет" />
            <AdditionalParameter Name="Подписант.ОблПолн" Value="1" />
            <AdditionalParameter Name="Подписант.Статус" Value="2" />
            <AdditionalParameter Name="Подписант.ОснПолн" Value="Должностные обязанности" />
<AdditionalParameter Name="Подписант.Должн" Value="Гл. бухгалтер" />
            </AdditionalData>
</Document>
 Пример 2, с двумя подписантами:
<?xml version="1.0" encoding="utf-8"?>
<Document InternalId="b8995728-f550-4c20-86ea-3dc7c23e0f9b" Action="SendCustomerInformation">
      <AdditionalData>
            <AdditionalParameter Name="Покупатель.НаименованиеЭкономическогоСубъектаСоставителя" Value="СубъектаСоставителя"/>
            <AdditionalParameter Name="СодержаниеФактаХозЖизни.СодержаниеОперации" Value="Услуги получены, претензий нет"/>
            <AdditionalParameter Name="Подписант.ОблПолн" Value="3"/>
            <AdditionalParameter Name="Подписант.Статус" Value="1"/>
            <AdditionalParameter Name="Подписант.ОснПолн" Value="Должностные обязанности"/>
<AdditionalParameter Name="Подписант.Должн" Value="Гл. бухгалтер" />
      </AdditionalData> 
      <Signers>
            <Signer>
            <Person LastName="Диденко" FirstName="Александр" Patronymic="Александрович" Inn="9898669538" AreaOfAuthority="1" SignerPersonStatus="2" ReasonTheAuthority="Должностные обязанности"/>
            </Signer>
            <Signer>
            <Person LastName="Эстонец" FirstName="Вадим" Patronymic="Юрьевич" Inn="9898669538" AreaOfAuthority="1" SignerPersonStatus="1" ReasonTheAuthority="Должностные обязанности" />
            </Signer>         
      </Signers>
<Warrants>
<Warrant MetaID="f8a95bf3-662f-44f9-b998-b941e747c106" > </Warrant>
</Warrants>
</Document>
 Пример XML-описателя для ответа на УПД формата 5.03
<?xml version="1.0" encoding="utf-8"?>
<Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" InternalId="cce7ab57-6256-4b1c-a860-bf4b8df36415" Action="SendCustomerInformation">
  <Signers>
    <Signer>
      <Certificate Thumbprint="ef3d032abbd6048f0f826e508826b428d34ea30f" SerialNumber="6ea0970092b1dabb451bd04b87cb0f1b" />
    </Signer>
  </Signers>
  <AdditionalData>
  <AdditionalParameter Name="Покупатель.НаименованиеЭкономическогоСубъектаСоставителя" Value="Общество с ограниченной ответственностью Гавань, ИНН/КПП 2129465140 / 661045069" />
  <AdditionalParameter Name="СодержаниеФактаХозЖизни.СодержаниеОперации" Value="Покупатель претензий к Продавцу не имеет" />
  <AdditionalParameter Name="СодержаниеФактаХозЖизни.ДатаПринятия" Value="01.01.2025" />
  <AdditionalParameter Name="Подписант.СпосПодтПолном" Value="1" />
  <AdditionalParameter Name="СодержаниеФактаХозЖизни.СведенияОПринятии.КодСодержанияОперации.КодИтога" Value="1" />
  </AdditionalData>
</Document>
 
Для каждого из подписантов можно задать параметры "Область полномочий" (AreaOfAuthority), "Статус" (SignerPersonStatus) и "Основание полномочий (доверия) (ReasonTheAuthority)". Они опциональны, при их отсутствии используются значения аналогичных параметров "Подписант.ОблПолн", "Подписант.Статус", "Подписант.ОснПолн" из тега <AdditionalData>. В случае двойного определения этих параметров приоритет имеют указанные в блоке <Signer>.
 
Выдержка из xsd схемы
 
<xs:attribute name="ОблПолн" use="required">
                                                                                                                                                   <xs:annotation>
                                                                                                                                                                  <xs:documentation>Область полномочий</xs:documentation>
                                                                                                                                                                  <xs:documentation>, где:
1 - лицо, совершившее сделку, операцию;
2 – лицо, совершившее сделку, операцию и ответственное за ее оформление;
3 – лицо, ответственное за оформление свершившегося события</xs:documentation>
                                                                                                                                                   </xs:annotation>
                                                                                                                                                   <xs:simpleType>
                                                                                                                                                                  <xs:restriction base="xs:string">
                                                                                                                                                                                <xs:length value="1"/>
                                                                                                                                                                                <xs:enumeration value="1"/>
                                                                                                                                                                                <xs:enumeration value="2"/>
                                                                                                                                                                                <xs:enumeration value="3"/>
                                                                                                                                                                  </xs:restriction>
                                                                                                                                                   </xs:simpleType>
                                                                                                                                    </xs:attribute>
 
<xs:attribute name="Статус" use="required">
                                                                                                                                                   <xs:annotation>
                                                                                                                                                                  <xs:documentation>Статус</xs:documentation>
                                                                                                                                                                  <xs:documentation>, где:
1 - Работник организации - исполнителя работ (услуг);
2 – Работник организации - составителя информации исполнителя;
3 - Работник иной уполномоченной организации;
4 - Уполномоченное физическое лицо (в том числе индивидуальный предприниматель)</xs:documentation>
                                                                                                                                                   </xs:annotation>
                                                                                                                                                   <xs:simpleType>
                                                                                                                                                                  <xs:restriction base="xs:string">
                                                                                                                                                                                <xs:length value="1"/>
                                                                                                                                                                                <xs:enumeration value="1"/>
                                                                                                                                                                                <xs:enumeration value="2"/>
                                                                                                                                                                                <xs:enumeration value="3"/>
                                                                                                                                                                                <xs:enumeration value="4"/>
                                                                                                                                                                  </xs:restriction>
                                                                                                                                                   </xs:simpleType>
                                                                                                                                    </xs:attribute>
 
<xs:attribute name="ОснПолнПодп" use="required">
                                                                                                                                                   <xs:annotation>
                                                                                                                                                                  <xs:documentation>Основание полномочий (доверия) подписанту</xs:documentation>
                                                                                                                                                                  <xs:documentation>Для Статус=1 или Статус=2 или Статус=3 указываются «Должностные обязанности» по умолчанию или иные основания полномочий (доверия).
Для Статус=4 указываются основания полномочий (доверия)</xs:documentation>
                                                                                                                                                   </xs:annotation>
                                                                                                                                                   <xs:simpleType>
                                                                                                                                                                  <xs:restriction base="xs:string">
                                                                                                                                                                                <xs:minLength value="1"/>
                                                                                                                                                                                <xs:maxLength value="255"/>
                                                                                                                                                                  </xs:restriction>
                                                                                                                                                   </xs:simpleType>
                                                                                                                                    </xs:attribute>
 
Ограничения на использование методов:
- нельзя отклонить документ (отправить Уведомление об уточнении) до отправки извещения о получении этого документа;
- нельзя отклонить принятый документ (Товарную накладную ТОРГ-12, Документ о передаче товаров при торговых операциях, Документ о передаче результатов работ или Акт о выполнении работ), в ответ на который был отправлен Титул покупателя или Титул заказчика;
- нельзя повторно отклонить документ (отправить Уведомление об уточнении).
- нельзя повторно дать положительный ответ на документ, в ответ на который ранее был отправлен Титул покупателя или Титул заказчика;
- нельзя принять отклонённый документ (отозвать или признать недействительным отправленное Уведомление об уточнении);
- нельзя принять документ (подписать и отправить положительный ответ) до отправки извещения о его получении;
- нельзя "принять" (подписать и отправить обратно) счёт-фактуру и корректировочный счёт-фактуру;
- нельзя "принять" (подписать и отправить обратно) неформализованный документ, не требующий переподписи.
 
Пример кода:
//Читаем xml документ, содержащий УОУ
byte[] documentRawData =File.ReadAllBytes(documentFilePath);
//Импортируем документ из массива байтов
CorrectionNoticeDocument document = CorrectionNoticeDocument.ImportFromXmlBytes(documentRawData);
//Читаем файл подписи и добавляем подпись к документу
byte[] signatureRawData = File.ReadAllBytes(pathToSignature);
 
document.AddExistingSignature(signatureRawData);
//Создаем контейнер и добавляем туда файл с указанием режима подписания
var container = new TaxcomContainer();
container.Documents.Add(document);
container.SignMode = DocumentSignMode.UseSpecifiedSignature;
Далее этот контейнер можно экспортировать в поток байт вызовом метода ExportToZip() класса TaxcomContainer и сохранить в виде файла, передать по сети или отправить в систему Такском-Доклайнз вызовом нового метода SDK SendServiceDocument.
Отправка сформированных ответов на формализованные документы произойдёт при вызове метода AutoSendReceive. (См. п. 3.3.4.1. Метод AutoSendReceive)
Если сотрудник не имеет прав доступ к указанному документу, то ему возвратится информация об ошибке 2120.