Для внесения изменений в логику выгрузки или загрузки объектов, необходимо запустить 1С в режиме "Конфигуратор". Затем открыть обработку посредством пункта меню "Файл"-"Открыть".

Редактирование формы обработки не рассматривается в данной статье.

Основная информация о выгружаемых объектах, отборах и порядке выгрузки расположена на вкладке "Настройки".
Логика выгрузки данных из БД (базы данных) учетной системы, а также логика загрузки описана на вкладке "Модуль".


Вкладка "Настройки"

При переходе на данную вкладку, отобразится макет, содержащий в себе несколько именованных областей:

  • ОбъектыВыгрузки - таблица доступных для выгрузки объектов;
  • ФильтрыМножественные - таблица фильтров, для которых может быть определено несколько значений;
  • ФильтрыЕдиничные - таблица фильтров, для которых может быть определено одно значение.

Объекты выгрузки

Таблица хранит весь перечень объектов доступных к выгрузке, при текущей реализации интеграции.

Основные колонки таблицы:

  • выключено - отвечает за возможность выгрузки объект на программном уровне, после отключения объект не будет отображаться в пользовательском интерфейсе;
  • имя объекта - используется при создании списка со стороны пользовательского интерфейса;
  • отображаемое имя - представление объекта, которое увидит пользователь в списке выгружаемых объектов в пользовательском интерфейсе;
  • имя секции - используется при формировании xml файла;
  • имя функции - функция в модуле обработке, которая будет отвечать за выгрузку объекта, задается произвольно.

Фильтры множественные и единичные

Обе таблицы используются для редактирования доступных отборов, каждый отбор глобально влияет на результат выгрузки данных.

Колонки таблиц:

  • тип значения - указывается название типа отбираемого значения, в основном это справочники;
  • вид значения - имя отбираемого объекта в конфигурации 1С;
  • объект выгрузки - основной объект выгрузки, на который будет накладываться отбор;
  • отображается - имя отбора отображаемое в пользовательском интерфейсе.

Состав выгружаемых объектов и перечень доступных фильтров определяется на этапе сбора потребностей клиента. 


Вкладка "Модуль"

Модуль содержит всю логику работы обработки обмена, от интерфейса до отправки данных в сервис посредством FTP.

В данном разделе не будут рассматриваться служебные процедуры и функции, описывающие логику работы элементов управления интерфейса. а также взаимодействие с файловой системой и сервером FTP. 

Выгрузка объектов

Общую логику выгрузки можно описать следующими этапами:

  1. Формирование общих таблиц данных
  2. Выборка данных из БД и запись в XML файл
  3. Сохранение XML файла в каталоге обмена
  4. Архивирование и отправка файла на FTP сервер
  5. Формирование и сохранение отчета в каталог обмена о результатах выгрузки

Формирование общих таблиц данных

Данный этап выгрузки отвечает за получение первичных данных, которые в дальнейшем будут использоваться при выгрузке других объектов.
За формирование общих таблиц отвечает одноименная процедура, фрагмент которой представлен ниже.

Фрагмент

 Процедура ФормированиеОбщихТаблиц()

Изменения в данную процедуру вносятся в случае добавления объектов выгрузки, которые имеют ссылки на другие объекты.
Например, добавляя выгрузку территории торговых представителей, важно учесть, что данный объект связан с торговыми точками и сотрудникам, следовательно эти объекты также необходимо выгружать. 

Выборка данных из БД и запись в XML файл

Точкой входа для данного этапа, является процедура "ВыгрузитьДанные()".
Ранее, с каждому выгружаемому объекту присваивалось имя функции, которая будет отвечать за выгрузку данных.
Процедура "ВыгрузитьДанные()" вызывает функцию, которая соответствует объекту.

Рассмотрим пример функции, отвечающей за выгрузку фирм.

Пример

 Функция ВыгрузитьСпрФирмы()

Все процедуры выгружаемых объектов, необходимо описывать в модуле!

Пользовательские процедуры и функции для формирования XML файла
 ДобавитьРаздел(пРаздел, пИмя, пПолный, пКоммент)

Описание входных параметров:

  • пРаздел - тип создаваемого раздела (по-умолчанию "reference")
  • пИмя - имя добавляемого раздела
  • пПолный - признак замещения объектов при загрузке в сервис
  • пКоммент - комментарий

Возвращаемое значение - элемент XML документа.

Пример вызова функции и результат

Результат
<reference name="ref_firms" complete="false" comment="Фирмы">
 ДобавитьОбъект()

Возвращает элемент XML типа "object"

Пример вызова функции и результат

Результат
<object>
 ДобавитьПотомкаХМЛ(лРодитель, лНазвание, лЗначение, лТип = 0)

Добавляет дочерний элемент с указанным содержимым.
Тип переданного значения определяется внутри процедуры.

Описание входных параметров:

  • лРодитель - элемент XML, владелец создаваемого элемента
  • лНазвание - имя добавляемого элемента
  • лЗначение - значение, которое будет записано в элемент

Пример вызова процедуры и результат

Результат
<property name="name">
	<string>Рога и копыта</string>
</property>
 ДобавитьСвойствоСсылка(лРодитель, лИмя, лТип, лИмяСсылки, лЗначение)

Добавляет дочерний элемент ссылочного типа.

Описание входных параметров:

  • лРодитель - элемент XML, владелец создаваемого элемента
  • лИмя- имя добавляемого элемента
  • лТип - тип добавляемого элемента ("reference")
  • лИмяСсылки - имя объекта, на который ссылается значение
  • лЗначение - идентификатор объекта

Пример вызова процедуры и результат

Результат
<property name="unit">
	<link reference="ref_units" sid="123456789-123123132"/>
</property>
 ДобавитьНоду(nodeParent, nodeChild, пДобавлять = 1)

Добавляет элемент к родительскому элементу.

Описание входных параметров:

  • nodeParent- элемент XML, владелец 
  • nodeChild- элемент ХМL. являющийся дочерним

Пример вызова функции

Сохранение XML файла в каталоге обмена

Сформированный XMl файл, сохраняется в подкаталоге "clients" каталога обмена, который был указан интерфейсной части при настройке обмена.

Имя файла состоит из текущей даты и времени.

Архивирование и отправка файла на FTP сервер

Если при настройке обработки, было выбрано свойство "Использовать ФТП",  XML файл будет сжат в zip архив и отправлен на FTP сервер по указанным параметрам подключения.

Если действия по установке компоненты не выполнены, то обмен по FTP будет недоступен.

После успешной отправки, файл сменит своё расширение на old.

Формирование и сохранение отчета в каталог обмена о результатах выгрузки

Отчет о результате выгрузки будет доступен в подкаталоге "reports" каталога обмена.
Отчет имеет формат mxl, ознакомится с содержимым можно открыв его в 1С.

Загрузка объектов

Общая логика загрузки объектов состоит из следующих этапов:

  1. Получение файлов с FTP сервера
  2. Загрузка объектов
  3. Отправка подтверждения о загрузке
  4. Формирование и сохранение отчета о загрузке

Получение файлов с FTP сервера

При старте загрузке данных, обработка связывается с FTP сервером и загружает файлы, сформированные сервисом.
Загруженные файлы помещаются в подкаталог "server" каталога обмена. 

Далее следует распаковка и чтение XML файла.

Загрузка объектов

За загрузку объектов отвечает процедура "ЗагрузитьДанные()", которая обрабатывает каждый принятый XML файл и вызывает процедуры загрузки документов\справочников.

Фрагмент

 Процедура ЗагрузитьДанные()

Загрузку отдельного вида документа можно разделить на два этапа:

  • Получение значений из XML
  • Создание и запись документов

Отправка подтверждения о загрузке

Каждый успешно загруженный документ добавляется в специализированный файл-хранилище (ObjectsIn.xml), содержащий перечень всех загруженных документов в 1С, их идентификаторы, тип документа и дата загрузки.

Образец

Пример содержимого файла ObjectsIn.xml.

ObjectsIn.xml
<?xml version="1.0" encoding="utf-8"?>
<objects>
	<object codeIn='{"O","0","0","2457","0","0","   2723648   "}' codeOut="d9283da3-f057-4ecd-9224-0c1ac90c546b" type="doc_preorders" date="10/7/2019"/>
	<object codeIn='{"O","0","0","1656","0","0","   2723649   "}' codeOut="819eda5e-6295-4921-85b2-f414c708e9c0" type="doc_goodsreturns" date="10/7/2019"/>
</objects>

На основании этого же файла, формируется подтверждение о загрузке объектов для сервиса.

Образец

Пример подтверждения о загрузке объектов для сервиса.

Подтверждение загрузки
<?xml version="1.0" encoding="utf-8"?>
<package>
	<confirmation bundle="42325d45-e9c6-4705-b6cb-5f4cdb2d7fc4"/>
	<bundle>
		<reference name="doc_preorders" complete="false" comment="Заказы">
			<object sid='{"O","0","0","2457","0","0","   2723648   "}' did="d9283da3-f057-4ecd-9224-0c1ac90c546b"/>
		</reference>
		<reference name="doc_goodsreturns" complete="false" comment="Возвраты">
			<object sid='{"O","0","0","1656","0","0","   2723649   "}' did="819eda5e-6295-4921-85b2-f414c708e9c0"/>
		</reference>
	</bundle>
</package>
Подтверждение будет сжато в zip архив и отправлено на сервер FTP. Также как и при обычной выгрузке объектов.

Внимание!

В случае отсутствия элемента "confirmation" и идентификатора принятого пакета, выгрузка объектов будет повторяться, пока пакет не будет подтвержден.

Формирование и сохранение отчета о загрузке

Происходит аналогично, как и в процессе выгрузки.

  • Нет меток