Информация про интеграцию с 1С в том числе рассказана в видео:
Для каждого объекта метаданных, для которого необходим обмен с порталом требуется описать свойство в типе AgoraMessage:
Имя свойства должно совпадать с именем метаданных объекта, локальное имя может использоваться, если для портала требуется изменить имя свойства при выгрузке.
Имя типа свойства должно совпадать с именем метаданных.
Для объектов также должны быть заданы свойства для выгруки на портал + свойство "ВремяИзменения". При выгрузке по умолчанию заполняется текущей датой.
Табличные части объектов описываются свойством вида <Имя табличной части>_add_<Имя объекта-владельца> и имеют одно свойство вида <Имя табличной части>Строка_add_<Имя объекта-владельца>, с заданным локальным именем "Строка":
Если для определения значения свойства требуется дополнительные преобразования или вызов кода 1С, то в имени свойства добавляется префикс "f_" и задается локальное имя:
В таком случае в общем модуле АгораAPI должна быть описана экспортная функция с именем, совпадающим с именем свойства, которая возвращает значение свойства для выгрузки в XML. Параметр процедуры - Структура с ключами ИмяОбъекта, Объект, ОбъектСтруктура.
Регистрация происходит в подписках на события при записи объектов. Для некоторых объектов применяются фильтры при регистрации:
Для выгрузки регистрируются только те контрагенты, для которых присутствует запись в регистре "АгораКонтрагенты". Запись автоматически добавляется при загрузке контрагента с портала.
Для выгрузки регистрируются только та номенклатура, для которой присутствует запись в регистре "АгораНоменклатура" и ресурс "Вид флажка" равен 1. Регистрация характеристик происходит аналогично, с проверкой по номенклатуре.
Для выгрузки регистрируются только те документы, для которых есть запись в регистре "АгораЗаказы". Запись автоматически добавляется при загрузке документа с портала.
При изменениях в этих регистрах создаются записи в регистре сведений "АгораИзмененияЦенОстатков" и регистрируются для выгрузки
Регламентное задание запускается каждые 60 сек. Для каждого из узлов плана обмена "АгораОбмен" запускается отдельное фоновое задание по загрузке/выгрузке данных. Загрузка и выгрузка выполняются последовательно. При начале работы каждого задания проверятся строка соединения информационной базы - если строка не соответствует сохраненной в регистре "АгораПараметры", то процедура завершается без выполнения каких-либо действий.
Файлы обмена получаются с портала по протоколу HTTP и сохраняются в регистре "АгораПакетыОбменаДанными". При выгрузке на портал выбираются записи регистра с направлением обмена "исходящее" и без флагов "Обработано" и "Карантин". При успешной обработке файла устанавливается флаг "Обработано". При возникновении ошибок устанавливается флаг "Карантин" и поле "Комментарий" запоняется описанием ошибки.
Формирование запускается в процедуре "АгораВыгрузка.ВыгрузитьИзменения(УзелОбмена, ТекстСообщения="")". В процедуре, в свою очередь запускаются фоновые задания "АгораВыгрузка.СформироватьMessage" для каждой очереди обмена (от 0 до 3). Каждое задание формирует файл обмена с различным набором объектов.
Выгружаемые объекты задаются в функции "ПолучитьМассивОбъектовПоНомеруОчереди(НомерОчереди)". Функция возвращает структуру из имени очереди (имя конечной точки при выгрузке на портал) и список объектов метаданных. При добавлении новых объектов для выгрузки необходимо внести изменения в эту функцию.
Распределение по умолчанию:
Номер очереди | Приоритет | Имя очереди | Объекты метаданных |
---|---|---|---|
0 | Maximum | order/ | РегистрСведений.АгораПакетыОбменаДанными |
1 | Maximum | order/ | Документ.СверкаВзаиморасчетов Документ.ЗаказКлиента РегистрНакопления.РасчетыСКлиентами |
2 | High | product/ | Справочник.ВидыЦен Справочник.Склады Справочник.УпаковкиЕдиницыИзмерения* Справочник.ЕдиницыИзмерения* Справочник.Контрагенты Справочник.Номенклатура Справочник.ХарактеристикиНоменклатуры Справочник.СерииНоменклатуры* Справочник.СоглашенияСКлиентами РегистрСведений.АгораИзмененияЦенОстатков РегистрСведений.КурсыВалют |
3 | Normal | Справочник.Организации Справочник.Валюты Справочник.Пользователи ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения Справочник.НоменклатураПрисоединенныеФайлы Справочник.СкидкиНаценки РегистрСведений.ДействиеСкидокНаценок |
* Если присутствует в конфигурации
Для каждого объекта метаданных вызывается функция ВыбратьИзменения. Результат вызова - таблица значений с колонками "Объект" и "ДополнительныеПараметры". Объект - объект данных выборки, дополнительные параметры - структура с дополнительными данными, которые могут потребоваться при выгрузке.
Для каждого выгружаемго объекта формируется структура данных, которая содержит все его реквизиты и таб. части, а так же иные данные, необходимые для выгрузки. Формирование структуры происходит в функции "АгораAPI.ПодготовитьСтруктуруОбъекта". В этой функции в структуру добавляются все реквизиты и ТЧ. Добавление дополнительных данных или переопределение значений реквизитов производится в процедуре "АгораAPI.ОбработкаОбъекта1CЭкспорт".
Для каждой строки таблицы выборки вызывается процедура "АгораВыгрузка.ДобавитьОбъектВСообщениеОбмена". В процедуре происходит формирование одиночного XDTO-объекта и добавление его в общий АгораMessage.
Для выгрузки произвольных данных, без объекта данных, вместо объекта необходимо передать имя типа XDTO. Для объектов имя типа XDTO определяется по метаданным. При необходимости переопределить имя типа это необходимо делать в процедуре "АгораВыгрузка.ПолучитьИмяОбъектаXDTO".
Далее осуществляется поиск свойства объекта АгораMessage с полученным именем. Если свойство не найдено, то выгрузка не производится. Если найдено, то создается объект XDTO.
Для полученного объекта 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С после записи в ИБ