Обмен с сайтом через веб-сервис
В конфигурации "1С:Управление небольшой фирмой для Украины" реализован вариант обмена, при котором обмен инициализируется и выполняется со стороны сайта. Основой такого обмена является использование веб-сервиса, который содержит функции получения данных информационной базы. При этом вся логика взаимодействия с веб-сервисом должна быть реализована на стороне сайта, а на стороне конфигурации "Управление небольшой фирмой" достаточно опубликовать веб-сервис.Примеры текстов программных модулей
Примеры текстов программных модулей
В конфигурации "1С:Управление небольшой фирмой для Украины" реализован вариант обмена, при котором обмен инициализируется и выполняется со стороны сайта. Основой такого обмена является использование веб-сервиса, который содержит функции получения данных информационной базы. При этом вся логика взаимодействия с веб-сервисом должна быть реализована на стороне сайта, а на стороне конфигурации "Управление небольшой фирмой" достаточно опубликовать веб-сервис.
Более подробно ознакомиться с форматом обмена данными можно здесь.
Функции веб-сервиса
Взаимодействие с веб-сервисом происходит при помощи следующих функций.
| Функция | Параметры | Возвращаемое значение |
|---|---|---|
| GetItems – возвращает данные по номенклатуре |
ModificationDate (тип dateTime) – дата модификации номенклатуры, GroupCode (тип string) – код группы номенклатуры |
Объект типа КоммерческаяИнформация, содержащий классификатор и каталог |
|
GetAmountAndPrices – возвращает остатки и цены |
ModificationDate (тип dateTime) – дата модификации номенклатуры, GroupCode (тип string) – код группы номенклатуры, WarehouseCode (тип string) – код склада остатков, OrganizationCode (тип string) – код организации остатков |
Объект типа КоммерческаяИнформация, содержащий пакет предложений |
| GetOrders – возвращает заказы покупателей, ранее загруженные с сайта | ModificationDate (тип dateTime) – дата модификации заказов |
Объект типа КоммерческаяИнформация, содержащий документы |
|
GetPicture – получает основное изображение номенклатуры |
ItemID (тип string) – уникальный идентификатор номенклатуры | Значение типа base64Binary, содержащее двоичные данные изображения. |
|
LoadOrders – загружает заказы покупателей в информационную базу |
OrdersData (тип string) – объектXDTO типа КоммерческаяИнформация пакета XDTO urn:1C.ru:commerceml_2, содержащий данные по заказам покупателей |
Значениетипа boolean. Истина – если загружены успешно. |
Если задан параметр ModificationDate, будут выгружены данные, дата изменения которых больше или равна значению этого параметра. Параметры GroupCode, WarehouseCode и OrganizationCode позволяют дополнительно ограничить состав получаемых данных. Например, можно получить только товары входящие в определенную группу, которые есть на остатках на определенном складе по определенной организации.
Примеры текстов программных модулей
Для обращения к функциям веб-сервиса рекомендуется использовать библиотеки для работы с веб-сервисами (SOAP 1.1).
Ниже приведены фрагменты кода, демонстрирующие обращение к методам веб-сервиса. Фрагменты приведены только в демонстративных целях и их работоспособность при решении реальных задач не гарантируется.
Пример кода на языке PHP
// Отключаем кэширование для SOAP.
ini_set("soap.wsdl_cache_enabled", "0");
// Подключаемся к веб-сервису через SOAP.
$client = new SoapClient("http://localhost/Unf/ws/SiteExchange?wsdl",
array("login" => "Абдулов (директор)",
"password" => "",
"exceptions" => 0));
// Инициализируем параметры веб-сервиса для получения данных по номенклатуре.
$params["ModificationDate"] = "2012-12-01";
// Получаем номенклатуру.
$Items = $client->GetItems($params);
// Получаем остатки и цены.
$AmountAndPrices = $client->GetAmountAndPrices($params);
// Получаем заказы покупателей, ранее загруженные с сайта.
$Orders = $client->GetOrders($params);
// Инициализируем параметры веб-сервиса для загрузки заказов.
// Формируем структуру, содержащую заказы покупателей для загрузки в УНФ.
// В качестве примера в структуре содержится один заказ.
$OrdersData = Array(
"ВерсияСхемы" => "2.05",
"ДатаФормирования" => "2013-01-21T11:56:10",
"Документ" => Array(
"Ид" => "5",
"Номер" => "17",
"Дата" => "2013-01-21",
"ХозОперация" => "Заказ товара",
"Роль" => "Продавец",
"Валюта" => "руб",
"Курс" => "1",
"Сумма" => "40000",
"Контрагенты" => Array(
"Контрагент" => Array(
"Ид" => null,
"Наименование" => "Алхимов А.А.",
"ПолноеНаименование" => "ОАО Алхимов А.А.",
"Роль" => "Покупатель",
"Адрес" => Array(
"Представление" => "Тест",
"Комментарий" => "Тест"
)
)
),
"Время" => "11:55:15",
"СрокПлатежа" => "0001-01-01",
"Комментарий" => "Заказ с сайта",
"Налоги" => Array(
"Налог" => Array(
"Наименование" => "НДС",
"УчтеноВСумме" => "true",
"Сумма" => "6101.69"
)
),
"Товары" => Array(
"Товар" => Array(
"Ид" => null,
"Артикул" => "123",
"Наименование" => "Кондиционер Ветерок",
"БазоваяЕдиница" => Array(
"Код" => "796",
"НаименованиеПолное" => "Штука",
"МеждународноеСокращение" => "PCE"
),
"СтавкиНалогов" => Array(
"СтавкаНалога" => Array(
"Наименование" => "НДС",
"Ставка" => "18",
)
),
"ХарактеристикиТовара" => Array
(
"ХарактеристикаТовара" => Array
(
"0" => Array
(
"Наименование" => "6,3 кВт"
)
)
),
"ЗначенияРеквизитов" => Array
(
"ЗначениеРеквизита" => Array
(
"0" => Array
(
"Наименование" => "ВидНоменклатуры",
"Значение" => "Товар"
),
"1" => Array
(
"Наименование" => "ТипНоменклатуры",
"Значение" => "Запас"
)
)
),
"ЦенаЗаЕдиницу" => "40000",
"Количество" => "1",
"Резерв" => "1",
"Сумма" => "400000",
"Единица" => "шт",
"Коэффициент" => "1"
)
),
"ЗначенияРеквизитов" => Array
(
"ЗначениеРеквизита" => Array
(
"0" => Array
(
"Наименование" => "Вид цен",
"Значение" => "Розничная"
),
"1" => Array
(
"Наименование" => "Склад",
"Значение" => "Основной склад"
),
"2" => Array
(
"Наименование" => "Подразделение",
"Значение" => "Маркетинг и продажи"
),
"3" => Array
(
"Наименование" => "Дата отгрузки",
"Значение" => "2013-02-10"
),
"4" => Array
(
"Наименование" => "Статус заказа",
"Значение" => "В работе"
),
)
),
)
);
$params = Array();
$params["OrdersData"] = $OrdersData;
// Загружаем заказ с сайта.
$result = $client->LoadOrders($params);
Пример кода на языке C#
class Program
{
static void Main( string[] args )
{
ExchangeWithSitesPortTypeClient client = new ExchangeWithSitesPortTypeClient("ExchangeWithSitesSoap");
client.ClientCredentials.UserName.UserName = "Test";
client.ClientCredentials.UserName.Password = "";
КоммерческаяИнформация commercialInfo = client.GetItems();
Каталог catalog = null;
foreach ( object item in commercialInfo.Items )
{
if (item is Каталог)
{
catalog = (Каталог)item;
break;
}
}
if (catalog != null)
{
Console.WriteLine("Количество товаров = " + catalog.Товары.Length);
foreach (Товар product in catalog.Товары)
{
Console.WriteLine(String.Format("Наименование товара = '{0}', Единица измерения - {1}", product.Наименование, product.БазоваяЕдиница.НаименованиеПолное));
}
}
else
{
Console.WriteLine("Товары в результатах запроса не найдены");
}
Console.WriteLine("Программа завершена");
Console.ReadKey();
}
}