Алгоритм загрузки документов через внешнюю обработку — различия между версиями
(→ФормаГлавноеОкно: ЗагрузитьВ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С(список отмеченных записей).
Документ_Шаблон: ЗагрузитьДокументыВ1С
- Перебирает список отмеченных записей
- Для каждой записи вызывает функцию [[#Раздел_[Полученные]_Шаблон: ПодготовитьСтруктуруДокумента|ПодготовитьСтруктуруДокумента()]]
- Для каждого вложения из структуры пакета проверяет возможность загрузки и тип документа 1С создаваемый по умолчанию ( ЗаполнитьДанныеДляЗагрузкиПоУмолчанию(СтруктураПакета)), возвращает истина если можно.
- Если вложение можно загрузить, то получаем из инишки вес данного вложения (по весу определяется порядок загрузки вложений)
- Сортируем вложения по весу, от минимального веса к максимальному (фактура имеет максимальный вес и грузится последней).
- Для каждого вложения из упорядоченного пакета определяет форму для создания документа по типу документа 1С, в который будет загружаться вложение
- Передает вложение в дальнейшую обработку (функция СоздатьДокумент)
Раздел_[Полученные]_Шаблон: ПодготовитьСтруктуруДокумента
В Структуру списка событий или списка документов полученных через SDK/API добавляем сериализованные в структуру вложения и связанные документы 1С.
- В зависимости от раздела вызывает метод формирующий структуру пакета:
- ПодготовитьСтруктуруДокумента1С - на основании документов 1С
- ПодготовитьСтруктуруДокументаСБИС(СтруктураПакета) - на основании XML файлов (при загрузке вызывается данная функция)
- Передает в дальнейшую обработку запись из списка
РаботаСДокументами1С: ПодготовитьСтруктуруДокументаСБИС
Получает подробную информацию по каждому вложению.
- Для каждого вложения пакета получает xml, добавляет его в структуру вложения.
- При наличии xslt по типу и версии вложения применяет его к полученному xml-файлу.
- Сериализует вложение в Структуру, добавляет ее в структуру пакета.
- Ищет связанные документы 1С по идентификатору пакета и вложения, добавляет их в структуру пакета.
РаботаСДокументами1С: ЗаполнитьДанныеДляЗагрузкиПоУмолчанию
- Проверяет наличие файла настроек для загрузки вложения.
- Определяет тип документа 1С, в который будет загружаться вложение.
- Ищет организацию из вложения в справочнике организаций.
- Ищет контрагента из вложения в справочнике контрагентов.
- Проверяет, вся ли номенклатура сопоставлена.
Документ_[Тип загружаемого документа 1С]: СоздатьДокумент
- Если никакой специфики загрузки для данного типа документа 1С нет, то передает обработку в форму Документ_Шаблон.
Данную форму и функцию можно переопределить в обработке "ВнешниеФункции_Клиент.epf" для реализации своего алгоритма загрузки определенного типа документа.
Документ_Шаблон: СоздатьДокумент
- Вызывает функцию заполнения данных документа (ЗаполнитьДанныеДокумента1С).
- Записывает статус и идентификаторы пакета и вложения для созданного документа.
Документ_Шаблон: ЗаполнитьДанныеДокумента1С
- Вызывает функцию формирования структуры данных документа (ЗаполнитьДаннымиСтруктурыФайлаСтруктуруДокумента).
- Вызывает функцию создания документа 1С по структуре данных (СоздатьДокументИзСтруктуры).
- Ищет пользовательскую форму для данного типа документа (Документ_[Тип загружаемого документа 1С]) с функцией "ДопРасчетыПриЗагрузке" и при наличии вызывает ее. В данной функции обычно производятся какие-то расчеты, не связанные с загрузкой данных из файла, а связанные непосредственно с самим документом 1С. Например, при заведении документа в 1С вручную при выборе номенклатуры заполняются сразу несколько полей в строке табличной части (например, % скидки, производитель и т.д.). В функции ДопРасчетыПриЗагрузке можно перебрать строки загруженного документа и для каждой строки вызвать тот же обработчик, что вызывается при ручном вводе номенклатуры, таким образом заполнятся все данные, которые не были загружены из файла, но должны быть заполнены в документе.
Документ_Шаблон: ЗаполнитьДаннымиСтруктурыФайлаСтруктуруДокумента
- Перебирает узлы файла настроек для загрузки документа и заполняет данные в структуре.
Документ_Шаблон: СоздатьДокументИзСтруктуры
- Перебирает поля структуры и записывает значения в одноименные реквизиты документа 1С.