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

Материал из razgovorov.ru
Перейти к: навигация, поиск
(ФормаГлавноеОкно: ЗагрузитьВ1С)
Строка 2: Строка 2:
 
=ФормаГлавноеОкно: ЗагрузитьВ1С=
 
=ФормаГлавноеОкно: ЗагрузитьВ1С=
 
# Получает список отмеченных записей текущего реестра.
 
# Получает список отмеченных записей текущего реестра.
# Передает в дальнейшую обработку список отмеченных записей.
+
# [[#Документ_Шаблон: ЗагрузитьДокументыВ1С|Документ_Шаблон: ЗагрузитьДокументыВ1С(список отмеченных записей)]].
  
 
==Документ_Шаблон: ЗагрузитьДокументыВ1С==
 
==Документ_Шаблон: ЗагрузитьДокументыВ1С==
 
# Перебирает список отмеченных записей  
 
# Перебирает список отмеченных записей  
# Для каждой записи вызывает функцию ПодготовитьСтруктуруДокумента из формы текущего раздела и получает полную структуру пакета документов.
+
# Для каждой записи вызывает функцию [[#<nowiki>Раздел_[Полученные]_Шаблон</nowiki>: ПодготовитьСтруктуруДокумента|ПодготовитьСтруктуруДокумента()]]
# Для каждого вложения из структуры пакета проверяет возможность загрузки (функция ЗаполнитьДанныеДляЗагрузкиПоУмолчанию)
+
# Для каждого вложения из структуры пакета проверяет возможность загрузки и тип документа 1С создаваемый по умолчанию ([[#РаботаСДокументами1С: ЗаполнитьДанныеДляЗагрузкиПоУмолчанию| ЗаполнитьДанныеДляЗагрузкиПоУмолчанию(СтруктураПакета)]]), возвращает истина если можно.
# Если вложение можно загрузить, то рассчитывает вес вложения (по весу определяется порядок загрузки вложений)
+
# Если вложение можно загрузить, то получаем из инишки вес данного вложения (по весу определяется порядок загрузки вложений)
# Формирует упорядоченный состав пакета, в котором вложения лежат в том порядке, в котором должны загружаться
+
# Сортируем вложения по весу, от минимального веса к максимальному (фактура имеет максимальный вес и грузится последней).
 
# Для каждого вложения из упорядоченного пакета определяет форму для создания документа по типу документа 1С, в который будет загружаться вложение
 
# Для каждого вложения из упорядоченного пакета определяет форму для создания документа по типу документа 1С, в который будет загружаться вложение
 
# Передает вложение в дальнейшую обработку (функция СоздатьДокумент)
 
# Передает вложение в дальнейшую обработку (функция СоздатьДокумент)
  
===Раздел_[Название раздела]_Шаблон: ПодготовитьСтруктуруДокумента===
+
===Раздел_[Полученные]_Шаблон: ПодготовитьСтруктуруДокумента===
 +
В Структуру списка событий или списка документов полученных через SDK/API добавляем сериализованные в структуру вложения и связанные документы 1С.
 
# В зависимости от раздела вызывает метод формирующий структуру пакета:
 
# В зависимости от раздела вызывает метод формирующий структуру пакета:
 
## ПодготовитьСтруктуруДокумента1С - на основании документов 1С
 
## ПодготовитьСтруктуруДокумента1С - на основании документов 1С
## ПодготовитьСтруктуруДокументаСБИС - на основании XML файлов (при загрузке вызывается данная функция)
+
## [[#РаботаСДокументами1С: ПодготовитьСтруктуруДокументаСБИС|ПодготовитьСтруктуруДокументаСБИС(СтруктураПакета)]] - на основании XML файлов (при загрузке вызывается данная функция)
 
# Передает в дальнейшую обработку запись из списка
 
# Передает в дальнейшую обработку запись из списка
  
 
====РаботаСДокументами1С: ПодготовитьСтруктуруДокументаСБИС====
 
====РаботаСДокументами1С: ПодготовитьСтруктуруДокументаСБИС====
 +
Получает подробную информацию по каждому вложению.
 
# Для каждого вложения пакета получает xml, добавляет его в структуру вложения.
 
# Для каждого вложения пакета получает xml, добавляет его в структуру вложения.
 
# При наличии xslt по типу и версии вложения применяет его к полученному xml-файлу.
 
# При наличии xslt по типу и версии вложения применяет его к полученному xml-файлу.
# Получает структуру файла, добавляет ее в структуру вложения.  
+
# Сериализует вложение  в Структуру, добавляет ее в структуру пакета.  
# Ищет связанные документы 1С по идентификатору пакета и вложения, добавляет их в структуру вложения.
+
# Ищет связанные документы 1С по идентификатору пакета и вложения, добавляет их в структуру пакета.
  
 
=== РаботаСДокументами1С: ЗаполнитьДанныеДляЗагрузкиПоУмолчанию===
 
=== РаботаСДокументами1С: ЗаполнитьДанныеДляЗагрузкиПоУмолчанию===
Строка 31: Строка 33:
 
# Ищет контрагента из вложения в справочнике контрагентов.  
 
# Ищет контрагента из вложения в справочнике контрагентов.  
 
# Проверяет, вся ли номенклатура сопоставлена.
 
# Проверяет, вся ли номенклатура сопоставлена.
 
+
[[#Документ_Шаблон: ЗагрузитьДокументыВ1С|Назад]]
  
 
=== Документ_[Тип загружаемого документа 1С]: СоздатьДокумент===
 
=== Документ_[Тип загружаемого документа 1С]: СоздатьДокумент===

Версия 10:52, 25 августа 2015

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

ФормаГлавноеОкно: ЗагрузитьВ1С

  1. Получает список отмеченных записей текущего реестра.
  2. Документ_Шаблон: ЗагрузитьДокументыВ1С(список отмеченных записей).

Документ_Шаблон: ЗагрузитьДокументыВ1С

  1. Перебирает список отмеченных записей
  2. Для каждой записи вызывает функцию [[#Раздел_[Полученные]_Шаблон: ПодготовитьСтруктуруДокумента|ПодготовитьСтруктуруДокумента()]]
  3. Для каждого вложения из структуры пакета проверяет возможность загрузки и тип документа 1С создаваемый по умолчанию ( ЗаполнитьДанныеДляЗагрузкиПоУмолчанию(СтруктураПакета)), возвращает истина если можно.
  4. Если вложение можно загрузить, то получаем из инишки вес данного вложения (по весу определяется порядок загрузки вложений)
  5. Сортируем вложения по весу, от минимального веса к максимальному (фактура имеет максимальный вес и грузится последней).
  6. Для каждого вложения из упорядоченного пакета определяет форму для создания документа по типу документа 1С, в который будет загружаться вложение
  7. Передает вложение в дальнейшую обработку (функция СоздатьДокумент)

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

В Структуру списка событий или списка документов полученных через SDK/API добавляем сериализованные в структуру вложения и связанные документы 1С.

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

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

Получает подробную информацию по каждому вложению.

  1. Для каждого вложения пакета получает xml, добавляет его в структуру вложения.
  2. При наличии xslt по типу и версии вложения применяет его к полученному xml-файлу.
  3. Сериализует вложение в Структуру, добавляет ее в структуру пакета.
  4. Ищет связанные документы 1С по идентификатору пакета и вложения, добавляет их в структуру пакета.

РаботаСДокументами1С: ЗаполнитьДанныеДляЗагрузкиПоУмолчанию

  1. Проверяет наличие файла настроек для загрузки вложения.
  2. Определяет тип документа 1С, в который будет загружаться вложение.
  3. Ищет организацию из вложения в справочнике организаций.
  4. Ищет контрагента из вложения в справочнике контрагентов.
  5. Проверяет, вся ли номенклатура сопоставлена.

Назад

Документ_[Тип загружаемого документа 1С]: СоздатьДокумент

  1. Если никакой специфики загрузки для данного типа документа 1С нет, то передает обработку в форму Документ_Шаблон.

Данную форму и функцию можно переопределить в обработке "ВнешниеФункции_Клиент.epf" для реализации своего алгоритма загрузки определенного типа документа.

Документ_Шаблон: СоздатьДокумент

  1. Вызывает функцию заполнения данных документа (ЗаполнитьДанныеДокумента1С).
  2. Записывает статус и идентификаторы пакета и вложения для созданного документа.


Документ_Шаблон: ЗаполнитьДанныеДокумента1С
  1. Вызывает функцию формирования структуры данных документа (ЗаполнитьДаннымиСтруктурыФайлаСтруктуруДокумента).
  2. Вызывает функцию создания документа 1С по структуре данных (СоздатьДокументИзСтруктуры).
  3. Ищет пользовательскую форму для данного типа документа (Документ_[Тип загружаемого документа 1С]) с функцией "ДопРасчетыПриЗагрузке" и при наличии вызывает ее. В данной функции обычно производятся какие-то расчеты, не связанные с загрузкой данных из файла, а связанные непосредственно с самим документом 1С. Например, при заведении документа в 1С вручную при выборе номенклатуры заполняются сразу несколько полей в строке табличной части (например, % скидки, производитель и т.д.). В функции ДопРасчетыПриЗагрузке можно перебрать строки загруженного документа и для каждой строки вызвать тот же обработчик, что вызывается при ручном вводе номенклатуры, таким образом заполнятся все данные, которые не были загружены из файла, но должны быть заполнены в документе.


Документ_Шаблон: ЗаполнитьДаннымиСтруктурыФайлаСтруктуруДокумента
  1. Перебирает узлы файла настроек для загрузки документа и заполняет данные в структуре.
Документ_Шаблон: СоздатьДокументИзСтруктуры
  1. Перебирает поля структуры и записывает значения в одноименные реквизиты документа 1С.