Telemonitor — объединяем Telegram и 1С

Не так давно Telegram предоставил API для создания ботов. Telemonitor — программа, позволяющая легко настроить собственного бота для работы с 1С.

Что это такое?

Telegram набирает всё большую популярность. Недавно сервис предоставил платформу для создания ботов. Telemonitor — это прослойка между API Telegram и 1С/OneScript, позволяющая легко настроить функционал собственного бота. Кто-то задастся вопросом, а зачем вообще нужна какая-то дополнительная программа, ведь все можно организовать и в 1С. Конечно можно, но, на мой взгляд, это не всегда удобно. Во-первых, более или менее удобный функционал есть только в версии 8.3. Во-вторых, надо постоянно держать запущенным сеанс. Telemonitor, конечно, тоже имеет свои недостатки, но работать с ним, думаю будет удобнее.

Как это работает?

Схема работы

Telemonitor опрашивает бота с заданной периодичностью. При получении новой команды программа создает соединение с базой данных через ComConnector, и выполняет указанный для команды код, через вызов процедуры Выполнить(). Количество COM-соединений никак не ограничивается, поэтому одновременно можно отправлять боту несколько команд.

Как настроить своего бота?

Как зарегистрировать бота рассказывать, думаю, смысла нет. В интернете полно примеров, на Инфостарте, кстати, тоже есть очень полезная публикация. И так, открываем каталог Telemonitor и видим файл settings.ini. В нем необходимо задать token для бота, полученный при регистрации. При желании можно изменить интервал опроса бота и параметры соединения. Теперь рассмотрим папку databases, в ней будем описывать базы и команды.

Структура каталогов

Для каждой базы данных, в которой будем использовать бота создаем папку с произвольным названием латиницей. Для примера я использую базы FileAccounting82 и ServerTrade83. В каждой папке необходимо разместить файл database.ini, в котором указывается строка соединения с базой (сейчас в меня полетят тухлые помидоры, но да, пароль хранится в чистом виде) и используемая версия 1С. Кстати, 8.1 не поддерживается. Кодировка у ini файла должна быть Windows-1251. 

Теперь настало время описать команды. В той же папке создаем файлы *.tcm. Каждый такой файл — это просто текст в кодировке UTF-8, содержащий описание команды и код, выполняемый в 1С. Первой строкой идет описание, далее — исполняемый код.

Команда, исполняемая ботом

Если мы хотим увидеть какой-либо отклик от бота, тогда необходимо заполнить переменную Результат. В данном примере бот вернет описание пользователей, работающих в базе или скажет: "Нет активных пользователей" При создании своих команд помните, что весь код помещается в конструкцию Выполнить(), поэтому он имеет некоторые ограничения, думаю сами догадываетесь какие. Чтобы бот вернул файл, например, вы хотите получать какой-нибудь отчет или прайс, то в коде команды необходимо заполнить переменную Результат_Файл.

Что получилось в итоге?

После того, как мы создали каталоги для баз данных и файлы с командами, наш бот знает, какие команды у него есть, и что с ними делать.

Имя каждой команды складывается из имени базы данных и имени файла tcm. Запросим у бота список команд. И так, бот, /start !

Список команд бота

Ух ты! Работает! Давай-ка, бот, нам список активных пользователей.

Выполнение команды

Эх, не было печали, а теперь вот каждое утро общаюсь с ботом и смотрю, все ли с базами в порядке 🙂

Что дальше?

Программу, она кстати использует NET Framework 2.0, писал для собственных нужд, но, если кому пригодится, буду очень рад. Буду рад предложениям по улучшению и расширению функционала.

Последние изменения:

  • 12.08.2024
  • Добавил команду /screen для получения скриншота.
  • Добавил возможность отправки файлов.
  • 23.10.2024
  • В команду теперь можно передавать параметры. В 1С все параметры будут доступны в реквизите "ПараметрыКоманды" через запятую
  • В settings.ini добавил параметр [SafeMode1C] для запуска кода в небезопасном режиме.
  • 17.03.2024
  • Добавил ограничение доступа по имени пользователя Telegram (username). Ограничения можно задать как на бота целиком, так и на базу данных. Для этого в файлах settings.ini и database.ini есть секция [WhiteList] и параметр Users. Именя пользователей, которым разрешен доступ, следует указывать через запятую. В этой же секции файла settings.ini можно ограничить доступ пользователям к получению скриншотов. Имя параметра, отвечающего за данное ограничение — ScreenOwners
  • 15.04.2024
  • Добавил поддержку команд с запросом параметров. Для того, чтобы бот запросил параметр, необходимо в коде команды использовать переменную ДиалогСПараметрами. Ниже представлен пример команды с запросом трех параметров
  • МассивПараметров = Новый Массив();
    Подстроки = СтрЗаменить(ПараметрыКоманды, ",", Символы.ПС);
    Для Сч = 1 По СтрЧислоСтрок(Подстроки) Цикл
    Параметр = СокрЛП(СтрПолучитьСтроку(Подстроки, Сч));
    Если ЗначениеЗаполнено(Параметр) Тогда
    МассивПараметров.Добавить(Параметр);
    КонецЕсли;
    КонецЦикла;
    Если МассивПараметров.Количество() < 3 Тогда
    ДиалогСПараметрами = Истина;
    Заголовки = Новый Соответствие();
    Заголовки[0] = "Введите первый параметр:";
    Заголовки[1] = "Отлично! Теперь укажите второй:";
    Заголовки[2] = "Почти готово! Третий параметр и заканчиваем:";
    Результат = Заголовки[МассивПараметров.Количество()];
    Иначе
    // Здесь выполнение какого-то кода...
    Результат = "Команда выполнена со следующими параметрами:" + Символы.ПС;
    Результат = Результат + "1) " + МассивПараметров[0] + Символы.ПС;
    Результат = Результат + "2) " + МассивПараметров[1] + Символы.ПС;
    Результат = Результат + "3) " + МассивПараметров[2];
    КонецЕсли;

    Ну и результат работы

    Команда с запросом параметров Команда с запросом параметров

    При написании таких команд надо понимать, что Telemonitor не поддерживает COM-соединение между запросами параметров у пользователя. При передаче каждого параметра создается новое соединение и в код каманды передаются все полученные параметры, поэтому в описании команды нет смысла инициализировать какие-либо переменные и выполнять действия, в надежде, что они будут доступны при передаче следующего параметра.

  • Также, теперь в коде команды есть доступ к имени пользователя Telegram, и полному идентификатору команды. Для этого используются переменные username, first_name, last_name и command
  • 22.11.2024
  • Добавлена поддержка OneScript(1Script). Для тех, кто не в курсе, что это такое вот ссылка и вот. Скрипты необходимо размещать в папке scripts c расширением *.os. Примеры скриптов есть в архиве с программой. Команды для OneScript имеют некоторые особенности, но не сильно отличаются от таковых для 1С. Все пробелы в параметрах, переданных в команду заменяются на знак подчеркивания "_".
  • 06.04.2024
  • Команды для OScript можно делать в виде кнопок. Для этого файл команды должен быть с расширением *.os_b
  • 18.04.2024
  • Добавлена поддержка SOCKS5. В settings.ini секция [Proxy], параметр Type

P.S. Писал быстро, поэтому возможны какие-нибудь ошибки. Буду благодарен, если вы сообщите о таковых.

98 Comments

  1. shalimski

    Отличная идея! Все работает.

    Reply
  2. roofless

    тут http://infostart.ru/public/372352/ нужна платформа не меньше 8.3.6, какая нужна для вашего телемонитора?

    Reply
  3. salexdv

    (2) roofless, 8.2 и выше.

    Reply
  4. didkovskij

    Спасибо, всё работает!

    А есть возможность возвращать не текст, а прикреплять файл, например?

    Reply
  5. salexdv

    (4) didkovskij, нет, пока только текст. Можно доработать. Опишете, зачем такое надо?

    Reply
  6. salexdv

    (4) didkovskij, добавил такую возможность. Для примера код команды:

    Результат_Файл = КаталогВременныхФайлов()  + «result.xls»;
    ТабДокумент = Новый ТабличныйДокумент();
    ТабДокумент.Область(1, 1, 1, 1).Текст = «Тестовый файл»;
    ТабДокумент.Записать(Результат_Файл, ТипФайлаТабличногоДокумента.XLS97);

    Т.е. необходимо заполнить переменную Результат_Файл, тогда Telemonitor отправит указанный файл боту.

    Reply
  7. sml

    ТС, похоже с планировщиками оконными не знаком?

    Reply
  8. salexdv

    (7) sml, про что речь?

    Reply
  9. Операция1Ы

    Круто, а исходники будут?

    Reply
  10. salexdv

    (9) Операция1Ы, не планировал выкладывать.

    Reply
  11. didkovskij

    (6) например в 1с формируется файл (отчёт, график и т.п.) хочется его прикрепить, чтобы пользователь смог его посмотреть. Спасибо за возможность!

    Reply
  12. didkovskij

    (7) sml, ну так то можно и web сервис поднять и приложение под андроид написать. Одну и ту же задачу можно кучей разных способов реализовать. Мне идея и реализация понравилась. Например, кто захочет тот и получит нужную информацию, а не так как в планировщике по заданным параметрам, выполнять одно и тоже действие 🙂

    Reply
  13. Darklight

    Что-то фишку не просёк. Идея общаться с ботом текстовыми командами не впечатлила

    Разве не удобнее

    1. Сделать отдельную БД, которая будет собирать состояния из целевых баз и показывать сводно при старте и по отдельности на весь экран (без каких-либо запросов со стороны оператора)

    2. Нужные дополнительные сведения получать в один-два клика мыши в отельных окнах

    3. Получать из базы периодические рассылки важной контроллируемой информации по электронной почте / SMS и по любым иным каналам сваязи

    Reply
  14. CratosX

    (13) Darklight,

    Что-то фишку не просёк.

    как минимум Телеграм быстр и не требователен, зачастую уже установлен. Установка «отдельной базы» тяжела, требует мобильной платформы

    Reply
  15. salexdv

    (13) Darklight, здесь уже писали про планировщик заданий, что в принципе равносильно периодическим рассылкам, как пишите вы.

    Но идея бота не в периодических оповещениях, а в предоставлении информации по требованию. Мне не нужно получать каждый день SMS (электронное письмо и т.д.) о том что все хорошо/все пропало. Я хочу видеть информацию, только когда у меня душа заболела.

    Reply
  16. yuran2000

    Идея хорошая, но не везде есть возможность запускать чужие программы.

    Пытаюсь на 1С это же написать, по обмену сообщениями трудности не возникло, но вот отправку файла так и не победил.

    Думаю, что не туда вставляю Токен.

    Т.е., что б бот что-то сделал в базе и отправил отчет в виде файла.

    Может, распишите принцип этого процесса?

    Reply
  17. salexdv

    (16) yuran2000, я сам не с первого раза отправил файл, скорее всего ошибка в формировании тела multipart/form-data и определении ContentLength. Попробую сделать в 1С такое и напишу.

    Reply
  18. salexdv

    (16) yuran2000, к сожалению мне не удалось отправить данные 1С на api.telegram.org с помощью multipart/form-data. Испытывал на методе sendMessage, передавая поля chat_id и text. Передавать пробовал с помощью WinHttp.WinHttpRequest.5.1, Msxml2.SERVERXMLHTTP и встроенного HTTPСоединение. Если указывать протокол http, то возвращается ошибка 301, либо text is empty, а если использовать, как положено, https — вылет по таймауту. Причем тело multipart/form-data точно правильное взял его из Telemonitor.

    Если найдете решение, дайте знать.

    Тело запроса выглядит так

    ————ebcd4ec6dea948099c4c47ca5c9541bd
    Content-Disposition: form-data; name=»chat_id»
    
    XXXXXXXXX
    ————ebcd4ec6dea948099c4c47ca5c9541bd
    Content-Disposition: form-data; name=»text»
    
    test
    ————ebcd4ec6dea948099c4c47ca5c9541bd—

    Показать

    Reply
  19. salexdv

    (19) eugeniezheludkov, возможно, но мне и меньшего объема сообщение не удавалось отправить. Пример сообщением выше (18)

    Reply
  20. FSerg
    Reply
  21. salexdv

    (21) FSerg, спасибо! Обязательно попробую

    Reply
  22. el-gamberro

    (21) FSerg, спасибо за разжевывание. 🙂

    Тоже такое попробую.

    Reply
  23. mrmasson

    Идея хороша. решил воспользоватся. Опишу недостатки, которые мешают в полной мере насладиться разработкой:

    1. мало документации с Вашей стороны.

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

    Ошибка при вызове метода контекста (ЗапуститьПриложение)
    Установлен безопасный режим. Выполнение операции запрещено

    а так однозначный плюс

    Reply
  24. salexdv

    (24) mrmasson, спасибо за отзыв!

    Да, действительно весь код запускается во внешней обработке, которая создается в безопасном режиме.

    Я добавлю в настройки возможность запускать небезопасный режим.

    А насчет документации даже и не знаю, что сказать. Я тут постарался максимально просто и доступно объяснить как все работает. Как создавать свои команды для бота написал. Если есть какие-то вопросы, пишите, обязательно отвечу.

    Reply
  25. salexdv

    (24) mrmasson, добавил возможность запуска кода в небезопасном режиме. Нужно в settings.ini добавить строку

    [SafeMode1C]

    Enabled=0

    Reply
  26. JohnyDeath

    Я все-таки не понял, почему отдельная программа, а не планировщик или http-сервис в самой 1С? Зачем лишняя прослойка?

    Reply
  27. salexdv

    (27) JohnyDeath, чтобы получать информацию, когда она действительно нужна. Не будем брать в расчет всякие отказы, когда что-то не работает. В этом случае, конечно, удобнее планировщиком опрашивать какие-то параметры и, в случае возникновения критической ситуации, оповещать об этом.

    Telemonitor немного про другое. Например, для обновления конфигурации БД требуется реструктуризация, которую невозможно выполнить с работающими пользователями. Дело к вечеру, а пользователи все работают. С помощью Telegram можно отправить команду боту, пусть будет /MyBase_GetActiveUsers. Когда увидим, что пользователей нет, можно запустить /MyBase_UpdateDB.

    Другой пример, хотим увидеть сколько задач выставлено нам в базе, отправляем /MyBase_GetTasks UserID. Или нужно узнать сколько новых заказов ждут обработки, тогда /MyBase_GetNewOrders.

    Вариантов возможного использования масса, причем использовать бота может не только админ/программист, а директор, менеджер, бухгалтер и т.д.

    Надеюсь теперь идея ясна.

    Reply
  28. JohnyDeath

    (28) идею-то я сразу понял. Я не понял почему все это нельзя обрабатывать на стороне 1С, используя, например, http-сервис?

    Или, если лень заморачиваться с публикацией сервиса, создать регламентное задание, в котором будет периодически вызываться getUpdates телеграма?

    Вы же создаете дополнительную прослойку, которая плюс ко всему имеет закрытый код.

    Reply
  29. salexdv

    (29) JohnyDeath, программа использует NET.Framework, поэтому посмотреть код, нет никаких проблем.

    Http-сервисы, конечно, можно использовать, можно даже и без них обойтись, но тогда придется либо изменять конфигурацию и держать web-сервер, либо постоянно держать открытым сеанс с обработкой, которая будет вызывать getUpdates. Так что в любом случае, как вы говорите «прослойка», какая-никакая, а нужна. Весь вопрос в том, самому её делать, либо взять готовую.

    Моё решение позволяет все делать без изменения конфигурации(й) и не писать самому взаимодействие с Telegram API, а сосредоточится только на создании функционала бота.

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

    Reply
  30. nomadon

    (30) и вот еще решение))

    http://infostart.ru/public/416348/

    Reply
  31. salexdv

    (31) nomadon, спасибо я оценил уже. Отличная вещь!

    Reply
  32. maxx

    Подскажите, а то мало знаю по всякими месенджерам, боты, которые вы создаёте, доступны абсолютно другим пользователям Telegram. То есть я могу найти вашего бота и им воспользоваться злонамеренно?

    Reply
  33. salexdv

    (33) maxx, если вы знаете имя бота, то сможете его найти и пользоваться

    Reply
  34. JohnyDeath

    (33), (34) но вроде как в боте можно прописать желаемых участников или схему входа (по паролю и т.п.), т.е. при желании левые акки к вам не придут

    Reply
  35. salexdv

    (35) JohnyDeath, можно команды без пароля не принимать. Да и найти бота не зная его точного имени сложно

    Reply
  36. adhocprog

    Прикольная штука )

    Reply
  37. amitin78

    Всем Доброго вечера. Подскажите студенту как заполнить файл settings. Всем заранее спасибо.

    Reply
  38. amitin78

    Разобрался.

    Просьба подсказать как задать выполнение команды Боту в 1с. Для примера сделать Синхронизацию. Сам так сказать процесс.

    Reply
  39. amitin78

    И само собой как запустить саму 1с перед этим. Буду благодарен за подсказки.

    Reply
  40. salexdv

    (40) amitin78, 1с запускать не надо. Telemonitor сам создает Com-соединение, когда получает команду. Что именно вам не понятно с командами? Файлы *.tcm — это и есть описание команд. Имя файла — это имя команды. Первая строка в файле — тектовое описание команды, начиная со второй строки — исполняемый в 1С код.

    Reply
  41. amitin78

    salexdv Спасибо с этим разобрался.

    После этого возникло большое желание использовать данный момент в разных задачках. Просьба добавить функционал запуска BAT файлов. Поясню: файловая база, есть задачки которые делает робот через запуск BAT файлов по времени. Используя Ваш Телемонитор можно это дело сделать по нажатию команд в Телеграмме. Очень удобно было-бы. Как дополнение к запланированным процессам. Заранее спасибо.

    Reply
  42. salexdv

    (42) amitin78, так запускаете батники через 1С, и ничего дорабатывать не придется 🙂

    Напишите в команде

    ЗапуститьПриложение(<ПутьКФайлуBat>);
    Reply
  43. amitin78

    (43) Фся фишка запускать все по команде удаленно с телефона, планшета, компьютера. Как я с телефона дам команду в 1с? А вот через Ваш Telemonitor должно получиться. Просьба доработать функционал. Благодарных пользователей будет много как поймут плюсы. Спасибо.

    Reply
  44. salexdv

    (44) amitin78, вы, видимо, не совсем поняли принцип работы. Посмотрите на схему вначале статьи. Вы с телефона в Telegram отдаете команду, а уже Telemonitor выполняет код команды в 1С. Получается вы на смартфоне выбираете команду «ЗапуститьBAT», а на компьютере, где стоит 1С и Telemonitor выполняется код

    ЗапуститьПриложение(<ПутьКФайлуBat>);

    . Таким образом через 1С запускается батник в системе.

    Reply
  45. amitin78

    Это(45) Это конечно да. То есть без 1с вообще не будем никакого действия? А вот скан например тоже средствами 1с сделан? Если тогда моя идея идет немного дальше. Запустить Батник не привлекая 1с. Это не возможно сделать?

    Reply
  46. amitin78

    salexdv как подсказали получилось УРА (ЗапуститьПриложение(<ПутьКФайлуBat>);).

    Вопрос: создаю свой файл для команды *.tcm, не сразу подхватывает Телеграмм как команду. Ему время надо для этого, просьба уточнить.

    Reply
  47. salexdv

    (47) amitin78, все команды считываются только при запуске Telemonitor. На ходу новые команды не подхватываются.

    Reply
  48. Il

    Классный и удобный бот!

    есть маленькая хотелки:

    — возможно ли в ini файлах баз прописывать каким юзерам телеграмма есть доступ? соответственно у этого юзера будут видны только команды его базы.

    — и сделать разрешение/запрет на команды /screen также нужным юзверям?

    ЗЫ. можу простимулировать на пивасик, для поднятия боевого тонуса 😉

    Reply
  49. salexdv

    (49) Il, а почему именно в ini базы данных? Может лучше в глобальных настройках бота?

    Reply
  50. Il

    (50) в глобальном ini нет списка баз.

    а так к примеру база А иванову, петрову, база Б всем, база С петрову и сидорову…

    Reply
  51. Il

    (50) ну и до кучи (что-то я разошелся ::) передавать в 1с параметром имя юзверя телеги (тоже можно вынести в настройку вкл/выкл)

    Reply
  52. salexdv

    (51) Il, ограничение по именам пользователей добавил. Описание в секции «Последние изменения».

    Reply
  53. Il

    (53) вот спасибо!

    скажи куда благодарность можно перевести (тел, ya, visa)?

    такие интересные идеи уже мона реализовать с этим функционалом…

    Reply
  54. salexdv

    (54) Il, спасибо сказали, уже хорошо 🙂 Я в первую очередь для себя делал программу, а раз ещё кому-то пригодилось — вообще отлично.

    Reply
  55. Andrey_R91

    Доброго времени суток.

    Отписываюсь в данной теме так как она более приближенная к моей задаче.

    Для начала опишу конечную цель:

    Нужно с определенных чатов удалять/добавлять пользователей, имея их номера телефонов.

    Я так понимаю, бот телеграма нам не совсем здесь интересен, по этому нужно использовать именно методы обычного API.

    В API есть методы управления чатами. Но не совсем понятно как можно узнать ID добавляемого контакта, зная его телефон?

    Может кто сталкивался с подобной ситуацией? Кто-то сталкивался с взаимосвязью 1С — API Telegram ?

    Буду благодарен за направления мыслей в нужную сторону 🙂

    Reply
  56. salexdv

    (56) Andrey_R91, к сожалению, не встречал такого функционала

    Reply
  57. Dobermann86

    Кто нибудь подскажет как ботом получить файл(или фото) в 1С и дальше сохранить его на HDD?

    Reply
  58. salexdv

    (58) Dobermann86,

    Чтобы бот вернул файл, например, вы хотите получать какой-нибудь отчет или прайс, то в коде команды необходимо заполнить переменную Результат_Файл.

    Сформируйте файл в 1С, сохраните на диск и поместите полное имя файла в переменную Результат_Файл

    Reply
  59. salexdv

    (58) Dobermann86, вот здесь (6) я показывал, как такое сделать.

    Reply
  60. zhurba

    Оч.полезная штуковина! Спасибо ))

    Пожелания 🙂

    a. Было бы очень хорошо запускатьTelemonitor как сервис (!!!)

    b. Хорошо бы иметь возможность настраивать «белый» список пользователей для каждой команды;

    с. мелочь, но все же — в контекстное меню по иконке в трее добавить «Перезапустить».

    Reply
  61. zhurba

    Вдогонку:

    d. Передавать в 1С имя пользователя, который отправил команду.

    Reply
  62. zhurba

    (62) И еще одна «хотелка»:

    е. Хотелось бы иметь возможность в папку с описанием базы положить файл «nocommand.tcm» и передавать в него сообщения от пользователя без слеша — не команды. Это позволит реализовывать «многоходовые» команды (как в @BotFather и пр.), т.е. сначала бот получает команду, а потом задает пользователю вопрос и ждет от него ответ (команды с параметрами менее юзабильные).

    Reply
  63. salexdv

    (63) zhurba, спасибо за отзыв и пожелания. У меня была мысль реализовать «диалог» с ботом, но пока, к сожалению, совсем нет на это времени. Программа писалась буквально за 2 дня для решения одной насущной проблемы. Все остальные доработки делаю, когда есть свободное время, а это случается нечасто.

    Reply
  64. zhurba

    Обнаружилась неприятная «фича» 🙁

    В чате случайно задел кнопку с микрофоном. Записанное аудио отправилось боту и тот «повис» — все последующие команды не обрабатываются. То же самое происходит если отправить боту фоточку.

    «Полечил» бота отправкой через браузер команды getUpdate со смещением.

    Хотел подключить к боту своих юзверей, но увы, придется пользоваться только мне одному…

    Reply
  65. salexdv

    (65) zhurba, проверю

    Reply
  66. salexdv

    (65) zhurba, ошибка, приводившая к зависанию, исправлена.

    Reply
  67. salexdv

    (63) zhurba, добавил поддержку диалоговых команд. Теперь код команды можно описать так, чтобы бот запрашивал дополнительные параметры. Если есть возможность, проверьте и отпишитесь.

    Reply
  68. brrart

    Отличная штуковина. Всё просто и понятно. Супер!!!!

    Reply
  69. Vladimir_Konyrev

    (68)

    Добрый день, подскажите можно ли организовать чат без установки каких-либо доп. приложений на сервер (все работают в терминале)?

    Reply
  70. salexdv

    (70) Vladimir_Konyrev, приложение в каком-то смысле для создания чата, но не между людьми. Диалог Человек <-> Бот Telegram — вот назначение программы. Для создания чатов между сотрудниками вам надо найти что-то другое.

    Reply
  71. Снежный_человек

    Добрый день! Если включить бота в группу, то он понимает только команду /start. Если общаться с ботом напрямую, то понимает все команды, созданные мной в настройках. Хотелось бы, чтоб в группе он тоже работал. В группе все видят, кто, когда, какие команды боту давал.

    Reply
  72. salexdv

    (72) Снежный_человек, с группами не работал. Обязательно проверю

    Reply
  73. Снежный_человек

    Есть еще вопрос, долго ли ждет бот параметра, когда используется команда с параметрами? Настраивается ли таймаут?

    Reply
  74. salexdv

    (74) Снежный_человек, таймаута нет, бот будет ожидать бесконечно

    Reply
  75. Снежный_человек

    При тестировании в файловом режиме все ок. При тестировании в клиент серверном режиме на той же базе исполняемый код команды (пытаюсь провести документ) вываливается в исключение со следующей ошибкой

    Ошибка при вызове метода контекста (Записать)

    ЗаявкаОбъект.Записать(РежимЗаписиДокумента.Проведение);

    по причине:

    Ошибка при выполнении обработчика — ‘ПередЗаписью’

    по причине:

    Попытка передачи с клиента на сервер мутабельного значения 1-го параметра метода ПередЗаписьюЗаявки ()

    Reply
  76. Снежный_человек

    Процедура «ПередЗаписьюЗаявки()» находится в общем серверном модуле и на нее ссылается мной добавленная подписка на событие. Первый ее параметр — Источник

    Reply
  77. Снежный_человек

    Подозреваю, что то не так у вас в приложении с исполнением кода 1С &НаКлиенте и &НаСервере

    Reply
  78. salexdv

    (78) Снежный_человек, в описании программы сказано, что весь код выполняется через метод Выполнить(). Всё это работает в режиме внешнего соединения. Проверьте свою конфигурацию на работу в режиме «Внешнее соединение» и «Внешнее соединение (клиент-сервер)». Думаю, проблема как раз в этом.

    Reply
  79. Снежный_человек

    Другими словами, если использовать подписку на событие документа «ПередЗаписью», то при исполнении процедуры этой подписки в общем серверном модуле с использованием параметра «Источник» в клиент серверном варианте не работает. Текст ошибки выше.

    Reply
  80. Снежный_человек

    Да, все верно. В указанном общем модуле установил галку «Внешнее соединение». Все заработало.

    Reply
  81. Снежный_человек

    Добрый день! Поставил нескольким юзверям. Обнаружил проблему зависания приложения телемонитор, причем, если жать на зависший экземпляр правой кнопкой мыши в трэе, то нет появления меню Выход. причем бот реагирует на команду старт, выдает список доступных команд, но на полученную из списка команду никак не реагирует. Лечится убиванием процесса telemonitor в диспетчере задач и перезапуском. До следующего повторения зависания.

    Reply
  82. Снежный_человек

    Файл лога ошибок не создается

    Reply
  83. salexdv

    (83) Снежный_человек, у себя такого поведения не встречал. Что за операционная система?

    Reply
  84. Снежный_человек

    Windows 2008 Server. Я, правда, создал каждому юзеру отдельного бота и запускал несколько приложений в одном терминальном сеансе, причем переименовывал файл Telemonitor.exe в ****.exe, , где *** имя пользователя латиницей, чтобы видеть, чья именно копия телемонитора отваливается. Сейчас оставил только одну копию, проверить на предмет конфликта запущеных копий. Пока работает, часа 2

    Reply
  85. Il

    (72) Присоединяюсь к просьбе… полезная фишка

    Reply
  86. salexdv

    (103) Il, к какой просьбе? Если вы про команды с параметрами, то они есть и работают.

    Reply
  87. Il

    (104) я про добавление бота в группу.

    Reply
  88. Il

    вопрос (72), про добавление бота в группу еще смотрели?

    Reply
  89. yuran2000

    С крайними версиями БП 2.0.66.6 и 3.0.46.16 перестало работать, ждет нажатия «ОК»:

    15.01.2017 23:31:03 — debug (3): wt 844

    ! 15.01.2017 23:31:03 — Не удалось выполнить команду «/FileAccounting83_ActiveUsers»: Адресат вызова создал исключение.

    Предупреждение безопасности

    Открывается «Выполнение произвольного кода для Telemonitor» из файла «R:SoftTelemonitorexecuter83.tep».

    Рекомендуется обращать внимание на источник, из которого был получен данный файл.

    Если с источником нет договоренности о разработке дополнительных модулей,

    или есть сомнения в содержимом файла, то его не рекомендуется открывать,

    поскольку это может нанести вред компьютеру и данным.

    Разрешить открывать данный файл?

    15.01.2017 23:31:03 — debug (5): Команда /FileAccounting83_ActiveUsers выполнена

    15.01.2017 23:31:03 — debug (5): url: https://api.telegram.org/bot{0}/sendMessage

    15.01.2017 23:31:03 — debug (5): response: Ошибка при выполнении команды

    Reply
  90. yuran2000

    (122) Насчет безопасности рашел решение:

    http://its.1c.ru/db/v838doc#bookmark:dev:TI000001873

    Reply
  91. salexdv

    (124) Спасибо за ссылку.

    (123) Такое, к сожалению, реализовать не смогу т.к. программа построена совсем на других принципах и такое поведение не планировалось с самого начала.

    Reply
  92. user859444

    (1) Уже ничего не работает:

    15.12.2017 16:24:36 — debug (8): Запуск команды /ERP_ActiveUsers на выполнение

    15.12.2017 16:24:36 — debug (3): wt 926

    15.12.2017 16:24:37 — debug (3): url: https://api.telegram.org/bot{0}/getUpdates?offset=тутномер

    15.12.2017 16:24:37 — debug (3): mt wait

    15.12.2017 16:24:37 — debug (3): request created

    15.12.2017 16:24:37 — debug (3): response ok

    15.12.2017 16:24:37 — debug (3): request:{«ok»:true,»result»:[]}

    15.12.2017 16:24:37 — debug (3): True

    15.12.2017 16:24:37 — debug (3): mt release

    15.12.2017 16:24:37 — debug (3): wt 918

    15.12.2017 16:24:38 — debug (3): url: https://api.telegram.org/bot{0}/getUpdates?offset=тутномер

    Reply
  93. user853472

    (21)

    ОтправитьДляОбработки
    Reply
  94. user853472

    (21)

    МассивФайловДляОбъединения.Добавить(СокрЛП(Объект.ИмяФайла)); ТекстДляОтправки = «» + Символы.ПС; ТекстДляОтправки = ТекстДляОтправки + «—«+Boundary+»—«; ФайлаОтправкиКонец.ЗаписатьСтроку(ТекстДляОтправки); ФайлаОтправкиКонец.Закрыть(); МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиКонец);

    Не могу понять, что сюда добавляется? Что такое «Объект» ?

    Вот здесь:

    // ФОТО
    ТекстДляОтправки = ТекстДляОтправки + «—«+Boundary + Символы.ПС;
    ТекстДляОтправки = ТекстДляОтправки + «Content-Disposition: form-data; name=»»photo»»; filename=»»01.jpg»»» + Символы.ПС;
    ТекстДляОтправки = ТекстДляОтправки + «Content-Type: image/jpeg» + Символы.ПС;

    filename это произвольное название?

    а где передается сама картинка?

    У меня сервер возвращает «IMAGE_PROCESS_FAILED» . Пожалуйста! Помогите! Третий день отправляю изображение, все никак не отправлю…..

    Reply
  95. user853472

    (21) Подскажите пожалуйста как вывести в данном случае inline_keyboard кнопки? Очень нужно! Можно в ЛС телеграмма @bosprofit

    Reply
  96. ndacoder

    Разобрался на вин 8.1 работает а вот на сервере 2008 не хочет

    14.08.2018 12:04:07 — debug (3): url: https://api.telegram.org/bot{0}/getUpdates?offset=0

    14.08.2018 12:04:07 — debug (3): mt wait

    14.08.2018 12:04:07 — debug (4): checker: cur.time — 14.08.2018 12:04:07, ls.time — 14.08.2018 12:04:07

    14.08.2018 12:04:07 — debug (3): request created

    ! 14.08.2018 12:04:09 — debug (3): response err: Ошибка на стороне клиента. Код состояния: 401

    14.08.2018 12:04:09 — debug (3): mt release

    Reply
  97. salexdv

    (166)

    Код состояния: 401

    Как организована сеть на 2008-м сервере, сервер в сеть ходит напрямую или через прокси?

    Reply
  98. vis_tmp

    (21)

    МассивФайловДляОбъединения.Добавить(СокрЛП(Объект.ИмяФайла));

    Скажите, что у вас в «Объект.ИмяФайла» ?

    Что содержит этот файл?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *