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

Материал из razgovorov.ru
Перейти к: навигация, поиск
(Документ_Шаблон: ЗаполнитьДанныеДокумента1С)
(Документ_Шаблон: ЗаполнитьДаннымиСтруктурыФайлаСтруктуруДокумента)
Строка 50: Строка 50:
  
 
====== Документ_Шаблон: ЗаполнитьДаннымиСтруктурыФайлаСтруктуруДокумента======
 
====== Документ_Шаблон: ЗаполнитьДаннымиСтруктурыФайлаСтруктуруДокумента======
# Перебирает узлы файла настроек для загрузки документа и заполняет данные в структуре.
+
# Перебирает узлы файла настроек для загрузки документа и заполняет данные в Структуре создаваемого документа.
  
 
====== Документ_Шаблон: СоздатьДокументИзСтруктуры======
 
====== Документ_Шаблон: СоздатьДокументИзСтруктуры======

Версия 14:00, 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. Перебирает поля структуры и записывает значения в одноименные реквизиты документа 1С.