1С: Предприятие + корпоративный чат, как наладить оперативные уведомления за 10 минут
Интеграция - Мессенджеры и боты
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Есть в 1С: Предприятие несколько задач, которые хотелось бы решить без применения «чёрной магии» и малыми силами, но система не позволяет сделать такое, потому что в ней нет нормального корпоративного чата. Речь идёт о линейке версий 1С 8.xx.
- 1С + корпоративный чат, зачем?
- Какой чат взять?
- Как увязать эти две системы?
- Что делать, когда не получается?
Например, при создании заказа автоматически отправлять уведомление исполнителю, это гораздо быстрее, чем через почту. Или ускорить согласование заявок на платежи. Либо уведомлять людей о том, что пришли выписки по платежкам из банка.
Было бы круто отправлять такие сообщения сразу в корпоративный чат, нужному человеку.
Экономим время — уведомления рассылаются сразу же по событию, нет задержек. Телефон не занят, необязательно, чтобы человек сидел на рабочем месте, уведомление пришло в чат и будет прочитано.
Автоматические напоминания о важных событиях — система не пропустит ничего и не забудет уведомить нужного человека.
Хорошая история — раз это корпоративный чат, то можно открыть историю сообщений и прочитать, что, когда и в каком порядке приходило. С поиском, в хронологическом порядке.
Про «вкусности» рассказали, теперь о прозе. Как это всё сделать, желательно побыстрее и попроще?
Вам понадобится офисный чат MyChat, если у вас его ещё нет — скачайте бесплатную версию на 20 человек, «на попробовать» хватит, потом можно расширить лицензию. Бесплатная версия по функционалу почти ничем не отличается от коммерческой, да и триала на 30 дней нету, лицензия не ограничена по времени.
Итак, скачали, установили сервер и хотя бы один клиент, подключили клиент к серверу. Это всё можно сделать на одном компьютере, для теста хватит вполне. Ставится всё линейно, без умных вопросов. Если вдруг возникнет заминка, то вот руководства по установке:
Как установить сервер MyChat? (пошаговое руководство)
Как установить клиент MyChat? (как поставить и подключить к серверу, официальная справка)
У нас сейчас запущены сервер и клиент MyChat на одном компьютере:

Итак, всё готово и можно переходить к следующему шагу. Как отправить сообщение из 1С прямо в офисный чат?
Нам понадобится два файла:
- Компонент для 1С, C:\Program Files (x86)\MyChat Server\doc\IntegrationAPI\1C\8.xx\mychatvk.dll, сделан по технологии NativeAPI.
- Библиотека MyChat Integration API, C:\Program Files (x86)\MyChat Server\doc\IntegrationAPI\MyChatIntegrationAPIDLLs\x32\mychat.dll
Берём эти две dll-библиотеки и выкладываем их в в папку \bin установленной 1С (C:\Program Files (x86)\1cv8t\8.3.5.1248\bin\).
Теперь открываем тестовую конфигурацию 1С и пишем туда вот такое (у моего компьютера с работающим сервером MyChat IP адрес 192.168.10.107, а пользователь, которого я зарегистрировал, UIN=2), а вы впишите свои данные:
Перем КомпонентMyChat;
Процедура ПоказатьТекстСтатусаНажатие(Элемент)
ТекстСообщения = ТекстСтатуса + Символы.CR + Символы.LF + "Вторая строка";
// адрес сервера, номер порта, ключ Integration API, отправитель, получатель, текст сообщения
Результат = КомпонентMyChat.SendPrivateMessage("192.168.10.107", 2004, "iddqd", "0", "2", ТекстСообщения);
Сообщить(Результат); // результат работы функции
КонецПроцедуры
Процедура ПриОткрытии()
Сообщить("Версия MyChat.dll - " + КомпонентMyChat.GetMyChatLibVersion());
Сообщить("Дата MyChat.dll - " + КомпонентMyChat.GetMyChatLibReleaseDate());
Сообщить("Версия MyChatVK.dll - " + КомпонентMyChat.GetMyChatVKLibVersion());
Сообщить("Дата MyChatVK.dll - " + КомпонентMyChat.GetMyChatVKLibReleaseDate());
КонецПроцедуры
Результат=ПодключитьВнешнююКомпоненту("mychatvk.dll","MyChat", ТипВнешнейКомпоненты.Native);
Если Результат Тогда
КомпонентMyChat = Новый ("AddIn.MyChat.MyChatClass");
Иначе Сообщить("Ошибка подключения mychatvk.dll!");
КонецЕсли;
Набираем сообщение, жмём кнопку «Показать» и вуаля:

Что вообще произошло?
Мы нажали кнопку в 1С, отработала процедура, «дёрнула» функцию компоненты, а та, в свою очередь, через MyChat IntegrationAPI уже отправила личное сообщение от имени робота, встроенного в мессенджер — реальному человеку.
Можно и не от имени робота, но так проще, у нас ведь пользователей-то нет ещё, конфигурация тестовая.
Понятно, что в примере всё линейно и максимально просто, но для теста и понимания, как оно работает — достаточно.
Надо сказать, что сообщения отправляются надёжно, MyChat работает по схеме клиент-сервер. Можно отправлять сообщения тем людям, которых нет в сети. Можно увязать в корпоративный чат разбросанные по городу или стране подразделения, можно отправлять сообщения массово, с обязательным подтверждением прочтения. Есть всякие «вкусности», но это всё темы для отдельных статей.
Обязательно посмотрите справку по интеграции офисного чата MyChat и 1С: Предприятие, хотя бы мельком.
Кто ничего не делает, тот никогда не ошибается. Если что-то поломалось или не работает, а разобраться, почему, самому никак не выходит — пишите на форум поддержки MyChat. Там отзывчивые адекватные люди, вам всегда оперативно ответят и постараются помочь.
Вступайте в нашу телеграмм-группу Инфостарт
IM мгновенные сообщения корпоративный чат интеграция уведомления
См. также
SALE! 50%
Мессенджеры и боты SMS рассылки Email рассылки Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)
Расширение 1С с полным набором инструментов для качественных транзакционных, триггерных и маркетинговых рассылок Email, SMS, MAX, WhatsApp, Telegram. Даже простые уведомления об оплате счетов способны существенно упростить сбор дебиторской задолженности. Применение всех возможностей прямого маркетинга выводит коммуникацию с клиентами, уровень сервиса и лояльность на новый уровень.
6100
3050 руб.
07.04.2014 99902 93 205
Мессенджеры и боты 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)
Интеграция мессенджеров Max, WhatsApp и 1С: УНФ, УТ, КА, ERP - отправка и получение сообщений, картинок, файлов и видео прямо в 1С. Расширение работает с сервисом GreenApi. Важно: Интеграция с Telegram пока только для конфигурации 1С:УНФ.
30500 руб.
23.06.2023 18909 62 27
Мессенджеры и боты 1С:Предприятие 8 1С 8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Управленческий учет Платные (руб)
Расширение WhatsApp/MAX/Telegram-клиент для 1С работает через сервис Green-Api.com (WhatsApp/MAX/Telegram) и BotFather (Telegram). Это отправка/получение сообщений, изображений, смайлов, файлов из 1С.
15000 руб.
09.02.2024 14089 27 74
Мессенджеры и боты 1С 8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Россия Платные (руб)
Готовый чат-бот MAX для 1С виде расширения. Клиенты проверяют остатки и заказы прямо в мессенджере. Ролевая модель, гибкое меню, отправка файлов, диалоги. Подключайте свою логику через внешние обработки.
14640 руб.
26.03.2026 3955 5 0
Мессенджеры и боты SMS рассылки Email рассылки 1С:Предприятие 8 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)
Общение с клиентами несколькими операторами 1С с одного или нескольких аккаунтов Max, Telegram и WhatsApp в вашей базе 1С. Рассылки, чат-боты, сценарии. Работает как самостоятельное решение, так и в составе других конфигураций 1С 8.3 - 8.5.
5900 руб.
08.04.2020 59716 123 2
Мессенджеры и боты 1С 8.3 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 Платные (руб)
Обработка для быстрого подключения мессенджера MAX к любой конфигурации 1С.
10000 руб.
02.02.2026 8860 40 2
Мессенджеры и боты SMS рассылки 1С:Предприятие 8 1С:Управление нашей фирмой 3.0 Россия Платные (руб)
Решение реализовано в виде расширения. Заменяет отправку смс на отправку в WhatsApp через Green-api. Отправка чека картинкой.
7930 руб.
15.05.2024 5130 5 11
Мессенджеры и боты Учет документов 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)
Расширение для согласования справочников и документов в основных типовых конфигурациях. Ролевая адресация, условная маршрутизация, чат-бот telegram/max, интеграция с n8n, последовательное и параллельное согласование, уведомление о новых задачах на почту, блокировка объектов в зависимости от статуса, запрет проведения в зависимости от статуса, автозапуск процессов согласования, отчеты по исполнительской дисциплине. Не требуется снятие конфигурации с поддержки. Настройка без программирования. Сертификат 1С-Совместимо.
14900 руб.
15.11.2018 43885 58 62
Далее, чаты на основе Telegram это здорово, но ему нужен Интернет, а MyChat — это сервер внутри вашей сети. Если вы добровольно согласны сливать внутреннюю информацию компании на чужие сервера непонятно куда - это ваше право. Лично я на такое не готов. Как и множество наших клиентов.
Пример в студию, покажите, насколько это проще, в отличие от того примера, что я привел.
И насчет безопасности не перебарщивайте. Принципиально то - кто инициирует соединение и какие порты при этом используются. Впрочем это тема отдельного разговора, достаточно того, что telegramm можно встроить в 1С без танцев с бубном, и безопасность при этом не пострадает.
Хотелось бы. Но использование своего мессенджер-сервера - принципиальная вещь. При чём тут порты и кто инициирует соединение? Я говорю о том, что вы предлагаете конфиденциальную коммерческую информацию сливать на сервера Телеграма в Интернет. Это несерьёзно и недопустимо для бизнеса. Хотя, возможно, каким-то компаниям и наплевать на это.
100% согласен с вами.
Наша компания делала такой шлюз на основе Siemens MC35i, всё работало, но не бесплатно.
P.S. Забыл про бонус. Оператор связи и все интересующиеся будут знать про все ваши телодвижения в бухгалтерии. Привет Яровой :):)
Типа SMS: Вася! Обнови 1С:Бухгалтерию ООО "Василёк"
Чат: Марья Ивановна! Платеж не прошел на сумму бла бла бла для организации бла бла ссылка, документ ссылка ...
Кое что находил из бесплатного , но из за заморочек в настройке проект так и не взлетел. А тут утром наткнулся на статью , а в обед уже первые 15 человек , радовались оперативностью оповещения. Пару недель понаблюдаю и если все будет Ок , будем брать коммерческую версию.Из минусов немного тормозит диалог передачи файлов , а так все ГУД.
И там и там можно указать дату актуальности сообщения.
P.S. Надо скачать свежую версию библиотеки mychatvk.dll с официального сайта.
Решение конечно имеет право на жизнь, но я бы смотрел в сторону открытых систем.
Тот же Jabber (XMPP), реализаций найти можно уйму на этом сайте, клиенты есть под все ОС в том числе и мобильные и веб, сервера Jabber тоже есть под различные ОС и поднять свой собственный не составит труда.
Ну и собственно сама 1С уже выпустила продукт "1С:Предприятие - Сервер взаимодействия", можно как собственный сервер поднять так и пользоваться облачным от 1С, чат уже есть из коробки 1С начиная с версии 8.3.10.2168:
Александр, MyChat работает под Windows/Linux/MacOS/Android/WEB. Сервер - только под Windows.
Насчёт Jabber и 1С - я рекомендую вам самому развернуть эти системы и сравнить функционал и стоимость с MyChat, а уже потом давать комментарии, владея конкретными цифрами и функционалом.
Открытые системы - это здорово, но, к сожалению, очень сложно и часто работает далеко не всё. Когда дело доходит до реальных задач, нужны восьмигранные напильники с алмазным напылением, и то не всегда помогает :) Говорю не просто так, есть приличный опыт работы с OpenFire/ejabberd. Серьёзные же коммерческие системы стоят уйму денег. Например, Skype for business. MyChat между ними посредине. В любом случае, для начала попробуйте бесплатную версию, чтобы сложить своё собственное мнение. До 20 человек онлайн - бесплатно, без ограничения по времени использования.
Насчёт решения от 1С. Да, в статусе беты, наверное, допилят до какого-то уровня со временем. Функционал слабенький, системные требования - весьма серьёзные, без 1С - не работает. Работает через WebSockets. То есть внутри что-то типа Electron или WebKit (обрезанный Chrome, ниже Windows 7/Vista работать не будет). Вы серьёзно считаете, что для компании на 200-300 человек нужно закупать лицензии на 1С на все рабочие места, чтобы общаться в корпоративном чате? Во сколько это обойдётся?
Туда же в Битрикс заведены открытые линии, так что менеджеры из единого чата могут общаться с клиентами через Telegram, Viber, VK, Facebook и пр.
MyChat безусловно молодцы что сделали библиотеку для интеграции, функционал действительно достаточно широк и выходит за рамки корпоративного чата, я даже проголосовал за публикацию в знак одобрения и поддержки.
Но справедливости ради надо заметить что это не единственное достойное решение.
В октябре 2017 сменил не удовлетворявший требованиям чат *** на бесплатную версию MyChat (от скайпа ранее решили уйти по причине его
Ниже пример процедуры, рассылающей информацию о днях рождения сотрудников из конфигурации Бухгалтерия для Беларуси 2.1 за 3 дня и в день рождения всем, кроме именинников. Конфигурация доработана следующим образом:
В справочник Сотрудники добавлены реквизиты ТА_UIN (UIN пользователя чата), ТА_ПолучатьУведомления (необходимость отправки данному сотруднику сообщений) и ТА_РассылатьУведомленияОДР (необходимость оповещения коллег о ДР данного сотрудника). При приеме я вношу в сотрудника UID, при проведении увольнения флаги сбрасываются автоматом (код из увольнения не привожу, он примитивен). Требования к моему примитивному механизму: у каждого сотрудника должна быть учетка в MyChat, тогда каждый актуальный сотрудник будет гарантированно уведомлен о ДР других сотрудников, кроме собственного.
На данный момент есть нюанс: при отправке из 64-битной версии 1С компонента не загружается из-за ошибки, поэтому я через планировщик задач windows открываю внешнюю обработку в пустой базе 32-битной версии 1С, при этом к бухгалтерии подключаюсь удаленно через COM для получения списка сотрудников, но разработчики пообещали исправить ошибку, так что это неудобство временное. Приведенный код предназначен для 32-битной 1С. Если хотите сделать через планировщик, то в коде добавьте выполнение запроса через COM, в остальном все то же.
Функция УстановитьСоединениеСMyChat(ТекстОшибки)
Результат = ПодключитьВнешнююКомпоненту("mychatvk.dll","MyChat", ТипВнешнейКомпоненты.Native);
Если Результат Тогда
Возврат Новый ("AddIn.MyChat.MyChatClass");
Иначе
ТекстОшибки = "Ошибка подключения к mychatvk.dll на сервере";
Возврат Неопределено;
КонецЕсли;
КонецФункции
Показать
Функция ОтправитьСообщениеОдномуПользователю(Подключение, UINПользователя, ТекстСообщения)
// адрес сервера, номер порта, ключ Integration API, отправитель, получатель, текст сообщения
КлючIntegrationAPI = "***";
Подключение.SendPrivateMessage("192.168.0.123", 2004, КлючIntegrationAPI, "0", Строка(UINПользователя), ТекстСообщения);
КонецФункции
Процедура НапомнитьОДняхРожденияСотрудников() Экспорт
ТекстОшибки = "";
ПодключениеКMyChat = УстановитьСоединениеСMyChat(ТекстОшибки);
Если ПодключениеКMyChat = Неопределено Тогда
Сообщить(ТекстОшибки);
Возврат;
КонецЕсли;
//Список получателей
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Сотрудники.ТА_UIN КАК UIN
|ИЗ
| Справочник.Сотрудники КАК Сотрудники
|ГДЕ
| Сотрудники.ТА_ПолучатьУведомления
| И Сотрудники.ТА_UIN > 0
|УПОРЯДОЧИТЬ ПО
| Сотрудники.ТА_UIN";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
СписокПолучателейМассив = Новый Массив;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СписокПолучателейМассив.Добавить(ВыборкаДетальныеЗаписи.UIN);
КонецЦикла;
//Список потенциальных именинников
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Сотрудники.ФизическоеЛицо.ФИО КАК ФИО,
| Сотрудники.ФизическоеЛицо.ДатаРождения КАК ДатаРождения,
| Сотрудники.ТА_UIN КАК UIN
|ИЗ
| Справочник.Сотрудники КАК Сотрудники
|ГДЕ
| Сотрудники.ТА_РассылатьУведомленияОДР
| И Сотрудники.ФизическоеЛицо.ДатаРождения <> &ПустаяДата";
Запрос.УстановитьПараметр("ПустаяДата", Дата(1,1,1));
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ЧислоСутокДоДняРожденияДляНапоминания1 = 3;
ЧислоСутокДоДняРожденияДляНапоминания2 = 0;
СегодняшнийДень = НачалоДня(ТекущаяДата());
ДатаНапоминания1 = (Дата(Год(СегодняшнийДень), Месяц(ВыборкаДетальныеЗаписи.ДатаРождения), День(ВыборкаДетальныеЗаписи.ДатаРождения)) - ЧислоСутокДоДняРожденияДляНапоминания1 * 24 * 3600);
ДатаНапоминания2 = (Дата(Год(СегодняшнийДень), Месяц(ВыборкаДетальныеЗаписи.ДатаРождения), День(ВыборкаДетальныеЗаписи.ДатаРождения)) - ЧислоСутокДоДняРожденияДляНапоминания2 * 24 * 3600);
Если СегодняшнийДень <> ДатаНапоминания1 И СегодняшнийДень <> ДатаНапоминания2 Тогда
Продолжить;
КонецЕсли;
UINИменинника = Строка(ВыборкаДетальныеЗаписи.UIN);
Для Счетчик = 0 По СписокПолучателейМассив.ВГраница() Цикл
UINПолучателя = Строка(СписокПолучателейМассив[Счетчик]);
Если UINИменинника = UINПолучателя Тогда
Продолжить;
КонецЕсли;
ТекстСообщения =
"Напоминание: " +
Строка(День(ВыборкаДетальныеЗаписи.ДатаРождения)) + " " +
ПолучитьНаименованиеМесяца(Месяц(ВыборкаДетальныеЗаписи.ДатаРождения)) +
" празднует день рождения "
+ ВыборкаДетальныеЗаписи.ФИО;
ОтправитьСообщениеОдномуПользователю(ПодключениеКMyChat, UINПолучателя, ТекстСообщения);
КонецЦикла;
КонецЦикла;
ПодключениеКMyChat = Неопределено;
КонецПроцедуры
ПоказатьНа счет заливать файлы, ошибка :(
[ERROR] Ошибка #0234: ошибка заливки файла на сервер (URL "https://192.168.0.1:80/uploading/", #10091, "Network subsystem is unusable")
сообщение типа такого: вам назначена задача - ознакомление и ссылка ....
1с реализовало обсуждения через сервер взаимодействия...но настолько криво и неумело... (сообщения можно посылать только из программы.. и вручную...хотя направление правильное ..
можно наверно как то реализовать оповещение через сервер взаимодействия...
например что то в виде этого...
ИдентификаторОбсуждения = СистемаВзаимодействия.ПолучитьОбсуждение(ИмяКомпьютера + ИдентификаторПользователя + "Сообщить");
Сообщение = СистемаВзаимодействия.СоздатьСообщение(ИдентификаторОбсуждения);
Сообщение.Текст = "Зарегистрирован новый документ!";
Сообщение.Записать();
у кого какие мысли?
Второй вариант отправки сообщений из 1С в MyChat - через REST-запросы. Этот вариант не зависит от разрядности платформы 1С:Предприятие. Вот мой примерчик:
Сервер = "192.168.1.223";
Порт = 8081;
Отправитель = 0; //UIN той самой Элизы, т.е. робота (на мой взгляд, именно от робота наиболее целесообразно осуществлять рассылку)
Получатель = 3; //UIN, email или ник пользователя-получателя
ТекстСообщения = "Первая строка тестового сообщения." + Символы.ПС + "Вторая строка тестового сообщения!"; //обычная строка из мира 1С
//Столь родной сердцу символ Символы.ПС заменяем на странные кракозябры управляющие символы в соответствии с законами мира web-технологий
РазделительСтрок = "\r\n";
ТекстСообщения = СтрЗаменить(ТекстСообщения, Символы.ПС, РазделительСтрок);
//Ключ берем из http://<сервер>:<порт>/admin/#/navSettings/SettingsAPI/
КлючIngtegrationAPI = "*****";
Ресурс = "API/?data={""cmd"":""0002"",""UserFrom"":""" + Отправитель + """,""UserTo"":""" + Получатель + """,""Msg"":""" + ТекстСообщения + """,""APIStype"":""mydata"",""ServerKey"":""" + КлючIngtegrationAPI + """}";
Попытка
Соединение = Новый HTTPСоединение(Сервер, Порт);
HTTPЗапрос = Новый HTTPЗапрос(Ресурс);
Ответ = Соединение.Получить(HTTPЗапрос);
Исключение
Сообщить(ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
КонецПопытки;
Показать
Сервер = "192.168.1.223";
Порт = 8081;
Ресурс = "/API/?data=";
ПараметрыЗапроса = Новый Структура;
ПараметрыЗапроса.Вставить("cmd", "0002");
ПараметрыЗапроса.Вставить("UserFrom", "0");
ПараметрыЗапроса.Вставить("UserTo", "3");
ПараметрыЗапроса.Вставить("Msg", "Тестовое сообщение от " + ТекущаяДата());
ПараметрыЗапроса.Вставить("APIStype", "mydata");
ПараметрыЗапроса.Вставить("ServerKey", "********");
ФайлЗапроса = ПолучитьИмяВременногоФайла();
ФайлРезультата = ПолучитьИмяВременногоФайла();
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.ОткрытьФайл(ФайлЗапроса);
ЗаписатьJSON(ЗаписьJSON, ПараметрыЗапроса);
ЗаписьJSON.Закрыть();
Попытка
HTTP = Новый HTTPСоединение(Сервер,Порт);
HTTPЗапрос = Новый HTTPЗапрос(Ресурс);
HTTPЗапрос.УстановитьИмяФайлаТела(ФайлЗапроса);
Результат = HTTP.ОтправитьДляОбработки(HTTPЗапрос, ФайлРезультата);
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.ОткрытьФайл(ФайлРезультата);
пJSON = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
//При желании можно почитать данные возвращаемого JSON,
//можно проверить Результат.КодСостояния <> 200 и т.д.
Исключение
Сообщить("Ошибка при отправке запроса: " + ОписаниеОшибки());
КонецПопытки;
Попытка
УдалитьФайлы(ФайлЗапроса);
Исключение КонецПопытки;
Попытка
УдалитьФайлы(ФайлРезультата);
Исключение КонецПопытки;
Показать
Сервер = "192.168.1.223";
Порт = 8081;
Ресурс = "/API/?data=";
СтрокаJSON = "{""cmd"":""0002"",""UserFrom"":""0"",""UserTo"":""3"",""Msg"":""Hellomsg"",""APIStype"":""mydata"",""ServerKey"":""*****""}";
Попытка
HTTP = Новый HTTPСоединение(Сервер,Порт,,,,30);
HTTPЗапрос = Новый HTTPЗапрос(Ресурс);
HTTPЗапрос.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded");
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Результат = HTTP.ОтправитьДляОбработки(HTTPЗапрос);
//Если Результат.КодСостояния <> 200 Тогда ...
Исключение
Сообщить("Ошибка при отправке запроса: " + ОписаниеОшибки());
КонецПопытки;
Показать
&НаКлиенте
Процедура ОтправитьСообщениеПользователю(UINПользователя, ТекстСообщения)
Сервер = "192.168.1.223";
Порт = 8081;
Ресурс = "/API/?data=";
СтруктураДанных = Новый Структура;
СтруктураДанных.Вставить("cmd", "0002");
СтруктураДанных.Вставить("UserFrom", "0");
СтруктураДанных.Вставить("UserTo", UINПользователя);
СтруктураДанных.Вставить("Msg", ТекстСообщения);
СтруктураДанных.Вставить("APIStype", "mydata");
СтруктураДанных.Вставить("ServerKey", "*****");
СтрокаJSON = СформироватьСтрокуJSON(СтруктураДанных);
Попытка
HTTP = Новый HTTPСоединение(Сервер,Порт,,,,30);
HTTPЗапрос = Новый HTTPЗапрос(Ресурс);
HTTPЗапрос.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded");
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Результат = HTTP.ОтправитьДляОбработки(HTTPЗапрос);
Если Результат.КодСостояния <> 200 Тогда
Сообщить("Ошибка при отправке запроса: " + Результат.КодСостояния);
КонецЕсли;
Исключение
Сообщить("Ошибка при отправке запроса: " + ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Функция СформироватьСтрокуJSONИзМассива(Объект)
СтрокаJSON = "[";
Для каждого Элемент Из Объект Цикл
Если ТипЗнч(Элемент) = Тип("Строка") Тогда
СтрокаJSON = СтрокаJSON + """" + СтрЗаменить(Элемент, Символы.ПС, "\r\n") + """";
ИначеЕсли ТипЗнч(Элемент) = Тип("Число") Тогда
СтрокаJSON = СтрокаJSON + СтрЗаменить(Строка(Элемент), Символы.НПП, "");
ИначеЕсли ТипЗнч(Элемент) = Тип("Булево") Тогда
СтрокаJSON = СтрокаJSON + Формат(Элемент, "БЛ=false; БИ=true");
ИначеЕсли ТипЗнч(Элемент) = Тип("Дата") Тогда
СтрокаJSON = СтрокаJSON + Формат(Элемент - Дата(1970,1,1,1,0,0), "ЧГ=0");
ИначеЕсли ТипЗнч(Элемент) = Тип("Массив") Тогда
СтрокаJSON = СтрокаJSON + СформироватьСтрокуJSON(Элемент);
ИначеЕсли ТипЗнч(Элемент) = Тип("Структура") Тогда
СтрокаJSON = СтрокаJSON + СформироватьСтрокуJSON(Элемент);
ИначеЕсли ТипЗнч(Элемент) = Тип("ТаблицаЗначений") Тогда
СтрокаJSON = СтрокаJSON + СформироватьСтрокуJSON(Элемент);
Иначе
СтрокаJSON = СтрокаJSON + """" + URLEncode(Строка(Элемент)) + """";
КонецЕсли;
СтрокаJSON = СтрокаJSON + ",";
КонецЦикла;
Если Прав(СтрокаJSON, 1) = "," Тогда
СтрокаJSON = Лев(СтрокаJSON, СтрДлина(СтрокаJSON)-1);
КонецЕсли;
Возврат СтрокаJSON + "]";
КонецФункции
&НаКлиенте
Функция СформироватьСтрокуJSONИзСтруктуры(Объект)
СтрокаJSON = "{";
Для каждого Элемент Из Объект Цикл
Если Элемент.Значение = "" Тогда
Продолжить;
КонецЕсли;
СтрокаJSON = СтрокаJSON + """" + Элемент.Ключ + """" + ":";
Если ТипЗнч(Элемент.Значение) = Тип("Строка") Тогда
СтрокаJSON = СтрокаJSON + """" + СтрЗаменить(Элемент.Значение, Символы.ПС, "\r\n") + """";
ИначеЕсли ТипЗнч(Элемент.Значение) = Тип("Число") Тогда
СтрокаJSON = СтрокаJSON + СтрЗаменить(Строка(Элемент.Значение), Символы.НПП, "");
ИначеЕсли ТипЗнч(Элемент.Значение) = Тип("Булево") Тогда
СтрокаJSON = СтрокаJSON + Формат(Элемент.Значение, "БЛ=false; БИ=true");
ИначеЕсли ТипЗнч(Элемент.Значение) = Тип("Дата") Тогда
СтрокаJSON = СтрокаJSON + Формат(Элемент.Значение - Дата(1970,1,1,1,0,0), "ЧГ=0");
ИначеЕсли ТипЗнч(Элемент.Значение) = Тип("Массив") Тогда
СтрокаJSON = СтрокаJSON + СформироватьСтрокуJSON(Элемент.Значение);
ИначеЕсли ТипЗнч(Элемент.Значение) = Тип("Структура") Тогда
СтрокаJSON = СтрокаJSON + СформироватьСтрокуJSON(Элемент.Значение);
ИначеЕсли ТипЗнч(Элемент.Значение) = Тип("ТаблицаЗначений") Тогда
СтрокаJSON = СтрокаJSON + СформироватьСтрокуJSON(Элемент.Значение);
Иначе
СтрокаJSON = СтрокаJSON + """" + URLEncode(Строка(Элемент.Значение)) + """";
КонецЕсли;
СтрокаJSON = СтрокаJSON + ",";
КонецЦикла;
Если Прав(СтрокаJSON, 1) = "," Тогда
СтрокаJSON = Лев(СтрокаJSON, СтрДлина(СтрокаJSON)-1);
КонецЕсли;
Возврат СтрокаJSON + "}";
КонецФункции
&НаКлиенте
Функция СформироватьСтрокуJSON(Объект) Экспорт
СтрокаJSON = "";
Если ТипЗнч(Объект) = Тип("Массив") Тогда
СтрокаJSON = СформироватьСтрокуJSONИзМассива(Объект);
ИначеЕсли ТипЗнч(Объект) = Тип("Структура") Тогда
СтрокаJSON = СформироватьСтрокуJSONИзСтруктуры(Объект);
ИначеЕсли ТипЗнч(Объект) = Тип("ТаблицаЗначений") Тогда
СоставСтруктуры = "";
Для каждого Колонка Из Объект.Колонки Цикл
СоставСтруктуры = СоставСтруктуры + ?(ЗначениеЗаполнено(СоставСтруктуры), ",", "") + Колонка.Имя;
КонецЦикла;
МассивСтрок = Новый Массив;
Для каждого Строка Из Объект Цикл
СтруктураКолонок = Новый Структура(СоставСтруктуры);
ЗаполнитьЗначенияСвойств(СтруктураКолонок, Строка);
МассивСтрок.Добавить(СтруктураКолонок);
КонецЦикла;
СтрокаJSON = СформироватьСтрокуJSONИзМассива(МассивСтрок);
КонецЕсли;
Возврат СтрокаJSON;
КонецФункции
&НаКлиенте
Функция URLEncode(стр) Экспорт
Длина=СтрДлина(Стр);
Итог="";
Для Н=1 По Длина Цикл
Знак=Сред(Стр,Н,1);
Код=КодСимвола(Знак);
если ((Знак>="a")и(Знак<="z")) или
((Знак>="A")и(Знак<="Z")) или
((Знак>="0")и(Знак<="9")) тогда
Итог=Итог+Знак;
Иначе
Если (Код>=КодСимвола("А"))И(Код<=КодСимвола("п")) Тогда
Итог=Итог+"%"+ПреобразоватьвСистему(208,16)+"%"+ПреобразоватьвСистему(144+Код-КодСимвола("А"),16);
ИначеЕсли (Код>=КодСимвола("р"))И(Код<=КодСимвола("я")) Тогда
Итог=Итог+"%"+ПреобразоватьвСистему(209,16)+"%"+ПреобразоватьвСистему(128+Код-КодСимвола("р"),16);
ИначеЕсли (Знак="ё") Тогда
Итог=Итог+"%"+ПреобразоватьвСистему(209,16)+"%"+ПреобразоватьвСистему(145,16);
ИначеЕсли (Знак="Ё") Тогда
Итог=Итог+"%"+ПреобразоватьвСистему(208,16)+"%"+ПреобразоватьвСистему(129,16);
Иначе
Итог=Итог+"%"+ПреобразоватьвСистему(Код,16);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Итог;
КонецФункции
&НаКлиенте
Функция ПреобразоватьвСистему(Число10,система) Экспорт
Если система > 36 или система < 2 тогда
Сообщить("Выбранная система исчисления не поддерживается");
Возврат -1;
КонецЕсли;
СтрокаЗначений = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
СтрокаСистема = "";
Пока Число10 > 0 цикл
РезДеления = Число10/система;
ЧислоСистема = цел(РезДеления);
остатокОтДеления = Число10 - система*(ЧислоСистема);
СтрокаСистема = сред(СтрокаЗначений,остатокОтДеления+1,1)+ СтрокаСистема;
Число10 = ?(ЧислоСистема=0,0,РезДеления);
КонецЦикла;
Нечётное = стрДлина(СтрокаСистема) - цел(стрДлина(СтрокаСистема)/2)*2;
Если Нечётное тогда
СтрокаСистема = "0"+СтрокаСистема;
КонецЕсли;
Возврат СтрокаСистема;
КонецФункции
Показать
Сервер = "192.168.1.223";
Порт = 8081;
Ресурс = "/API/?data=";
UINПолучателя = "3";
Ключ = "PHbL-wNirbUVWJ2q93YO";
ТекстСообщения = "Тестовое сообщение от " + ТекущаяДата() + Символы.ВК + Символы.ПС + "строка 2";
Соответствие = Новый Соответствие;
Соответствие.Вставить("cmd", "0002");
Соответствие.Вставить("UserFrom", "0");
Соответствие.Вставить("UserTo", UINПолучателя);
Соответствие.Вставить("Msg", ТекстСообщения);
Соответствие.Вставить("APIStype", "mydata");
Соответствие.Вставить("ServerKey", Ключ);
//Для ПараметрыЗаписиJSON можно задавать различные настройки в конструкторе, в данном примере используется конструктор по умолчанию
ПараметрыJSON = Новый ПараметрыЗаписиJSON();
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку(ПараметрыJSON);
ЗаписьJSON.ЗаписатьНачалоОбъекта();
Для Каждого КлючЗначение Из Соответствие Цикл
ЗаписьJSON.ЗаписатьИмяСвойства(КлючЗначение.Ключ);
ЗаписьJSON.ЗаписатьЗначение(КлючЗначение.Значение);
КонецЦикла;
ЗаписьJSON.ЗаписатьКонецОбъекта();
СтрокаJSON = ЗаписьJSON.Закрыть();
Попытка
HTTP = Новый HTTPСоединение(Сервер,Порт,,,,30);
HTTPЗапрос = Новый HTTPЗапрос(Ресурс);
HTTPЗапрос.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded");
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Результат = HTTP.ОтправитьДляОбработки(HTTPЗапрос);
Если Результат.КодСостояния <> 200 Тогда
Сообщить("Ошибка при отправке запроса: " + Результат.КодСостояния);
КонецЕсли;
Исключение
Сообщить("Ошибка при отправке запроса: " + ОписаниеОшибки());
КонецПопытки;
Показать
Сервер = "192.168.1.223";
Порт = 8081;
Ресурс = "/API/?data=";
Ключ = "******";
UINПолучателя = "3";
ТекстСообщения = "Тестовое сообщение от " + ТекущаяДата() + Символы.ВК + Символы.ПС + "строка 2";
СтруктураДанных = Новый Структура;
СтруктураДанных.Вставить("cmd", "0002");
СтруктураДанных.Вставить("UserFrom", "0");
СтруктураДанных.Вставить("UserTo", UINПолучателя);
СтруктураДанных.Вставить("Msg", ТекстСообщения);
СтруктураДанных.Вставить("APIStype", "mydata");
СтруктураДанных.Вставить("ServerKey", Ключ);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, СтруктураДанных);
СтрокаJSON = ЗаписьJSON.Закрыть();
Попытка
HTTP = Новый HTTPСоединение(Сервер,Порт,,,,30);
HTTPЗапрос = Новый HTTPЗапрос(Ресурс);
HTTPЗапрос.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded");
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Результат = HTTP.ОтправитьДляОбработки(HTTPЗапрос);
Если Результат.КодСостояния <> 200 Тогда
Сообщить("Ошибка при отправке запроса: " + Результат.КодСостояния);
КонецЕсли;
Исключение
Сообщить("Ошибка при отправке запроса: " + ОписаниеОшибки());
КонецПопытки;
ПоказатьНекоторые символы сообщения перед отправкой нужно заменить, иначе оно не отправится:
РазделительСтрок = "\r\n";
ТекстСообщения = СтрЗаменить(ТекстСообщения, "\", "/"); //замена обратного слэша на прямой
ТекстСообщения = СтрЗаменить(ТекстСообщения, Символы.ПС, РазделительСтрок);
ТекстСообщения = СтрЗаменить(ТекстСообщения, """", "'"); //замена двойной кавычки на одинарную
Коллеги, удалите вышеприведенный код (сообщение 59), если добавляли.
Да и фиг бы с тем что реклама, но ребята, если я создаю чат, в который из 1С буду отправлять сообщения, я ведь хочу иметь возможность ещё и прочитать эти сообщения в программе 1С, а у вас только отправка в Intergation API описана.
У вас есть возможность через апи зарегистрировать пользователя, перенести пользователя из общего чата в группу. Но откуда возьмется группа нигде не сказано! И почему любой человек может переносить в группу людей, или там какие-то права настраиваются на группе или что там происходит? Почему это -то не описали во внешнем Апи, или к вашему мессенджеру надо ещё брать комплект администраторов этого мессенджера? так ведь они тоже денег стоят.
Половина документации просто пустые разделы, зачем-то втюхан глоссарий с кучей слов в алфавитном порядке и несколько из них даже описаны. Вероятно какие-то сложные термины про Rest,сервера, протоколы обмена? Нет, там указано объяснение слов "Админка", "Мессадж", "Онлайн", "Чат".
В документации на консоль кони пляшут(смотреть скрины)
Создается устойчивое впечатление, что функционал настолько печален, что потребовалось сделать как можно больше пустых и бесполезных разделов, чтобы покупатель запутался, заблудился и не увидел этой пустоты.
Возможно, во времена Фидонета это было актуально и весело, но вы вроде как продаете лицензии на ПО, написанное в течение 15 лет на паскале, за неплохие деньги в 2019ом году. Ну за 15 лет можно было сделать к ней нормальную документацию или там действительно описывать нечего?
Ок, как?
А что неконкретного и "ни о чем" в моем посте?
Я вроде достаточно конкретно указала, что судя по документации в программе очень ограниченный функционал, нет описания как добиться базовых вещей. Рекламируемое в этой публикации API не дает возможности полностью контролировать чаты из 1С - следовательно после того как один раз программу настроят к ней ещё надо будет штатного администратора чатов, который будет в этой программе постоянно сидеть и раздавать права, создавать группы - ещё вложения в программу, постоянные вложения.
Проект за 15 лет не развился в серьезное ПО, но денюжки сосет. Документация не информативная, много пустых разделов, зачем то развлекательные разделы включены, у части разделов не коррелируют название и наполнение.
Это совсем не выглядит как "Документация огромна и постоянно обновляется", скорее как любительская разработка бывшего фидошника или дипломная работа на заочном факультете.
Снова ваше личное мнение. .
Не надо ничего настраивать, все работает сразу "из коробки". Можете вообще не распихивать пользователей по группам прав, они автоматически назначаются. Напишите, что конкретно вы хотите сделать - я отвечу, предметно. Лучше на официальном форуме, конечно, но можно и здесь, если вам удобнее.
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 542472
Создание 14.08.16 00:00
Обновление 14.08.16 00:00
Просмотры 65345
Загрузки 41
Рейтинг
65
Комментарии 61
Код открыт Не указано
Рубрики Мессенджеры и боты
Кому
Системный администратор
,
Разработчик
Тип файла Компонента, плагин (dll, vbs,..)
Платформа 1С:Предприятие 8
Конфигурация Универсальные
Операционная система Windows
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)