Алгоритм отправки документов через внешнюю обработку
Статья описывает алгоритм работы внешней обработки СБИС после нажатия кнопки отправить в одном из реестров раздела Продажа. Заголовки содержат название формы и название метода, последовательность заголовков соответствует порядку вызова этих методов.
Содержание
- 1 ГлавноеОкно: ОтправитьДокументы
- 2 Документ_[тип документа 1С]: ОтправитьДокументы
- 3 [Раздел]_Шаблон: ПодготовитьСтруктуруДокумента
- 4 РаботаСДокументами1С: ПодготовитьСтруктуруДокумента1C
- 5 РаботаСДокументами1С: ПолучитьДанныеДокумента1С
- 6 Документ_[имя файла настроек вложения]: ПрочитатьДокумент
- 7 Файл_[название_версия формата]: ПолучитьДанныеИзДокумента1С
- 8 Файл_[название_версия формата]: СБИСПослеФормированияСтроки
- 9 Файл_[название_версия формата]: СБИСПослеФормированияДокумента
- 10 РаботаСДокументами1С: ПолучитьXMLДокумента1С
- 11 РаботаСДокументами1С: ПодготовитьСтруктуруДокумента1C
- 12 Документ_[тип документа 1С]: ОтправитьДокументы
- 13 [Способ обмена (SDK/ИнтеграцияКаталог]: ОтправитьПакетыДокументов
ГлавноеОкно: ОтправитьДокументы
- Получает список отмеченных записей текущего реестра.
- По имени реестра (тип документа 1C) определяем форму для дальнейшей обработки
- Передает в дальнейшую обработку список отмеченных записей.
Документ_[тип документа 1С]: ОтправитьДокументы
- Перебирает список отмеченных записей
- По текущему разделу определяем форму для дальнейшей обработки.
- Передает в дальнейшую обработку запись из списка.
[Раздел]_Шаблон: ПодготовитьСтруктуруДокумента
- В зависимости от раздела вызывает метод формирующий структуру пакета:
- ПодготовитьСтруктуруДокумента1С - на основании документов 1С
- ПодготовитьСтруктуруДокументаСБИС - на основании XML файлов.
- Передает в дальнейшую обработку запись из списка
Формирование структуры на основании XML файлов используется при открытии карточки пред просмотра входящего документа и загрузке документов. Алгоритм подготовки структуры документа у данных механизмов общий.
РаботаСДокументами1С: ПодготовитьСтруктуруДокумента1C
1. По файлу настроек реестра определяем тип будущего пакета в СБИС (реестр документов куда попадет данный пакет в СБИС) и способ отправки - если в файле настроек реестра есть узел КаталогОбмена, то он будет подготовленные пакеты выгружать в указанный в данном узле каталог
Выгрузка в каталог конкретного реестра может пригодится, когда по данному реестру идут большие массовые отправки. Выгрузка файлов в каталог идет в несколько раз быстрее, чем их подписание и отправка, поэтому если выгружать документы в каталог, Вам не нужно ждать пока 1С закончит отправку документов. Всю длительную работу по подписанию и отправке в этом случае берет на себя СБИС Коннект. Операция имеет смысл если как правило из реестра отправляется несколько сотен документов.
Среднее время отправки одного пакета из 1С = 1.5-2 сек (при единовременной отправке 20 пакетов и более).
Среднее время выгрузки одного пакета на диск = 0.4 сек
2. Перебираем все вложения (ссылки на документы 1С) 3. Для каждого вложения определяем файл настроек - если в файле настроек реестра есть параметр с именем документа 1С вложения, то для выгрузки используем файл настроек с именем указанным в этом параметре, иначе файл настроек по имени документа 1С вложения 4. Все последующие вызовы идут по очереди из этого метода
РаботаСДокументами1С: ПолучитьДанныеДокумента1С
- Получает на сервере 1С значения всех параметров из файла настроек вложения
- Записывает значения в структуру аналогичную структуре файла настроек
- Передает полученную структуру для дальнейшей обработки
Документ_[имя файла настроек вложения]: ПрочитатьДокумент
- По структуре файла настроек со значениями параметров перебираем все файлы (узлы мФайл) которые нужно из неё сделать.
- Для каждого файла (по одному документу 1С можно выгрузить несколько XML файлов) по значению параметров Файл.Формат + Файл.ВерсияФормата определяем имя формы которая умеет создавать структуру документа данного типа
Файл_[название_версия формата]: ПолучитьДанныеИзДокумента1С
- Формируем структуру документа, аналогичную структуре формата XML документа данного типа и версии.
- Вызываем две переопределяемые пользователем функции СБИСПослеФормированияДокумента и СБИСПослеФормированияСтроки.
- Сформированную структуру помещаем общую структуру подготовленного пакета
Файл_[название_версия формата]: СБИСПослеФормированияСтроки
Функция специально сделана для размещения пользовательского кода для добавления реквизитов в строку документа.
В случае использования необходимо переопределить эту функцию в одноименной форме во ВнешниеФункции_Клиент
Файл_[название_версия формата]: СБИСПослеФормированияДокумента
Функция специально сделана для размещения пользовательского кода для добавления реквизитов в шапку документа, либо добавления неформализованных вложений к пакету.
В случае использования необходимо переопределить эту функцию в одноименной форме во ВнешниеФункции_Клиент
РаботаСДокументами1С: ПолучитьXMLДокумента1С
- Сериализуем структуру каждого вложения в XML
- Полученный XML размещаем в общей структуре Пакета как строку
РаботаСДокументами1С: ПодготовитьСтруктуруДокумента1C
- Перебираем все вложения.
- Если находим XSLT с именем "название_версия формата", применяем его к этому вложению.
- Помещаем подготовленный пакет в общий список подготовленных к отправке пакетов
по умолчанию все вложения формируются в формате 3.01, затем приводятся к нужному формату с помощью XSLT
Документ_[тип документа 1С]: ОтправитьДокументы
- В зависимости от настройки "Способ обмена" передаем по 100 подготовленных пакетов методу отправки.
[Способ обмена (SDK/ИнтеграцияКаталог]: ОтправитьПакетыДокументов
- отправляем документы при помощи SDK или выгружаем на диск