Довідковий матеріал

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

У конфігурації "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();  
    } 
    }
Записатися телефоном