Дерево страниц

Информация про интеграцию с 1С в том числе рассказана в видео:

Общие объекты

Общие модули

  • АгораAPI - процедуры и функции для формирования содержимого и чтения XML-файла обмена
  • АгораВыгрузка - процедуры для выгрузки данных в файл обмена
  • АгораЗагрузка - процедуры для загрузки данных из файла обмена
  • АгораОбменССайтом - процедуры для отправки и получения файлов наа портал
  • АгораОбщий - процедуры общего назначения
  • АгораРегистрацияИзменений - процедуры для регистрации объектов в плане обмена
  • АгораСерверПовтИсп - модуль с повторным использованием значения для кэширования.

Планы обмена

  • АгораОбмен - план обмена для регистрации изменений для выгрузки данных

Подписки на события

  • АгораОбъекты - регистрация справочников и документов при записи
  • АгораРегистрыПередЗаписью - регистрация изменений регистров сведений
  • АгораРегистрыПриЗаписи - регистрация изменений регистров сведений
  • АгораУдаление - регистрация удаления справочников и документов
  • АгораРегистрыПередЗаписьюСтатусы - регистрация изменений статусов заказов клиентов и расчетов с клиентами
  • АгораРегистрыПриЗаписиСтатусы - регистрация изменений статусов заказов клиентов и расчетов с клиентами
  • АгораОбъектыПередЗаписью - регистрация изменений иерархических справочников
  • АгораДокументыПередЗаписью - не используется, добавлен для возможности расширения

Регламентные задания

  • АгораОбмен - формирование файлов обмена, отправка файлов на портал, получение файлов с портала, загрузка данных. Запуск каждые 60 сек

XDTO-пакеты

  • Агора - содержит схему формирования XML-файла обмена

Регистры сведений

  • АгораЗаказы - для хранения признака заказов, пришедших с портала
  • АгораИзмененияЦенОстатков - для регистрации изменений цен и остатков товара
  • АгораИсторияОбменаДанными - история обмена с порталом и выгрузки/загрузки данных
  • АгораКонтрагенты - для хранения признака контрагентов портала
  • АгораНоменклатура - для хранения признака номенклатуры портала
  • АгораПакетыОбменаДанными - для хранения сформированных и полученных файлов обмена
  • АгораПараметры - для хранения параметров работы шлюза
  • АгораСтатусыЗаказов - статусы заказов для портала
  • АгораСтатусыОбъектов - статусы произвольных объектов, не используется

Обработки

  • АгораНастройкаОбменаДанными - настройка шлюза
  • АгораПолнаяВыгрузка - регистрация и выгрузка данных на портал

Работа со схемой данных

Для каждого объекта метаданных, для которого необходим обмен с порталом требуется описать свойство в типе AgoraMessage:

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

Имя типа свойства должно совпадать с именем метаданных.

Для объектов также должны быть заданы свойства для выгруки на портал + свойство "ВремяИзменения". При выгрузке по умолчанию заполняется текущей датой.

Табличные части объектов описываются свойством вида <Имя табличной части>_add_<Имя объекта-владельца> и имеют одно свойство вида <Имя табличной части>Строка_add_<Имя объекта-владельца>, с заданным локальным именем "Строка":

Если для определения значения свойства требуется дополнительные преобразования или вызов кода 1С, то в имени свойства добавляется префикс "f_" и задается локальное имя:

В таком случае в общем модуле АгораAPI должна быть описана экспортная функция с именем, совпадающим с именем свойства, которая возвращает значение свойства для выгрузки в XML. Параметр процедуры - Структура с ключами ИмяОбъекта, Объект, ОбъектСтруктура.

Регистрация данных

Регистрация происходит в подписках на события при записи объектов. Для некоторых объектов применяются фильтры при регистрации:

Справочник "Контрагенты"

Для выгрузки регистрируются только те контрагенты, для которых присутствует запись в регистре "АгораКонтрагенты". Запись автоматически добавляется при загрузке контрагента с портала.

Справочник "Номенклатура", Справочник "ХарактеристикиНоменклатуры"

Для выгрузки регистрируются только та номенклатура, для которой присутствует запись в регистре "АгораНоменклатура" и ресурс "Вид флажка" равен 1. Регистрация характеристик происходит аналогично, с проверкой по номенклатуре.

Документ "ЗаказКлиента", Документ "СверкаВзаиморасчетов"

Для выгрузки регистрируются только те документы, для которых есть запись в регистре "АгораЗаказы". Запись автоматически добавляется при загрузке документа с портала.

Регистр сведений "ЦеныНоменклатуры", Регистр накопления "СвободныеОстатки"

При изменениях в этих регистрах создаются записи в регистре сведений "АгораИзмененияЦенОстатков" и регистрируются для выгрузки

Автоматический обмен по расписанию

Регламентное задание запускается каждые 60 сек. Для каждого из узлов плана обмена "АгораОбмен" запускается отдельное фоновое задание по загрузке/выгрузке данных. Загрузка и выгрузка выполняются последовательно. При начале работы каждого задания проверятся строка соединения информационной базы - если строка не соответствует сохраненной в регистре "АгораПараметры", то процедура завершается без выполнения каких-либо действий.

Обмен с порталом

Файлы обмена получаются с портала по протоколу HTTP и сохраняются в регистре "АгораПакетыОбменаДанными". При выгрузке на портал выбираются записи регистра с направлением обмена "исходящее" и без флагов "Обработано" и "Карантин". При успешной обработке файла устанавливается флаг "Обработано". При возникновении ошибок устанавливается флаг "Карантин" и поле "Комментарий" запоняется описанием ошибки.

Формирование исходящего XML-файла

Формирование запускается в процедуре "АгораВыгрузка.ВыгрузитьИзменения(УзелОбмена, ТекстСообщения="")". В процедуре, в свою очередь запускаются фоновые задания "АгораВыгрузка.СформироватьMessage" для каждой очереди обмена (от 0 до 3). Каждое задание формирует файл обмена с различным набором объектов.

Распределение объектов по очередям

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

Распределение по умолчанию:

Номер очередиПриоритетИмя очередиОбъекты метаданных
0Maximumorder/РегистрСведений.АгораПакетыОбменаДанными
1Maximumorder/Документ.СверкаВзаиморасчетов
Документ.ЗаказКлиента
РегистрНакопления.РасчетыСКлиентами
2Highproduct/Справочник.ВидыЦен
Справочник.Склады
Справочник.УпаковкиЕдиницыИзмерения*
Справочник.ЕдиницыИзмерения*
Справочник.Контрагенты
Справочник.Номенклатура
Справочник.ХарактеристикиНоменклатуры
Справочник.СерииНоменклатуры*
Справочник.СоглашенияСКлиентами
РегистрСведений.АгораИзмененияЦенОстатков
РегистрСведений.КурсыВалют
3Normal
Справочник.Организации
Справочник.Валюты    
Справочник.Пользователи    
ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения            
Справочник.НоменклатураПрисоединенныеФайлы                  
Справочник.СкидкиНаценки
РегистрСведений.ДействиеСкидокНаценок


* Если присутствует в конфигурации

Выборка данных

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

Формирование объекта XDTO "АгораMessage"

Для каждого выгружаемго объекта формируется структура данных, которая содержит все его реквизиты и таб. части, а так же иные данные, необходимые для выгрузки. Формирование структуры происходит в функции "АгораAPI.ПодготовитьСтруктуруОбъекта". В этой функции в структуру добавляются все реквизиты и ТЧ. Добавление дополнительных данных или переопределение значений реквизитов производится в процедуре "АгораAPI.ОбработкаОбъекта1CЭкспорт".

Для каждой строки таблицы выборки вызывается процедура "АгораВыгрузка.ДобавитьОбъектВСообщениеОбмена". В процедуре происходит формирование одиночного XDTO-объекта и добавление его в общий АгораMessage.

Формирование одиночных XDTO-объектов

Для выгрузки произвольных данных, без объекта данных, вместо объекта необходимо передать имя типа XDTO. Для объектов имя типа XDTO определяется по метаданным. При необходимости переопределить имя типа это необходимо делать в процедуре "АгораВыгрузка.ПолучитьИмяОбъектаXDTO".

Далее осуществляется поиск свойства объекта АгораMessage с полученным именем. Если свойство не найдено, то выгрузка не производится. Если найдено, то создается объект XDTO.

Для полученного объекта XDTO проихводится перебор всех его свойств и получение значения для выгрузки по следующему алгоритму:

  1. Если имя свойства совпадает с ключом структуры данных объекта, то значение получается из структуры данных
  2. Если имя свойства начинается с подстроки "f_", то значение получается из функции АгораAPI.f_<Имя свойства>. Функция имеет один параметр, куда передается структура с ключами:
    • "ИмяОбъекта" - имя типа XDTO заполняемого объекта
    • "Объект" - выгружаемый объект / набор записей
    • "ОбъектСтруктура" - структура данных объекта

Если значение получено, то происходит его запись в объект XDTO в зависимости от типа значения:

  • Для ссылочных типов (справочники, документы, ПВХ) в свойство записывается уникальный идентификатор ссылки.
  • Для перечислений - строковое представление
  • Для Булево - 0 или 1, определяется в функции АгораОбщий.ФорматБулевоАгора
  • Формат чисел определяется в функции АгораОбщий.ФорматЧислаАгора
  • Двоичные данные преобразовываются в строку Base64.
    • Если в структуре объекта установлен признак ЭтоКартинка, то в свойство записывается имя файла из структуры объекта, двоичные данные записываются в отдельный пакет (запись регистра "АгораПакетыОбменаДанными")
  • Если получнное значение является таблицей значений, то преобразовывается в соответствующий объект XDTO в функции ПолучитьТаблицуXDTO
  • Остальные типы остаются без изменений

После завершения формирования объекта XDTO вызывается доп. процедура обработки "АгораAPI.ОбработкаОбъектаXDTOЭкспорт" для внесения доп. изменений в сформированный объект.

Если выгружается объект, а не удаление объекта, то дополнительно вызывается процедура для постобработки объекта: "АгораAPI.ПостОбработкаОбъекта1CЭкспорт". При постобработке справочника номенклатуры в файл обмена дополнительно выгружаются значения дополнительных свойств и реквизитов номенклатуры.

Сформированный АгораMessage 

Выгруженные объекты сохранются в отдельный массив и при успешном формировании объекта АгораMessage удаляются из регистрации изменений.

Загрузка входящего файла обмена

Для загрузки выбираются записи регистра "АгораПакетыОбменаДанными" без признаков "Обработано" и "Карантин". 

Содержимое пакета считывается в объект АгораMessage, после чего формируется таблица объектов XDTO для загрузки в функции "АгораЗагрузка.ПолучитьТаблицуОбъектовXDTO".

Процедуры загрузки:

АгораAPI.ОбработкаОбъектаXDTOИмпорт - для изменения объекта XDTO перед загрузкой

АгораЗагрузка.ОбработкаОбъектаXDTO - обарботка загрузки удаления, запроса данных

АгораЗагрузка.ЗагрузкаОбъектаXDTO - заполнение объекта по совпадающим именам свойств объекта XDTO

АгораAPI.ОбработкаОбъекта1СИмпорт - дополнительная обработка объекта ИБ до записи - пересчет ТЧ, заполнение отсутствующих в XDTO реквизитов и т.д.

АгораОбщий.ЗаписатьОбъект - запись объекта в ИБ. Если тип объекта документ и есть флаг "проведен" в XDTO - документ проводится

АгораAPI.ОбработкаОбъекта1СИмпортПослеЗаписи - постобработка объекта 1С после записи в ИБ

  • Нет меток