![MIT license](https://img.shields.io/badge/License-MIT-blue.svg)

Простой менеджер для работы с SABY API.

Модуль призван упростить работу с SABY API при работе с online.sbis.ru.

## Как использовать

Сначала создайте менеджер: 
```python
from pysaby import SABYManager

manager = SABYManager(login="YourLogin", password="Y0urP4$$word")
```
Потом найдите название метода и словарь параметров к нему тут: [https://saby.ru/help/integration/api/all_methods](https://saby.ru/help/integration/api/all_methods).

После через метод send_query передайте строку с названием метода и словарь параметров:
```python
result = manager.send_query("СБИС.СписокНашихОрганизаций", {"Фильтр": {}})
```
Менеджер сам выполнит авторизацию и сделает запрос.
Если на аккаунте настроен вход с подтверждением по номеру, то программа приостановится и попросит код в консоли:
```
На номер (номер, привязанный к аккаунту) отправлен код подтверждения входа.
Нажмите Ctrl+D, чтобы выйти из программы.

Введите код сюда и нажмите Enter: 
> 1234
```

Поддерживает вывод логов через logging.
Не использует сторонние зависимости.

## Установка

Модуль можно установить с помощью pip:
```
python3 -m pip install pysaby
```

## Дополнительно

Код полностью открыт, [можете смотреть](https://github.com/SecretDerped/pysaby) и использовать его как угодно.

## Примеры использования

```python
import os
from pysaby import SABYManager

login = os.getenv("LOGIN")
password = os.getenv("PASSWORD")

manager = SABYManager(login, password)

result = manager.send_query("СБИС.СписокНашихОрганизаций", {"Фильтр": {}})
print(result)
#> {'Навигация': {'ЕстьЕще': 'Нет', 'РазмерСтраницы': '25', 'Страница': '0'}, 'НашаОрганизация': [{'ДокументооборотПодключен': 'Да', 'Идентификатор': '', 'ИдентификаторИС': '12767875', ...

params = {
    "Фильтр": {
        "ДатаС": "20.06.2006",
        "ДатаПо": "09.12.2009",
        "Тип": "ДокОтгрИсх",
        "Навигация": {
            "РазмерСтраницы": "50",
            "Страница": "4",
            },
        }
    }
result = manager.send_query("СБИС.СписокДокументов", params)
print(result)
#> {'Документ': [{ 'Дата': '01.07.2007',
# 'ДатаВремяСоздания': '01.01.2007 04.19.59',
# 'Идентификатор': '02f7db13-b092-4a76-b1f7-08f6e9fffcfd',
# 'Контрагент': {'Email': 'kowalski@analysis.com' ...
# ...}],
# 'Навигация': {'ЕстьЕще': 'Да', 'РазмерСтраницы': '50', 'Страница': '4'}}

document = result['Документ'][0]
print(document['Идентификатор'])
#> 02f7db13-b092-4a76-b1f7-08f6e9fffcfd

params = {
    "Документ": {
        "Идентификатор": '02f7db13-b092-4a76-b1f7-08f6e9fffcfd',
        "ДокументСледствие": {
            "Документ": {
                'ВидСвязи': 'Договор',
                "Идентификатор": 'ef735737-7ca8-427f-b79b-402a471b13f8'
                }
            }
        }
    }
manager.send_query("СБИС.ЗаписатьДокумент", params)
#> "Автор": {
#      "Идентификатор": "",
#      "Имя": "Иван",
#      "Отчество": "Кузьмич",
#      "Фамилия": "Цеестотридцатьпятович"
#   },
#  "Идентификатор": '02f7db13-b092-4a76-b1f7-08f6e9fffcfd'
#  "Дата": "01.07.2007",
#  "ДокументСледствие": {
#       "Документ": {
#           "ВидСвязи": "Договор",
#           "Идентификатор": 'ef735737-7ca8-427f-b79b-402a471b13f8'
#             },
#            ...
```

## Связь с автором

Telegram: [https://t.me/ce_135](https://t.me/ce_135),
E-mail: followluna@yandex.ru