Доступна более новая версия документации данного модуля.

См. последнюю версию

Настройка функций обмена формализованными документами

Для работы с формализованными документами предназначены карточки подвидов Документ/УПД:

  1. Исходящий УПД.

    1. Исходящий УКД.

      1. Исходящий УКД (736) в формате приказа ФНС 189.

      2. Исходящий УКД (736) в формате приказа ФНС 736.

    2. Исходящее исправление УПД.

      1. Исходящее исправление УПД (820).

    3. Исходящий УПД (820).

  2. Входящий УПД.

    1. Входящий УПД (820).

    2. Формализованный акт.

      1. Формализованный акт (820).

    3. Входящий УКД.

      1. Входящий УКД (736) в формате приказа ФНС 189.

      2. Входящий УКД (736) в формате приказа ФНС 736.

Указанные виды карточек предоставляются с настроенными разметками, автоматом состояний и ролевой моделью.

Администратору необходимо:
  1. Добавить печатные формы для печати УПД.

  2. Добавить виртуальные папки для работы с УПД.

  1. Откройте Рабочее место администратора.

  2. Вызовите команду Свойства из контекстного меню элемента Карточки  Базовые объекты  Документ.

    Будет открыто окно со свойствами типа карточки Документ.

  3. Перейдите на страницу Преобразования и создайте преобразования:

    1. UniInvoiceRu c параметрами:

      • Название: UniInvoiceRu.

      • Псевдоним: UniInvoiceRu.

      • Тип преобразование: Пользовательское.

      • Тип содержимого: XML.

      • Данные преобразования (выберите файл): C:\Program Files (x86)\Docsvision\Edi\5.5\Xslt\UniInvoice.ru.xslt.

    2. Выполните аналогичные настройки со следующими преобразованиями:

      • UniInvoiceActRu

      • UniInvoiceCorrectionRu

      • UniInvoiceCorrFields

      • UniInvoiceFields

      • UniInvoiceSF

      • UniInvoiceTorgRu

Настройка папок для формализованных документов

Для удобства работы с исходящими формализованными документами можно добавить пользователям модуля виртуальные папки со следующими поисковыми запросами:

  • Журнал Все УПД — возвращает все виды УПД во всех статусах.

  • Журнал Исправление УПД — возвращает только исправления УПД во всех статусах.

  • Журнал Исходящий УПД — возвращает только исходящие УПД во всех статусах.

  • Журнал Корректировочный УПД — только корректировочные УПД во всех статусах.

  • Поиск УПД — выполняет поиск УПД по различным полям.

В настройках данных папок рекомендуется установить представление по умолчанию — УПД (Все).

Поисковые запросы и представления для папок входящих формализованных документов, если требуется, могут быть разработаны самостоятельно.

Настройка ленты карточек для нового вида формализованных документов

Администратор может настроить собственные виды карточек для работы с формализованными документами. При этом добавляемые виды должны быть дочерними видами видов Входящий УПД или Исходящий УПД.

Ленты карточек видов Входящий УПД и Исходящий УПД содержат команды для вызова стандартных функций обработки формализованных документов. В собственных видах могут использоваться функции, унаследованные от родительских видов, или разработаны собственные, например, дополнительная функция проверки данных.

Ниже приведен упрощенный код функций, вызываемых командами ленты карточек. Полный код смотрите в скриптах карточек соответствующих родительских видов.
  1. Входящий УПД и подвиды.

    1. Подписать документ:

      private void SignDocument_ItemClick(System.Object sender, DevExpress.XtraBars.ItemClickEventArgs e)
      {
          EdiScriptHelper.SendInvoiceReplySignature();
      }
    2. Отказать в подписании:

      private void RejectSingning_ItemClick(System.Object sender, DevExpress.XtraBars.ItemClickEventArgs e)
      {
        EdiScriptHelper.SendInvoiceReplyRejection(); (1)
      }
      1 ediScriptHelper.SendReplySignatureRejection(); следует использовать только, если точно известно, что ответ делается внутри Диадок. Для надежности проще всегда использовать EdiScriptHelper.SendInvoiceReplyRejection(); для неформализованных документов по аналогии с формализованными. Web-клиент работает похожим образом: SendInvoiceReplyRejection через boxesService.GenerateSignatureRejection.
    3. Запросить аннулирование

      private void RequestRevocation_ItemClick(System.Object sender, DevExpress.XtraBars.ItemClickEventArgs e)
      {
          EdiScriptHelper.SendRevocation();
      }
    4. Подтвердить аннулирование

      private void ApproveRevocation_ItemClick(System.Object sender, DevExpress.XtraBars.ItemClickEventArgs e)
      {
          EdiScriptHelper.SendReplyRevocationSignature();
      }
    5. Отказать в аннулировании

      private void RejectRevocation_ItemClick(System.Object sender, DevExpress.XtraBars.ItemClickEventArgs e)
      {
          EdiScriptHelper.SendReplyRevocationRejection();
      }
    6. Запросить уточнение:

      private void RequestForCorrection_ItemClick(System.Object sender, DevExpress.XtraBars.ItemClickEventArgs e)
      {
          EdiScriptHelper.SendCorrection()
      }
    7. Печать — выводить на печать печатную форму формализованного документа:

      private void Print_ItemClick(System.Object sender, DevExpress.XtraBars.ItemClickEventArgs e)
      {
          EdiScriptHelper.PrintInvoice("UniInvoiceRU"); (1)
      }
      1 В параметре метода указывается название шаблона печати:
      • UniInvoiceRU — стандартный шаблон для видов Входящий УПД и Формализованный акт.

      • UniInvoiceCorrectionRU — стандартный шаблон для вида Входящий УКД.

    8. Обновление печатной формы (вкладка Печатная форма). Данная функция должна вызываться при активации карточки (CardActivated).

      public virtual void FillInvoiceControl()
      {
          EdiScriptHelper.FillInvoiceHtmlControl("HTMLBrowser", "UniInvoiceRU"); (1)
      }
      1 В первом параметре (HTMLBrowser) должно быть указано название обновляемого элемента управления с типом HTML браузер.

      Во втором параметре (UniInvoiceRU) должно быть указано название шаблона печати для обновления.

      Названия стандартных шаблонов аналогичны приведенным для Печати.

  2. Исходящий УПД и подвиды.

    1. Подписать и отправить — выдаёт запрос на подписание документа квалифицированной ЭП (электронной подписью) и формирует электронное сообщение с документом для отправки оператору ЭДО.

      private void SignedAndSent_ItemClick(System.Object sender, DevExpress.XtraBars.ItemClickEventArgs e)
      {
          CardControl.Save();
          if (EdiScriptHelper.SignAndSendInvoice())
          {
              ChangeCardState("SignedAndSent");
          }
      }
    2. Заполнить данные из файла — загружает в карточку данные из приложенного основного файла — XML-файл формализованного документа, сформированный у оператора ЭДО.

      private void FillingOutData_ItemClick(System.Object sender, DevExpress.XtraBars.ItemClickEventArgs e)
      {
          CardControl.Save();
          EdiScriptHelper.UpdateDocumentDataFromInvoice();
          RefreshControls();
      }

      В Web-клиенте за заполнение данных карточки отвечает обработчик edi_updateDocumentFormInvoice. Обработчик может быть привязан к кнопке по аналогии с Windows-клиентом или быть назначен на события добавления главного файла и добавления версии файла.

      Обработчик проверяет расширение файла. Если формат файла не соответствует ожидаемому (.xml) или в файле содержатся ошибки, будет сообщение об ошибке. Проверка содержимого выполняется по аналогии с Windows-клиентом.

      Через клиентский API обработчик можно вызвать обращением к сервису $EdiFileSync с помощью метода:

      updateDocumentDataFromInvoice(documentId: string, fileId?: string)

      На сервере можно обратится к следующему сервису:

      IEdiFileSyncService.UpdateDocumentDataFromInvoice
    3. Запросить аннулирование:

      private void RequestRevocation_ItemClick(System.Object sender, DevExpress.XtraBars.ItemClickEventArgs e)
      {
          EdiScriptHelper.SendRevocation();
      }
    4. Подтвердить аннулирование:

      private void ApproveRevocation_ItemClick(System.Object sender, DevExpress.XtraBars.ItemClickEventArgs e)
      {
          EdiScriptHelper.SendReplyRevocationSignature();
      }
    5. Отказать в аннулировании:

      private void RejectRevocation_ItemClick(System.Object sender, DevExpress.XtraBars.ItemClickEventArgs e)
      {
          EdiScriptHelper.SendReplyRevocationRejection();
      }
    6. Печать:

      private void PrintUPD_ItemClick(System.Object sender, DevExpress.XtraBars.ItemClickEventArgs e)
      {
          EdiScriptHelper.PrintInvoice("UniInvoiceRU"); (1)
      }
      1 В параметре метода указывается название шаблона печати:
      • UniInvoiceRU — стандартный шаблон для видов Исходящий УПД и Исправление УПД.

      • UniInvoiceCorrectionRu — стандартный шаблон для вида Исходящий УКД.

    7. Обновление печатной формы (вкладка Печатная форма). Данная функция должна вызываться при активации карточки (CardActivated).

      public virtual void FillInvoiceControl()
      {
          EdiScriptHelper.FillInvoiceHtmlControl("HTMLBrowser", "UniInvoiceRU"); (1)
      }
      1 В первом параметре ("HTMLBrowser") должно быть указано название обновляемого элемента управления с типом HTML браузер.

      Во втором параметре (UniInvoiceRU) должно быть указано название шаблона печати для обновления.

      Названия стандартных шаблонов аналогичны приведенным для Печати.

В приведенном коде EdiScriptHelper объявлен в корневом виде УПД:

public EdiScriptHelper EdiScriptHelper
{
    get
    {
        if (ediScriptHelper == null)
            ediScriptHelper = new EdiScriptHelper(CardControl);

        return ediScriptHelper;
    }
}

Для работы указанных методов к скрипту карточки должны подключены сборки DocsVision.Edi.DocumentScript.dll и Docsvision.DocumentsManagement.dll. Сборки располагаются в каталоге клиента Docsvision.

В объявление пространств имен нужно добавить строки:
using DocsVision.Edi.DocumentScript;
using Docsvision.DocumentsManagement;

Для добавленных на ленту кнопок можно добавить методы их скрытия/отображения в зависимости от статуса обмена — проверяется с помощью методов:

  • IsSignatureReplyAvailable — проверяет возможность подписания документа или отказа в подписании, принимает значение TRUE, если документ в статусе Получен на подпись от контрагента.

  • IsRevocationReplyAvailable — проверяет возможность аннулирования документа или отказа в аннулировании; принимает значение TRUE, если документ в статусе Получен запрос на аннулирование.

  • IsRevocationRequestAvailable — проверяет возможность создания запроса на аннулирование документа, принимает значение TRUE, если документ в статусе Получен от контрагента, Отправлена ответная подпись контрагенту или Отправлен контрагенту.

  • IsReceiptReplyAvailable — проверяет возможность создания ответной квитанции.

Методы могут вызываться при открытии карточки. Методы не изменяют состояние видимости кнопок ленты — необходимо реализовать самостоятельно.

Собственный вид, не унаследованный от Входящий УПД или Исходящий УПД

Если требуется создать вид, не наследующий состояния от Входящий УПД или Исходящий УПД, необходимо самостоятельно добавить в его автомат состояний следующие состояния:

  • Получена подпись от контрагента c идентификатором встроенного состояния (поле BuildInState) FF1346D7-93F0-4CA3-93F8-5AE47BCD41DD.

  • Получен отказ от контрагента c идентификатором встроенного состояния D136A114-7C59-4C6E-AB12-5348B4883AB9.

  • Требуется уточнение c идентификатором встроенного состояния 9F8A156B-68EE-4543-9527-BF47B613330E.

  • Запрошено аннулирование c идентификатором встроенного состояния E3ED8CD1-8D9E-4332-B2D3-0EE5B9FE5A10.

  • Аннулирование подтверждено c идентификатором встроенного состояния D5CC4959-5E45-4F31-B630-F2C3613EDCB7.

  • В аннулировании отказано c идентификатором встроенного состояния ED9B6929-BD9C-496B-B8A7-D9597B1BA5CA.

Также потребуется добавить в разметку элементы управления с типами и названиями, которые используются в видах Входящий УПД или Исходящий УПД.