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

Материал из razgovorov.ru
Перейти к: навигация, поиск
(Новая страница: «В одном из реестров раздела Продажа нажали кнопку "Отправить" == '''ГлавноеОкно''': Отправи…»)
 
Строка 1: Строка 1:
 
В одном из реестров раздела Продажа нажали кнопку "Отправить"
 
В одном из реестров раздела Продажа нажали кнопку "Отправить"
  
== '''ГлавноеОкно''': ОтправитьДокументы ==
+
== ГлавноеОкно: ОтправитьДокументы ==
 
# Получает список отмеченных записей текущего реестра.
 
# Получает список отмеченных записей текущего реестра.
 
# По имени реестра (тип документа 1C) определяем форму для дальнейшей обработки  
 
# По имени реестра (тип документа 1C) определяем форму для дальнейшей обработки  
 
# Передает в дальнейшую обработку список отмеченных записей.
 
# Передает в дальнейшую обработку список отмеченных записей.
  
== '''Документ_[тип документа 1С]''': ОтправитьДокументы ==
+
== Документ_[тип документа 1С]: ОтправитьДокументы ==
 
# Перебирает список отмеченных записей  
 
# Перебирает список отмеченных записей  
 
# По текущему разделу определяем форму для дальнейшей обработки.  
 
# По текущему разделу определяем форму для дальнейшей обработки.  
 
# Передает в дальнейшую обработку запись из списка.
 
# Передает в дальнейшую обработку запись из списка.
  
== '''[Раздел]_Шаблон''': ПодготовитьСтруктуруДокумента ==
+
== [Раздел]_Шаблон: ПодготовитьСтруктуруДокумента ==
 
# В зависимости от раздела вызывает метод формирующий структуру пакета:
 
# В зависимости от раздела вызывает метод формирующий структуру пакета:
 
## ПодготовитьСтруктуруДокумента1С - на основании документов 1С
 
## ПодготовитьСтруктуруДокумента1С - на основании документов 1С
Строка 20: Строка 20:
  
 
== РаботаСДокументами1С: ПодготовитьСтруктуруДокумента1C ==
 
== РаботаСДокументами1С: ПодготовитьСтруктуруДокумента1C ==
# По файлу настроек реестра определяем:
+
1. По файлу настроек реестра определяем тип будущего пакета в СБИС (реестр документов куда попадет данный пакет в СБИС) и способ отправки - если в файле настроек реестра есть узел КаталогОбмена, то он будет подготовленные пакеты выгружать в указанный в данном узле каталог
## Тип пакета в СБИС - реестр документов куда попадет данный пакет в СБИС.
 
## Способ отправки - если в файле настроек реестра есть узел КаталогОбмена, то он будет подготовленные пакеты выгружать в указанный в данном узле каталог
 
## Файл настроек для формирования XML конкретного вложения - если в файле настроек реестра есть параметр с именем типа документа 1С, то для выгрузки используем файл настроек с именем указанным в этом параметре, иначе файл настроек по типу документа 1С
 
  
 
Выгрузка в каталог конкретного реестра может пригодится, когда по данному реестру идут большие массовые отправки. Выгрузка файлов в каталог идет в несколько раз быстрее, чем их подписание и отправка, поэтому если выгружать документы в каталог, Вам не нужно ждать пока 1С закончит отправку документов. Всю длительную работу по подписанию и отправке в этом случае берет на себя СБИС Коннект. Операция имеет смысл если как правило из реестра отправляется несколько сотен документов.
 
Выгрузка в каталог конкретного реестра может пригодится, когда по данному реестру идут большие массовые отправки. Выгрузка файлов в каталог идет в несколько раз быстрее, чем их подписание и отправка, поэтому если выгружать документы в каталог, Вам не нужно ждать пока 1С закончит отправку документов. Всю длительную работу по подписанию и отправке в этом случае берет на себя СБИС Коннект. Операция имеет смысл если как правило из реестра отправляется несколько сотен документов.
  
Среднее время отправки одного пакета из 1С = 1-2 сек (при единовременной отправке 20 пакетов и более).
+
Среднее время отправки одного пакета из 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 с именем название_версия формата, применяем его к этому вложению.
 +
# Помещаем подготовленный пакет в общий список подготовленных к отправке пакетов
 +
 
 +
== Документ_[тип документа 1С]: ОтправитьДокументы ==
 +
# В зависимости от настройки "Способ обмена" передаем по 100 подготовленных пакетов методу отправки.
 +
 
 +
== [Способ обмена (SDK/ИнтеграцияКаталог]: ОтправитьПакетыДокументов
 +
# отправляем документы при помощи SDK или выгружаем на диск

Версия 16:46, 26 января 2015

В одном из реестров раздела Продажа нажали кнопку "Отправить"

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

  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. Помещаем подготовленный пакет в общий список подготовленных к отправке пакетов

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

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

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

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