Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 15

Тема: Работа с базой данных через C++

  1. #1
    Senior Member Аватар для intrell
    Регистрация
    16.12.2013
    Сообщений
    256

    По умолчанию Работа с базой данных через C++

    Здравствуйте.
    Необходимо работать с БД через с++. Какой класс лучше использовать для стандартной конфигурации BILLmanager (mysql)?
    Как подключиться к той же базе что и панель без лишних движение с паролями, конфигами и драйверами?
    Как узнать название таблиц Table для использования db->Get<Table>(), например для payment_cash_register?

    Я пытаюсь делать так:
    Код:
    #include <api/stddb.h>
    #include <db.h>
    
    mgr_db::JobCache *db;
    db = isp_api::GetDb(); // подключение к базе панели, но что-то не работает
    auto query = db->Query("SELECT * FROM payment_cash_register");
    PS лишний код модуля опущен для удобства

    Лог:
    Код:
    libmgr ERROR Error in src/ispapi/ispapi.cpp:131 std::string isp_api::GetMgrName()

  2. #2
    Senior Member
    Регистрация
    09.04.2013
    Адрес
    Москва
    Сообщений
    2,029
    Последний раз редактировалось Mobiaaa; 21.06.2018 в 21:47.

  3. #3
    BILLmanager team
    Регистрация
    17.09.2010
    Сообщений
    8,675

    По умолчанию

    В sbin_utils.h есть функция sbin:B() которая возвращает указатель на подключение к базе, который можно использовать для запросов

    Использовать db->Get<Table>() из внешних приложений, к сожалению, не получится

  4. #4
    Senior Member Аватар для intrell
    Регистрация
    16.12.2013
    Сообщений
    256

    По умолчанию

    Благодарю, разобрался.

    Код:
    #include <db.h>
    
    std::shared_ptr<mgr_db::Cache> db;
    
    db = sbin::DB();
    
    // Вывод всех id из таблицы payment_cash_register
    ForEachQuery(db, "SELECT * FROM payment_cash_register", c)
      std::cout << c->AsString("id") << "\n";
    
    
    // Тоже самое, другим способом
    auto query = db->Query("SELECT * FROM payment_cash_register");
    while(!query->Eof()){
      std::cout << query->AsString("id") << "\n";
      query->Next();
    }
    PS
    UPDATE и INSERT тоже через db->Query() выполняется?
    Последний раз редактировалось intrell; 21.06.2018 в 23:39.

  5. #5
    BILLmanager team
    Регистрация
    17.09.2010
    Сообщений
    8,675

    По умолчанию

    Здравствуйте,
    UPDATE и INSERT тоже через db->Query() выполняется?
    по возможности API функциями панели, если нужных функций нет, то через db->Query, но нужно сбрасывать кеш таблиц

    Какие данные хотите добавлять/обновлять?

  6. #6
    Senior Member Аватар для intrell
    Регистрация
    16.12.2013
    Сообщений
    256

    По умолчанию

    Мы хотим работать с таблицей чеков payment_receipt. Добавлять запись, затем менять статус.
    Последний раз редактировалось intrell; 22.06.2018 в 17:42.

  7. #7
    BILLmanager team
    Регистрация
    17.09.2010
    Сообщений
    8,675

    По умолчанию

    Здравствуйте, для чего нужно добавление записей в payment_receipt?

    Для изменения статусов и других операций есть функции:
    - payment_receipt.wait выставляет статус - 1 Ожидает регистрацию
    - payment_receipt.notify параметр error_message - сообщение об ошибке, меняет статус на - 0 Новый и сохраняет сообщение об ошибке
    - payment_receipt.error параметр error_message - сообщение об ошибке, меняет статус на - 3 Новый и сохраняет сообщение об ошибке
    - payment_receipt.success параметры , выставляет статус - 2 Зарегистрован в ФНС

    Все эти функции принимают и сохраняют параметры так же elid - код чека, externalid - внешний код чека, fn_number - Номер фискального накопителя, fiscal_document_number - Фискальный номер документа, fiscal_document_attribute - Фискальный признак документа, receiptdate - Дата чека

    - payment_cash_register.saveparam - позволяет сохранить в payment_cash_registerparam любой параметр, параметры elid - код кассы, intname - внутренние имя параметра, value - значение параметра

  8. #8
    Senior Member Аватар для intrell
    Регистрация
    16.12.2013
    Сообщений
    256

    По умолчанию

    Здравствуйте, для чего нужно добавление записей в payment_receipt?
    Когда будет происходить зачисление платежа, плагин должен отследить это событие и добавить запись в таблицу Квитанций (payment_receipt).
    Последний раз редактировалось intrell; 25.06.2018 в 07:05.

  9. #9
    BILLmanager team
    Регистрация
    17.09.2010
    Сообщений
    8,675

    По умолчанию

    Когда будет происходить зачисление платежа, плагин должен отследить это событие и добавить запись в таблицу Квитанций (payment_receipt).
    это поведение по умолчанию, этим занимается BILLmanager не зависимо от того какой модуль касс используется

  10. #10
    Senior Member Аватар для intrell
    Регистрация
    16.12.2013
    Сообщений
    256

    По умолчанию

    Azcol, Ваша информация очень ценна для меня.

    Можете дать пример, как выполнить функцию в панели на примере изменения статус чека?

    Я смотрел в сторону #include <api/action.h>, но думаю, что это для других целей. Подскажите класс, пож-та.

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •