Алгоритм отправки документов через внешнюю обработку

Материал из razgovorov.ru
Версия от 17:35, 26 января 2015; Разговоров Михаил (обсуждение | вклад) (РаботаСДокументами1С: ПодготовитьСтруктуруДокумента1C)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Статья описывает алгоритм работы внешней обработки СБИС после нажатия кнопки отправить в одном из реестров раздела Продажа. Заголовки содержат название формы и название метода, последовательность заголовков соответствует порядку вызова этих методов.

ГлавноеОкно: ОтправитьДокументы

  1. Получает список отмеченных записей текущего реестра.
  2. По имени реестра (тип документа 1C) определяем форму для дальнейшей обработки
  3. Передает в дальнейшую обработку список отмеченных записей.

Документ_[тип документа 1С]: ОтправитьДокументы

  1. Перебирает список отмеченных записей
  2. По текущему разделу определяем форму для дальнейшей обработки.
  3. Передает в дальнейшую обработку запись из списка.

[Раздел]_Шаблон: ПодготовитьСтруктуруДокумента

  1. В зависимости от раздела вызывает метод формирующий структуру пакета:
    1. ПодготовитьСтруктуруДокумента1С - на основании документов 1С
    2. ПодготовитьСтруктуруДокументаСБИС - на основании XML файлов.
  2. Передает в дальнейшую обработку запись из списка

Формирование структуры на основании XML файлов используется при открытии карточки пред просмотра входящего документа и загрузке документов. Алгоритм подготовки структуры документа у данных механизмов общий.

РаботаСДокументами1С: ПодготовитьСтруктуруДокумента1C

1. По файлу настроек реестра определяем тип будущего пакета в СБИС (реестр документов куда попадет данный пакет в СБИС) и способ отправки - если в файле настроек реестра есть узел КаталогОбмена, то он будет подготовленные пакеты выгружать в указанный в данном узле каталог

Выгрузка в каталог конкретного реестра может пригодится, когда по данному реестру идут большие массовые отправки. Выгрузка файлов в каталог идет в несколько раз быстрее, чем их подписание и отправка, поэтому если выгружать документы в каталог, Вам не нужно ждать пока 1С закончит отправку документов. Всю длительную работу по подписанию и отправке в этом случае берет на себя СБИС Коннект. Операция имеет смысл если как правило из реестра отправляется несколько сотен документов.

Среднее время отправки одного пакета из 1С = 1.5-2 сек (при единовременной отправке 20 пакетов и более).

Среднее время выгрузки одного пакета на диск = 0.4 сек

2. Перебираем все вложения (ссылки на документы 1С) 3. Для каждого вложения определяем файл настроек - если в файле настроек реестра есть параметр с именем документа 1С вложения, то для выгрузки используем файл настроек с именем указанным в этом параметре, иначе файл настроек по имени документа 1С вложения 4. Все последующие вызовы идут по очереди из этого метода

РаботаСДокументами1С: ПолучитьДанныеДокумента1С

  1. Получает на сервере 1С значения всех параметров из файла настроек вложения
  2. Записывает значения в структуру аналогичную структуре файла настроек
  3. Передает полученную структуру для дальнейшей обработки

Документ_[имя файла настроек вложения]: ПрочитатьДокумент

  1. По структуре файла настроек со значениями параметров перебираем все файлы (узлы мФайл) которые нужно из неё сделать.
  2. Для каждого файла (по одному документу 1С можно выгрузить несколько XML файлов) по значению параметров Файл.Формат + Файл.ВерсияФормата определяем имя формы которая умеет создавать структуру документа данного типа

Файл_[название_версия формата]: ПолучитьДанныеИзДокумента1С

  1. Формируем структуру документа, аналогичную структуре формата XML документа данного типа и версии.
  2. Вызываем две переопределяемые пользователем функции СБИСПослеФормированияДокумента и СБИСПослеФормированияСтроки.
  3. Сформированную структуру помещаем общую структуру подготовленного пакета

Файл_[название_версия формата]: СБИСПослеФормированияСтроки

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

В случае использования необходимо переопределить эту функцию в одноименной форме во ВнешниеФункции_Клиент

Файл_[название_версия формата]: СБИСПослеФормированияДокумента

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

В случае использования необходимо переопределить эту функцию в одноименной форме во ВнешниеФункции_Клиент

РаботаСДокументами1С: ПолучитьXMLДокумента1С

  1. Сериализуем структуру каждого вложения в XML
  2. Полученный XML размещаем в общей структуре Пакета как строку

РаботаСДокументами1С: ПодготовитьСтруктуруДокумента1C

  1. Перебираем все вложения.
  2. Если находим XSLT с именем "название_версия формата", применяем его к этому вложению.
  3. Помещаем подготовленный пакет в общий список подготовленных к отправке пакетов

по умолчанию все вложения формируются в формате 3.01, затем приводятся к нужному формату с помощью XSLT

Документ_[тип документа 1С]: ОтправитьДокументы

  1. В зависимости от настройки "Способ обмена" передаем по 100 подготовленных пакетов методу отправки.

[Способ обмена (SDK/ИнтеграцияКаталог]: ОтправитьПакетыДокументов

  1. отправляем документы при помощи SDK или выгружаем на диск