Задать вопрос
@san3589

Как сделать интеграцию 1c таблицы и телеграмм бота на aiogram?

Добрый день. Я в 1с ничего не понимаю. Есть задача в телеграмм бота прислать номер заказа или имя контрагента и возвращать данные по заказу (один заказ или несколько). Бота я сделал но вопрос как на стороне 1с это сделать? Созванивался с 1с программистом компании пытался ему объяснить что нужно делать, но то ли я плохо объяснял, то ли он не понимает о чем речь. Пытался читать документацию э, но она настолько запутанна, что я даже не знаю где искать и самое главное, что искать. Я думаю что вопрос не сложный, но из за того, что я в этом ноль я в тупике. Помогите пожалуйста
Процедура ОбработатьHTTPЗапрос(HTTPЗапрос, HTTPОтвет) Экспорт

    // --- Проверка API-ключа ---
    APIКлюч = HTTPЗапрос.Заголовки.Найти("X-API-Key");
    Если APIКлюч = Неопределенно Или APIКлюч <> "апи ключ" Тогда
        HTTPОтвет.КодСостояния = 403;
        HTTPОтвет.УстановитьТелоИзСтроки("Доступ запрещен");
        Возврат;
    КонецЕсли;


    // --- Получение параметров ---
    НомерЗаказа = HTTPЗапрос.Параметры.Найти("order");
    ИмяКлиента = HTTPЗапрос.Параметры.Найти("name");

    Если ПустаяСтрока(НомерЗаказа) И ПустаяСтрока(ИмяКлиента) Тогда
        HTTPОтвет.КодСостояния = 400;
        HTTPОтвет.УстановитьТелоИзСтроки("Укажите параметр 'order' или 'name'");
        Возврат;
    КонецЕсли;

    // --- Запрос к таблице заказов ---
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ " +
        "   Таб.НомерЗаказа КАК Номер, " +
        "   Таб.Контрагент КАК Контрагент, " +
        "   Таб.СуммаЗаказа КАК Сумма " + // - Здесь добавить/изменить нужные поля из таблицы
        "ИЗ Справочник.Заказы КАК Таб " +  // ← укажи реальное имя таблицы!
        "ГДЕ " +
        "   (НЕ ПустаяСтрока(&НомерЗаказа) И Таб.НомерЗаказа = &НомерЗаказа) " +
        "ИЛИ " +
        "   (НЕ ПустаяСтрока(&Контрагент) И ПОИСК(НРег(Таб.Контрагент), НРег(&Контрагент)) > 0)";

    Запрос.УстановитьПараметр("НомерЗаказа", ?(ПустаяСтрока(НомерЗаказа), "", НомерЗаказа));
    Запрос.УстановитьПараметр("Контрагент", ?(ПустаяСтрока(ИмяКлиента), "", ИмяКлиента));

    // --- Выполнение запроса ---
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();

    Если НЕ Выборка.Следующий() Тогда
        HTTPОтвет.КодСостояния = 404;
        HTTPОтвет.УстановитьТелоИзСтроки("Ничего не найдено");
        Возврат;
    КонецЕсли;

    // --- Формирование массива результатов ---
    Массив = Новый Массив;

    Пока Истина Цикл
        Запись = Новый Структура;
        Запись.Вставить("Номер", Выборка.Номер);
        Запись.Вставить("Контрагент", Выборка.Контрагент);
        Запись.Вставить("Сумма", Выборка.Сумма); // - здесь с тоже добавить нужные поля
        Массив.Добавить(Запись);

        Если НЕ Выборка.Следующий() Тогда
            Прервать;
        КонецЕсли;
    КонецЦикла;

    // --- Ответ JSON ---
    JSON = ЗаписатьJSON(Массив);
    HTTPОтвет.КодСостояния = 200;
    HTTPОтвет.УстановитьЗаголовок("Content-Type", "application/json");
    HTTPОтвет.УстановитьТелоИзСтроки(JSON);

КонецПроцедуры

Скажите как мне объяснить 1с программисту как настроить этот обработчик, чтобы он меня понял
  • Вопрос задан
  • 161 просмотр
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
@Dementor
программист, архитектор, аналитик
Это листинг модуля HTTP-сервиса.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Greenway Global Новосибирск
от 150 000 ₽
SPA2099 Москва
До 100 000 ₽
HR Prime Москва
от 300 000 до 3 800 000 ₽