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

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

Текущая версия на 17:34, 28 августа 2015

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

При нажатии кнопки "Загрузить в 1С" вызывается функция ФормаГлавноеОкно: ЗагрузитьВ1С

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