AI және машиналық оқыту 11.07.2026 ~8 мин ішінде оқылады

1С және Telegram: қалдықтар, тапсырыстар және хабарламалар

Telegram және 1С: мессенджер мен есеп жүйесін біріктіру бизнес үшін жаңа мүмкіндіктер ашады. Бұл құралдардың интеграциясы Ресей мен Қазақстандағы іскерлік хат алмасуды қалай өзгертеді? Толығырақ біздің мақаладан біліңіз!

1С және Telegram: қалдықтар, тапсырыстар және хабарламалар

Telegram деректері бойынша, 2024 жылы мессенджердің күнделікті аудиториясы 950 миллион белсенді пайдаланушыдан асты. Қазақстан мен Ресейде Telegram іскерлік хат алмасудың негізгі арнасына айналды: менеджерлер өтінімдерді келіседі, сауда өкілдері қалдықтар туралы есеп береді, ал басшылар жиынтық мәліметтерді тікелей телефонына алады. Сонымен қатар 1С:Предприятие шағын және орта компаниялардың басым көпшілігі үшін негізгі есеп жүйесі болып қала береді. Осы екі құралды — Telegram мен 1С-ті — интеграциялау «адамдар қайда жұмыс істейді» мен «деректер қайда сақталады» арасындағы алшақтықты жоюға мүмкіндік береді. Бұл мақалада мұндай байланыс арқылы қандай міндеттер шынымен автоматтандырылатынын және оның техникалық тұрғыдан қалай құрылғанын талдаймыз.

West Star Ltd компаниясында біз бұл сұранысқа бірнеше жобада тап болдық: көтерме сауда компаниясы сауда өкілі қоймаға қоңырау шалмай-ақ тауар қалдығын тікелей Telegram-нан тексере алғанын қалады; өндірістік компания 1С-ті ашпай-ақ төлемнің түскені туралы хабарлама алғысы келді. Екі жағдайда да интеграция міндетті шешті — бірақ іске асырудың әр нұсқасының өз бағасы мен өз шектеулері бар, оларды алдын ала түсінген маңызды.

ИНТЕГРАЦИЯҒА ЕКІ ТӘСІЛ

1С пен Telegram-ды байланыстырудың екі негізгі тәсілі бар, және олар деректер ағынының бағыты бойынша түбегейлі ерекшеленеді.

Бірінші тәсіл — Telegram-боттан 1С-ке сұраныс жіберу. Пайдаланушы ботқа жазады, бот OData немесе HTTP-сервис арқылы 1С-ке жүгініп, деректерді алады да, пайдаланушыға жауап береді. Бұл анықтамалық сұраныстар үшін ең кең таралған сценарий: «X тауары бойынша қалдық қанша?», «Y контрагенттің берешегі қандай?», «Z нөмірлі тапсырыстың мәртебесі қандай?».

Екінші тәсіл — 1С-тен Telegram-ға хабарламалар. Белгілі бір оқиға орын алғанда (төлемнің түсуі, дебиторлық берешек лимитінің асып кетуі, құжат мәртебесі) 1С Telegram Bot API арқылы чатқа өзі хабарлама жібереді. Бұл 1С-тегі регламенттік тапсырмалар арқылы жұмыс істейді: олар шартты мезгіл-мезгіл тексеріп, Telegram API-ге HTTP-сұраныс жібереді.

Екі тәсілді бір ботта біріктіруге болады: пайдаланушы сұрақ қояды (бірінші тәсіл), ал бот қосымша түрде сұраныссыз ескертулер жібереді (екінші тәсіл).

АНЫҚТАМАЛЫҚ БӨЛІК ҚАЛАЙ ҚҰРЫЛҒАН: БОТ 1С-КЕ СҰРАНЫС ЖІБЕРЕДІ

Бірінші тәсілді іске асыру үшін екі компонент қажет: python-telegram-bot немесе aiogram кітапханасындағы Python-бот және OData арқылы 1С-пен жұмыс істеуге арналған адаптер (бұл туралы бұрын толық жазғанбыз).

Әдеттегі жұмыс сценарийі мынадай:

  1. Менеджер ботқа жазады: /остаток Ноутбук Lenovo
  2. Бот команданы қабылдап, «Ноутбук Lenovo» іздеу сұранысын бөліп алады
  3. OData арқылы 1С-ке жүгінеді: Catalog_Номенклатура?$filter=contains(Description,'Ноутбук Lenovo')
  4. Табылған Ref_Key бойынша AccumulationRegister_ТоварыНаСкладах_Balance регистрін сұратады
  5. Жауапты пішімдеп, чатқа жібереді: «Ноутбук Lenovo IdeaPad: «Негізгі» қоймада 12 дана»

Кодтың жеңілдетілген мысалы:

from telegram import Update

from telegram.ext import Application, CommandHandler, ContextTypes

from services.onec import OneCAdapter

adapter = OneCAdapter()

async def cmd_balance(update: Update, context: ContextTypes.DEFAULT_TYPE):

query = " ".join(context.args)

if not query:

await update.message.reply_text("Тауар атауын көрсетіңіз: /остаток Тауар")

return

items = adapter._get(

"Catalog_Номенклатура",

{"$filter": f"contains(Description,'{query}') and DeletionMark eq false",

"$select": "Ref_Key,Description",

"$top": 5}

)

if not items:

await update.message.reply_text("Тауар табылмады.")

return

lines = []

for item in items:

bal = adapter._get(

"AccumulationRegister_ТоварыНаСкладах_Balance",

{"$filter": f"Номенклатура_Key eq guid'{item['Ref_Key']}'",

"$select": "КоличествоBalance"}

)

qty = bal[0]["КоличествоBalance"] if bal else 0

lines.append(f"{item['Description']}: {qty} дана")

await update.message.reply_text("\n".join(lines))

app = Application.builder().token("BOT_TOKEN").build()

app.add_handler(CommandHandler("остаток", cmd_balance))

app.run_polling()

Нақты жобада бұған мыналар қосылады: chat_id бойынша пайдаланушыларды авторизациялау (бот бөгде адамдарға жауап бермеуі үшін), нәтижелерді 5–15 минутқа кештеу, 1С қолжетімсіз болғанда қателерді өңдеу, сұраныстарды журналға жазу.

ХАБАРЛАМАЛАР ҚАЛАЙ ҚҰРЫЛҒАН: 1С TELEGRAM-ҒА ЖАЗАДЫ

Екінші тәсіл — 1С-тен хабарламалар — 1С-тегі регламенттік тапсырма немесе оқиға арқылы іске асырылады: ол Telegram Bot API-ге HTTP-сұраныс жібереді.

Ол үшін 1С-те HTTP-қосылым жасалады:

Соединение = Новый HTTPСоединение("api.telegram.org", 443, , , , , Новый ЗащищённоеСоединениеOpenSSL());

Запрос = Новый HTTPЗапрос("/bot" + Токен + "/sendMessage");

Запрос.УстановитьЗаголовок("Content-Type", "application/json");

Тело = "{""chat_id"": """ + ИД_Чата + """, ""text"": """ + Сообщение + """}";

Запрос.УстановитьТелоИзСтроки(Тело);

Соединение.ОтправитьДляОбработки(Запрос);

Регламенттік тапсырма (мысалы, әр 5 минут сайын) шартты тексереді — «соңғы 5 минутта жаңа төлемдер түсті ме» — және түссе, хабарлама құрастырып, оны қажетті чатқа немесе топқа жібереді.

Маңызды нюанс: алушының chat_id-ін алдын ала білу керек. Ең оңайы — қызметкерден ботқа кез келген хабарлама жазуды өтініп, алынған chat_id-ді «қызметкер — chat_id» сәйкестік кестесіне жазу. Бұл баптау кезінде бір рет жасалады.

1С-тен жіберілетін хабарламалардың әдеттегі сценарийлері:

— Клиенттен төлем түсуі: «Иванов А.А. №152 шотты 450 000 теңгеге төледі»

— Дебиторлық берешек лимитінің асып кетуі

— Шарттың немесе сенімхаттың қолданылу мерзімінің аяқталуы

— Тауар қалдығының сыни деңгейге дейін төмендеуі (шектен төмен)

— Тапсырысты орындау мәртебесі «Жөнелтілді» болып өзгерді

1С-ТЕ ӨТІНІМ ЖАСАУ СЦЕНАРИЙІ

Күрделірек әрі құндырақ сценарий — пайдаланушы деректерді сұрап қана қоймай, 1С-те құжатты тікелей Telegram-нан жасаған кезде. Мысалы, сауда өкілі далада клиенттен өтінім қабылдап, 1С-ке кірмей-ақ тапсырысты бот арқылы рәсімдейді.

OData арқылы 1С-ке деректер жазу үшін POST әдісі қолданылады:

def create_order(customer_key, items):

payload = {

"Контрагент_Key": customer_key,

"СоглашениеОбУсловияхПродажи_Key": "...",

"Товары": [

{

"Номенклатура_Key": item["ref"],

"Количество": item["qty"],

"Цена": item["price"]

}

for item in items

]

}

resp = requests.post(

f"{BASE_URL}/Document_ЗаказКлиента",

json=payload,

auth=ONEC_AUTH,

headers={"Content-Type": "application/json"},

timeout=30

)

resp.raise_for_status()

return resp.json()

Алайда OData арқылы жазу 1С құжатының құрылымын қатаң сақтауды талап етеді және бизнес-логиканы (бағаларды прайс-парақ бойынша толтыру, лимиттерді бақылау) әрдайым дұрыс орындай бермейді. Құжаттарды жасау үшін 1С-әзірлеуші сіздің міндеттеріңізге арнайы жазған HTTP-сервисті пайдаланған сенімдірек — ол 1С логикасын инкапсуляциялайды және боттан жеңілдетілген JSON қабылдайды.

БОТҚА КІМ АВТОРИЗАЦИЯЛАНАДЫ

Жобалау кезеңінде жиі назардан тыс қалатын маңызды сұрақ: бұл ботпен жұмыс істеуге және 1С деректерін көруге кімнің құқығы бар? Әдепкі бойынша боттың @атауын білетін кез келген адам оған жаза алады. Ішкі корпоративтік бот үшін бұған жол берілмейді.

Әдеттегі шешім — авторизацияланған пайдаланушылар кестесі: боттың дерекқорында қолжетімділікке рұқсат етілген Telegram chat_id тізімі сақталады. Әр сұраныс кезінде бот кіріс хабарламаның chat_id-ін осы тізім бойынша тексереді. Жаңа пайдаланушыны қосу не бот әкімшісінің командасы арқылы, не токендер механизмі арқылы 1С-тегі есептік жазбаға байлау арқылы жүзеге асады.

Ірі компаниялар үшін рөлдік қолжетімділікті баптауға болады: менеджер тек өз клиенттері мен өз тапсырыстарын көреді, бөлім басшысы — бөлімнің барлық тапсырыстарын, директор — компания бойынша жиынтықты.

Тағы бір жұмыс істейтін паттерн — алғашқы кіру кезіндегі бір реттік токен. Пайдаланушы ботты ашып, «Қосылу» батырмасын басады және әкімші 1С-те беретін кодты енгізеді. Бот chat_id-ді есте сақтап, оны 1С пайдаланушысымен байланыстырады. Кейінгі сұраныстар қосымша авторизациясыз осы пайдаланушы бойынша автоматты түрде сүзіледі.

ШЕКТЕУЛЕР МЕН ӘЛСІЗ ТҰСТАР

— OData деректерді оқуға жарайды, бірақ ол арқылы жазу 1С құрылымын дәл сақтауды талап етеді. Сұраныс пішіміндегі қателер көбіне ештеңе түсіндірмейтін 500 қатесін береді. Жазу үшін HTTP-сервистер сенімдірек.

— Хабарлама жіберуге арналған 1С-тегі регламенттік тапсырмалар, егер тапсырманы орындайтын пайдаланушының интернетке қолжетімділігі болмаса (1С серверіндегі файрвол баптаулары), бұғатталуы мүмкін. Бұл алғашқы іске қосу кезіндегі әдеттегі мәселе: хабарламалар келмейді, ал 1С журналдарын тексермей себебін табу оңай емес.

— Желі қолжетімсіз болғанда Telegram хабарламалардың жеткізілуіне кепілдік бермейді. Егер 1С сервері мен бот сервері ақ IP-сіз NAT артында тұрса, вебхуктер жұмыс істемейді — polling қолдану керек, бұл хабарламалардың кешігуіне әкеледі.

— Жауап жылдамдығы 1С өнімділігіне байланысты. Дерекқор қатты жүктелген кезде боттан келген сұраныс 5–10 секунд орындалуы мүмкін. Пайдаланушы үшін бұл ұзақ — не деректерді кештеу керек, не «жүктелуде...» деп хабарлап, асинхронды түрде жауап беру керек.

— Бот токені мен 1С есептік деректерінің қауіпсіздігі. Егер Telegram-бот токені бөгде адамдардың қолына түссе, олар бот атынан хабарлама жібере алады. Егер 1С есептік деректері тарап кетсе, дерекқор деректеріне қол жеткізіледі. Екі құпияны да орта айнымалыларында сақтап, олардың ашылып қалғаны туралы аздаған күдік туған кезде жаңартып отыру керек.

— Қолдау және мониторинг. Бот — құлап қалуы мүмкін тағы бір сервис. Uptime мониторингі мен қателер туралы алерттер болмаса, пайдаланушылар бұл туралы ауызша, оның өзінде бірнеше күннен кейін хабарлайды.

ПРАКТИКАЛЫҚ ҚОРЫТЫНДЫ

Маманға. Қарапайым сценарийден — OData арқылы анықтамалық сұраныстардан бастаңыз. OData-қосылым жұмыс істеп тұрса, бұл 1–2 күнде іске қосылады. chat_id бойынша авторизацияны бірден қосыңыз, кейінге қалдырмаңыз. 1С-тен хабарламалар үшін регламенттік тапсырмаларды орындайтын пайдаланушының сервер файрволы арқылы api.telegram.org-ға қолжетімділігі бар екенін тексеріңіз.

Басшыға. 1С пен Telegram интеграциясы уақыттың нақты шығындарын жояды: менеджер бір сан үшін қоймаға қоңырау шалуға 3–5 минут жұмсамайды, басшы күнделікті есепті күтпей-ақ төлем туралы хабарлама алады. Бұл ретте 1С-тегі деректер қайталанбайды және бір-бірінен алшақтамайды — бот оларды тікелей есеп жүйесінен оқиды.

Меншік иесіне. Бұл байланыс дайын инфрақұрылымда жұмыс істейді: сіздің Telegram, сіздің 1С, олардың арасындағы шағын Python-сервис. Бөгде сервиске жазылым да, деректерді үшінші тараптар арқылы беру де жоқ. Базалық нұсқаны іске қосу құны — бірнеше күндік әзірлеу, сүйемелдеу құны мониторинг жолға қойылса, ең төменгі деңгейде.

ЖИІ ҚОЙЫЛАТЫН СҰРАҚТАР

Telegram-мен интеграциялау үшін 1С-ті пысықтау керек пе?

OData арқылы анықтамалық сұраныстар үшін — жоқ, веб-базаның жарияланымы қосулы болса жеткілікті. Құжаттар жасау және 1С-тен хабарламалар үшін пысықтау қажет: не HTTP-сервис (1С-әзірлеушінің бірнеше сағаттық жұмысы), не Telegram API-ге сұраныс жіберетін регламенттік тапсырма.

Ботты жеке чатқа емес, топқа немесе арнаға қосуға бола ма?

Иә. Telegram-бот топтар мен арналарға хабарлама жібере алады, егер оны сол жерге қосып, топтың chat_id-ін алсаңыз. Көптеген компаниялар «1С хабарламалары» деген жабық топ құрып, оған қажетті қызметкерлерді қосады — бұл әрқайсысына жеке хабарлама жіберуден ыңғайлырақ.

1С деректерін Telegram арқылы сақтау қаншалықты қауіпсіз?

Telegram-ның өзі 1С деректерін сақтамайды — бот оларды тек жүгінген сәтте сұратып, жауап жібереді. Деректер Telegram серверлерінде кештелмейді. Тәуекелдер: бот токенінің немесе 1С есептік деректерінің ашылып қалуы. Олар орта айнымалылары, 1С пайдаланушысының шектеулі құқықтары және chat_id бойынша сүзгілеу арқылы азайтылады.

1С қолжетімсіз болса, бот қатып қала ма?

Нақты таймаут болмаса, 1С-ке жіберілген сұраныс өңдеушіні шынымен «қатырып» қоюы мүмкін. 1С-ке сұраныстарға timeout=15 орнатыңыз, RequestException ерекшелігін ұстап, пайдаланушыға «Деректер уақытша қолжетімсіз, бірнеше минуттан кейін қайталап көріңіз» деп жауап беріңіз. Бұл боттың үнсіз қалуынан әлдеқайда жақсы.

AI және машиналық оқыту
Мақаламен бөлісу

Пікірлер (0)

Әзірге пікірлер жоқ. Бірінші болыңыз!

1С интеграциясы қажет пе?

Біз интеграцияны Django + 1С OData API стегінде жүзеге асырамыз. Тегін кеңес алу үшін бізбен байланысыңыз.

Жобаны талқылау