Протокол обмена данными

Протокол обмена данными между ГИС "Агроаналитика" и 1С

  1. Формат запроса

    Все запросы осуществляются только методом POST на адрес "http://88.198.114.162:30101/rest/api/one_s".
    Параметры должны быть представлены в формате JSON. Ответ так же возвращается в виде JSON. Все текстовые параметры, посланные и принятые, предполагают использование кодировки UTF-8.
    Шаблон запроса:
    {"m":"...","p":{...}}

    “m”: (string),  - тип запроса

    “s”: (string),        - uid сессии (для всех запросов кроме login)


    Шаблон ответа:
    {"o":{...}}

    Если ошибка ответ: “e”: (string) – информация о ошибке

  2. Подключение

    {"m":"c","p":{"l":"user","pa":"3"}}

    "l": (string)  - логин

    "pa": (string)  - пароль

    ответ:

    "s": (string) - uid сессии


    В случае удачного входа - {"o":{"s":"2CEF8F2F851B1E2188AF63D76480359F"}}
    В случае неудачного входа - {"o":{"s":null,"e":"неправильный логин или пароль"}}
    или
    {"o":{"s":null,"e":"нет прав на подключение"}}

  3. Отключение

    {"m":"d","p":{"s":"2CEF8F2F851B1E2188AF63D76480359F"}}
    ответ:
    {"o":{"s":null}}

  4. Выгрузка из 1С справочников:

    Получить объекты AA без идентификатора 1C:

    тип объекта:

    11 – геозона (поле)

    12 – водитель

    13 – транспорт

    14 – прицепное

    15 – культура

    16 – вид работ

    18 – организация

    Запрос:  {"m":"g_o", “p”:{ “t”:“ID сессии”}}

    “t”: (number)- тип объектов

    Ответ:  

    {“n”: “id”:}, ...]

    “n”: string         - наименование,

    “id”: number     - id объектa АА

    - добавление новой строки справочника 1с
    {"m":"i","p":{"s":"2CEF8F2F851B1E2188AF63D76480359F","t":16,"UUID":"4e82fffe-c975-11e0-89ab-c80aa90473c2","UUID_P":"4e82ffc8-c975-11e0-89ab-c80aa90473c2","n":"Внесение минер. удобр. 101-150 кг/га"}}
    возможные значения параметра "t":
    11 – геозона (поле)
    12 – водитель
    13 – транспорт
    14 – прицепное
    15 – культура
    16 – вид работ
    17 – подвид работ
    18 – организация
    19 – склады ГСМ
    24 – условие работы
    ответ:
    в случае успеха - {"o":"ok"}
    в случае ошибки - {"o":{"e":"ошибка…"}}
    - изменение наименования (меняется наименование в справочнике 1с)
    {"m":"e","p":{"s":"2CEF8F2F851B1E2188AF63D76480359F","UUID":"4e82fffe-c975-11e0-89ab-c80aa90473c2","n":"новое наименование в справочнике 1с"}}
    ответ:
    в случае успеха - {"o":"ok"}
    в случае ошибки - {"o":{"e":"UUID не найден"}}
    - удаление строки справочника 1с
    {"m":"del","p":{"s":"2CEF8F2F851B1E2188AF63D76480359F","UUID":"4e82fffe-c975-11e0-89ab-c80aa90473c2"}}
    ответ:
    в случае успеха - {"o":"ok"}
    в случае ошибки - {"o":{"e":"ошибка…"}}
    - изменение наименования (меняется имя объекта в ГИС Агроаналитика)
    {"m":"e_a","p":{"s":"2CEF8F2F851B1E2188AF63D76480359F","UUID":"6183a05c-a3df-11e3-9a58-c80aa90473c2","n":" новое наименование в агроаналитике"}}
    ответ:
    в случае успеха - {"o":"ok"}
    в случае ошибки - {"o":{"e":"UUID не найден"}}

  5. Загрузка в 1С

    - запрос идентифицированных строк справочника 1с
    {"m":"f","p":{"s":"C626B7823028DBDF85BA225052422115","n":"i"}}
    ответ:
    {"o":{"dс":872,"d":["acbb7bfa-64f8-11e0-a425-001e0b831428","acbb7bfb-64f8-11e0-a425-001e0b831428"]}}
    - запрос списка для загрузки
    {"m":"f","p":{"s":"2CEF8F2F851B1E2188AF63D76480359F","n":"наименование списка","df":"29.01.2015 00:00:00","dt":"29.01.2015 20:00:00"}}
    - путевые листы тракториста {"m":"f","p":{"s":"2CEF8F2F851B1E2188AF63D76480359F","n":"t","df":"29.01.2015 00:00:00","dt":"29.01.2015 19:00:00"}}
    период df … dt указывает период начала путевого листа
    - путевые листы водителей
    {"m":"f","p":{"s":"2CEF8F2F851B1E2188AF63D76480359F","n":"d","df":"29.01.2015 00:00:00","dt":"29.01.2015 19:00:00"}}
    период df … dt указывает период начала путевого листа
    - путевые листы, измененные за период {"m":"f","p":{"s":"2CEF8F2F851B1E2188AF63D76480359F","n":"p","df":"29.01.2015 00:00:00","dt":"29.01.2015 19:00:00"}}
    период df … dt указывает период последнего редактирования (актуальности)
    ответ:
    {"o":{"id":[1,2,3,4,5,6]}} - массив идентификаторов для загрузки
    - запрос элемента(ов) загрузки
    {"m":"g","p":{"s":"2CEF8F2F851B1E2188AF63D76480359F","n":"t","id":[1,2,3,4,5,6]}}
    Пример ответа (путевой лист тракториста):
    {
    "o" : { - ответ
    "dc" : 1, - кол-во элементов в массиве данных ответа
    "d" : [{ - массив данных
    "pl" : { - путевые листы
    "n" : "t", - тип путевого: "t" лист тракториста тракториста. "a" - авто ; "ta" — путевой лист тракториста с признаками транспортных работ
    "id" : 227, - идентификатор путевого листа
    "b" : "c6ac71b0-4a5d-11e0-b79f-001e0b831428", - идентификатор транспорта
    "dr" : "97e683a2-d52b-11e0-89ab-c80aa90473c2", - идентификатор водителя
    "df" : "29.01.2015 07:00:00", - время начала смены
    "dt" : "29.01.2015 19:00:00", - время окончания смены

    "on":118880, id путевого
    "mi" : 69, - пробег в км
    "fs" : 570, - потрачено по ДУТ в л
    "ff" : 425, - начальный уровень топлива в л
    "ft" : 983, - конечный уровень топлива в л
    "fd" : 1128, - всего заправлено в л
    "fdc" : 2, - кол-во заправок
    "h" : 34616, - Время работы двигателя / моточасы в секундах
    "mih" : 69, - пробег в моточасах (км) (устаревший параметр ответ null)
    "pt" : 0, - длительность простоя (секунды) 

    "ptn":0, - длительность простоя (секунды) в ночную смену 

    "twp":0,признак вспомогательных работ(не используется)

    "fc":[{ -

    "cd":"05.05.2017 18:30:25", "cv":356,"du":""} заправка по ДУТ

    ,{"cd":"05.05.2017  18:33:27","cv":365,"du":""}], заправка по УСС

    "cd":"05.05.2017  18:33:27" — дата заправки

    "cv":365 - количество объем заправки (литры)

    "du":""}, — идентификатор склада ГСМ

    "tht"* : [{ - перегоны  для тракториста (путевые листы с признаком "n" : "t")
    "mi" : 13.57, - пробег в перегоне в км
    "fs" : 46.74 - расход топлива в л

    "da":3, -общее время технических перегонов

    "dn":0}, - время технических перегонов в ночную смену

    "tht" для автомобиля  (путевые листы с признаком "n" : "a") рейс:

    - mi - пробег
    - fs - расход топлива
    - df - время начала
    - dt - время окончания
    - r - маршрут движения (текстом через тире)
    - rf - идентификатор начала
    - rt - идентификатор конца
    - tr - прицеп
    - dhd - моточасы в движении
    - dn - время работы в ночную смену
    - twd - подвид работ
    - wc - вес груза
    - wd - расстояние с грузом
    - rc - кол-во ездок
    }],
    "w" : [{ - работы на поле
    "p" : "69605560-6599-11e0-a425-001e0b831428", - идентификатор поля
    "cu" : "7b455c27-950d-11e1-99e4-c80aa90473c2", - идентификатор культуры
    "tr" : "f658c044-471d-11e0-9cd9-001cc43a3814", - идентификатор прицепного
    "tw" : "a96d0ef9-b0cf-11e3-9a58-c80aa90473c2", - идентификатор вида работ
    "twd" : "a96d0ef9-b0cf-11e3-9a58-c80aa90473c2", - идентификатор подвида работ
    "a" : 2, - обработанная площадь в га
    "mi" : 6.05, - пробег в км
    "fs" : 44.26 – расход топлива в л

    "h":10404,  - моточасы в операции
    }]
    }
    }]
    }
    }

  6. Выгрузка из 1С планового путевого листа

    {"m":"pl","p":{"s":"C95CD5990BAB6C4547F3DF4B0DE3A9C6","id":"КЗ000008160","b":" b0e96efa-4a6d-11e0-b79f-001e0b831428 ","df":"29.01.2015 06:00:00","dt":"29.01.2015 19:00:00","dr":" 2dc1986b-a8ad-11e2-b46c-c80aa90473c2 ","ff":110,"mi":110,"mp":[{"as":" 378e5e32-56f2-11e1-ae70-c80aa90473c2 ","ae":" 378e5e31-56f2-11e1-ae70-c80aa90473c2 "}]}}
    id – номер путевого листа из 1С
    b – идентификатор транспорта
    df – время начала смены
    df – время окончания смены
    dr – идентификатор водителя
    ff – уровень топлива при выезде
    mi – плановый пробег в км
    mp – пункты движения по маршруту
    as – начальный пункт
    ae – конечный пункт

  7. Тестирование протокола

    Страница для выполнения запросов при тестировании протокола:
    http://agro.tn-group.net:30101/rest/test.html
    Порядок выполнения тестов:
    1. вставляем запрос {"m":"c","p":{"l":"1c_demo","pa":"1c_demo"}}
    нажимаем SEND – получаем ответ:
    например {"o":{"s":"5C052B3A3518C2216BB1209E1E7E3125"}}

     

2. делаем второй запрос (вставляем полученный идентификатор сессии и идентификатор путевого листа):
{"m":"g","p":{"s":"5C052B3A3518C2216BB1209E1E7E3125","n":"t","id":[8379]}}
нажимаем SEND – получаем ответ:
{"o":{"dc":1,"d":[{"pl":{"n":"t","id":8379,"b":"","dr":"","df":"15.09.2014 08:04:47","dt":"15.09.2014 16:13:02","mi":105,"fs":99,"ff":72,"ft":76,"fd":103,"fdc":1,"h":21825,"mih":91,"pt":5720,"ptn":0,"twp":0,"fc":[{"cd":"15.09.2014 08:30:25","cv":103,"du":""}],"tht":[{"mi":49,"fs":39,"da":4,"dn":0}],"w":[{"cu":"","tw":"demo_identificator_UUID_1C_3","twd":"","a":98.38,"mi":56,"fs":60,"h":12781,"da":5,"dn":0}]}}]}}

 

Примечание: идентификатор сессии действителен 20 минут с момента последнего обращения. Т.е. если запросы делать с периодичностью менее 20 минут, то первый запрос можно не делать – просто менять строку запроса