Обмен информацией с системой 1С производится путем импорта-экспорта XML-файлов в формате, специально разработанном для этого фирмой 1С. Данный формат называется CommerceML (CML) и представляет собой набор XML-тегов, для чтения и записи которых в составе стандартных конфигураций 1С есть процедуры.
CML изначально предназначен для обмена коммерческой информацией с приложениями типа «интернет-магазин», поэтому данный формат имеет существенные ограничения. Так, список типов документов, которыми можно обмениваться через него, жестко зафиксирован. Однако, во-первых, даже этим списком можно воспользоваться, сопоставив перечисленным в стандарте CML видам документов свое их наполнение, а во-вторых - всегда остается возможность создать собственное расширение CML или даже собственный XML-формат обмена данными - правда, для этого придется допрограммировать как 1С, так и ТБ.Корпорацию.
По стандарту CML в одном файле может передаваться вся информация, нужная для импорта-экспорта бизнес-данных: справочник номенклатуры ТМЦ, возможно, разделенный на части (каталоги); справочник контрагентов и информация о них; информация о нашем предприятии; банковские реквизиты сторон; документы различных типов со списками товарных позиций и ссылками на указанную выше информацию.
В ТБ.Корпорации реализованы две сервисные процедуры, которые можно использовать в реквизитах типа «Сервисная процедура». Это процедуры «Экспорт документа в формат CML (для 1С)» (Управление\Сервис\Реквизит\блСервисЭкспортВ1С.cod) и «Импорт документа из формата CML (для 1С)» (Управление\Сервис\Реквизит\блСервисИмпортИз1С.cod). Каждая из процедур имеет дополнительные параметры. В основном это перечисление реквизитов, из которых берется информация при экспорте документов и в которые информация записывается при импорте, плюс дополнительные настройки.
Настройщик должен создать в информационной базе реквизиты - сервисные процедуры, настроить их параметры, а затем вызвать их из пересчетов или расположив данные реквизиты в виде кнопок на представлении документа или на панели сервисов.
Точная реализация алгоритмов обмена информацией через CML может отличаться в разных версиях и конфигурациях 1С. Так, в конфигурации «Торговля+Склад» версии 7.7 данные алгоритмы собраны в обработках с именами, начинающимися с «XML…». Это довольно простые алгоритмы, чтение которых настоятельно рекомендуется для понимания способов работы с форматом CML в 1С.
В рабочем режиме «1С:Предприятия» указанной выше конфигрурации команды обмена информацией через формат CML собраны в меню «Сервис» вместе с остальными командами импорта-экспорта, а также доступны в некоторых (почему-то) типах документов по кнопке «Действия» в форме документа.
Для синхронизации информации в базе данных 1С и ТБ.Корпорации применяются следующие механизмы:
ДобавитьОперацию("Покупатель", "Order", "ЗаказПоставщику", "Заказ товара"); ДобавитьОперацию("Покупатель", "PayableBill", "ПлатежноеПоручение", "Счет на оплату"); ДобавитьОперацию("Покупатель", "Sale", "ПоступлениеТМЦ", "Поступление товара"); ДобавитьОперацию("Покупатель", "Comission", "ПоступлениеТМЦ", "Прием товара на реализацию"); ДобавитьОперацию("Покупатель", "BackSale", "ВозвратОтПокупателя", "Возврат товара от покупателя"); ДобавитьОперацию("Покупатель", "BackComission", "ВозвратОтПокупателя", "Возврат товара от комиссионера"); ДобавитьОперацию("Покупатель", "Invoice", "СчетФактураПолученный", "Счет-Фактура поставщика"); ДобавитьОперацию("Продавец", "Order", "ЗаявкаПокупателя", "Заказ товара"); ДобавитьОперацию("Продавец", "PayableBill", "ЗаявкаПокупателя", "Счет на оплату"); ДобавитьОперацию("Продавец", "Sale", "Реализация", "Отпуск товара"); ДобавитьОперацию("Продавец", "Comission", "Реализация", "Передача товара на реализацию"); ДобавитьОперацию("Продавец", "BackSale", "ВозвратПоставщику", "Возврат товара поставщику"); ДобавитьОперацию("Продавец", "BackComission", "ВозвратПоставщику", "Возврат товара комитенту"); ДобавитьОперацию("Продавец", "Invoice", "СчетФактураВыданный", "Счет-Фактура"); ДобавитьОперацию("Получатель", "Cash", "ПКО", "Поступление наличных денег от покупателя"); ДобавитьОперацию("Получатель", "BackCash", "ПКО", "Возврат наличных денег от поставщика"); ДобавитьОперацию("Получатель", "Payment", "СтрокаВыпискиПриход", "Поступление безналичных денег от покупателя"); ДобавитьОперацию("Получатель", "BackPayment", "СтрокаВыпискиПриход", "Возврат безналичных денег от поставщика"); ДобавитьОперацию("Получатель", "ReportComission", "ОтчетКомиссионера", "Отчет комиссионера"); ДобавитьОперацию("Плательщик", "ReportComission", "ОтчетКомитенту", "Отчет комитенту"); ДобавитьОперацию("Плательщик", "Cash", "РКО", "Выплата наличных денег поставщику"); ДобавитьОперацию("Плательщик", "BackCash", "РКО", "Возврат наличных денег покупателю"); ДобавитьОперацию("Плательщик", "Payment", "СтрокаВыпискиРасход", "Выплата безналичных денег поставщику"); ДобавитьОперацию("Плательщик", "BackPayment", "СтрокаВыпискиРасход", "Возврат безналичных денег покупателю");
По аналогичным правилам производится и экспорт данных из 1С в формат CML - константа хозяйственной операции определяется на основании типа документа и места в нем нашего предприятия.
Стандарт CML был разработан для решения определенных задач (обмен коммерческой информации в торговле) и поэтому может не подойти в каких-то случаях в силу своей жесткости (фиксированный список ролей контрагентов и хозяйственных операций). В этом случае можно реализовать собственный формат обмена данными, являющийся надмножеством CML или просто базирующийся на XML. В ТБ.Корпорации для этого можно использовать классы группы XML из проекта СИС2 (на них и базируется обмен данными через формат CML, но это не единственное возможное их приложение), а в 1С - объект типа «AddIn.XMLParser», предоставляющий доступ к XML DOM - структуре.
В качестве формата обмена можно также использовать стандартный XML-формат выгрузки данных из ТБ.Корпорации. Тогда со стороны ТБК программировать ничего не потребуется, но со стороны 1С придется написать полноценный алгоритм импорта.