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

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

Версия 15:23, 28 августа 2015

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

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

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