Меню


Курсы СтимулСправочникПолезные материалы1С:Предприятие 8.2Управление небольшой фирмой…Общее

1С:Предприятие 8.2 /
Управление небольшой фирмой для Украины /
Общее

Оглавление

Обмен с сайтом через веб-сервис

Примеры текстов программных модулей

 

В конфигурации "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();  
    } 
    }

Нас находят: 1с web сервис получение данных, обмен с 1с можно только через SOAP


Подписка на новости RSS

Мы на Facebook