Получение/отправка сообщений RabbitMQ через REST API

Публикация № 1731834 23.09.22

Интеграция и обмен данными - WEB-интеграция

RabbitMQ интеграция

Простой пример получения и отправки сообщений в брокер сообщений RabbitMQ через REST API из 1С без сторонних компонент и middleware.

Не буду углубляться в тему, что такое брокер сообщений RabbitMQ, для чего он нужен и как его устанавливать/настраивать, об этом уже много было рассказано, например, тут: ссылка

Но напрямую работать с API RabbitMQ из 1С не получится, придется использовать либо сторонние компоненты (ссылка), либо на каком-нибудь языке написать прослойку (ссылка). Однако RabbitMQ поддерживает работу с ним через REST API, методы которого поддерживаются платформой 1С без дополнительных средств. 

Вводная по работе через REST описана здесь: ссылка. Само описание API расположено здесь: ссылка

Для того чтобы REST API заработал, необходимо поставить плагин Management Plugin (ссылка), который дает нам веб-интерфейс по настройке RabbitMQ, без которого настраивать сервис довольно грустно, если только вы не привыкли делать всё подряд через консоль. Если без подробностей, то плагин ставится командой: 

rabbitmq-plugins enable rabbitmq_management

Сразу предупрежу (типа дисклеймер): судя по всему, REST API в RabbitMQ предназначен в основном для администрирования и мониторинга, функция отправки и приема сообщений в нем реализована в простейшем виде, возможно она вообще не предназначена для промышленного использования, поэтому практически не упоминается в официальной документации (в официальной документации REST API упоминается так: The API is intended to be used for basic observability tasks). 

В целом плюсы и минусы обращения к RabbitMQ через REST API вижу так:

  + Нет сторонних компонент и стороннего ПО (собственно потребность в REST API возникла не на пустом месте, а после словленных серьезных и нерешаемых проблем с внешней компонентой)

  + Простота использования

  - Ограниченный функционал - мы можем только отправлять по одному сообщению и получать массив сообщений, подтверждение принятия каждого сообщения (ack) нет. Можем только управлять режимом получения всего массива сообщений (впрочем можно получать сообщения по одному, выставляя при каждой итерации нужный режим).

  - Вероятно подходит только для ненагруженных обменов типа обмена кадровой информацией (хотя я отправил в цикле 2000 сообщений и все выгрузилось и загрузилось корректно).

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

  - Так как REST API тут нужен скорее для администрирования, то пользователь сервиса должен иметь административные права, что не очень хорошо с точки зрения безопасности.

Немного про режимы обработки сообщений - в REST API их 4: ack_requeue_true, reject_requeue_true, ack_requeue_false, reject_requeue_false. Соответственно ack это подтверждение приема сообщений, reject - отказ, requeue_true - сообщения остаются в очереди, requeue_false - удаляются из очереди. С ack и requeue все просто, а reject (в полном API есть схожий метод nack, отличающийся от reject некоторыми нюансами) работает следующим образом: к нашей точке обмена можно привязать (bind) дополнительную очередь с признаком "Dead letter exchange" - в эту очередь будут попадать сообщения которым выставили отказ (и некоторые другие, подробнее ссылка):

 

 

В принципе основной режим приёма в простом варианте обмена это ack_requeue_false.

 

Собственно код по отправке сообщения:

Фабрика_XDTO = ПолучитьФабрикуXDTO();
        
ОбъектСообщение = Фабрика_XDTO.Создать(Фабрика_XDTO.Тип("http://rest_rmq", "message_out"));
        
ОбъектСообщение.routing_key           = ПараметрыПодключения.КлючМаршрутизации;
ОбъектСообщение.payload_encoding      = "string"; // вариант "base64"
ОбъектСообщение.properties            = Фабрика_XDTO.Создать(Фабрика_XDTO.Тип("http://rest_rmq", "message_properties"));

ОбъектСообщение.payload               = ТекстСообщения;
        
ТекстJSON = ОбъектXDTO_ПолучитьJSON(ОбъектСообщение, Фабрика_XDTO);

// %2f это vhost по умолчанию "/"
АдресРесурса = СтрШаблон("/api/exchanges/%1/%2/publish", "%2f", ПараметрыПодключения.ТочкаОбмена);
        
Ответ = ОтправитьHTTPЗапрос(ПараметрыПодключения, АдресРесурса, "POST", ТекстJSON);

Для чего нужен параметр "properties" сообщения я не понял - в него можно поместить произвольную структуру, но в получаемое сообщение она не приходит, хотя было бы очень удобно там размещать метаданные сообщения.

 

Получение сообщений:

Сообщения = Новый Массив;

Фабрика_XDTO = ПолучитьФабрикуXDTO();
    
Сообщение = Фабрика_XDTO.Создать(Фабрика_XDTO.Тип("http://rest_rmq", "messages_request"));
        
Сообщение.count = 1000; //количество получаемых сообщений
Сообщение.ackmode = ПараметрыПодключения.РежимПолучения; // варианты "ack_requeue_true", "reject_requeue_true", "ack_requeue_false", "reject_requeue_false"
Сообщение.encoding = "auto"; // вариант "base64"
        
ТекстJSON = ОбъектXDTO_ПолучитьJSON(Сообщение, Фабрика_XDTO);

// %2f это vhost по умолчанию "/"
АдресРесурса = СтрШаблон("/api/queues/%1/%2/get", "%2f", ПараметрыПодключения.ОчередьОбмена);
        
Ответ = ОтправитьHTTPЗапрос(ПараметрыПодключения, АдресРесурса, "POST", ТекстJSON);
        
Если Ответ.КодСостояния <> 200 Тогда
    Сообщить("Ошибка:" + Ответ.ПолучитьТелоКакСтроку());
    Возврат;
КонецЕсли;

ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();

ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(ТелоОтвета);
        
ОбъектСообщения = Фабрика_XDTO.ПрочитатьJSON(ЧтениеJSON, Фабрика_XDTO.Тип("http://rest_rmq", "collection_messages_in"));
        
Для каждого Сообщение Из ОбъектСообщения.message Цикл
    Сообщения.Добавить(Сообщение.payload);
КонецЦикла;

Служебные процедуры:

&НаСервереБезКонтекста
Функция ОтправитьHTTPЗапрос(ПараметрыПодключения, АдресРесурса, Метод = "POST", ТекстJSON)

    Заголовки = Новый Соответствие;
    Заголовки.Вставить("content-type", "application/json");
    
    HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, Заголовки);
    
    HTTPЗапрос.УстановитьТелоИзСтроки(ТекстJSON);
    
    АдресСервера    = ПараметрыПодключения.АдресСервера;
    Логин            = ПараметрыПодключения.Логин;
    Пароль            = ПараметрыПодключения.Пароль;
    
    HTTPСоединение = Новый HTTPСоединение(АдресСервера, 15672, Логин, Пароль,, 60);
    
    Ответ = HTTPСоединение.ВызватьHTTPМетод(Метод, HTTPЗапрос);
    
    Возврат Ответ;
    
КонецФункции

&НаСервере
Функция ПолучитьФабрикуXDTO()

    // схема в макете обработки
    ТекстXSD = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Схема").ПолучитьТекст();
    
    // в случае встроенного в конфигурацию пакета XDTO необходимо использовать встроенную фабрику:
    // Возврат ФабрикаXDTO;
    
    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.УстановитьСтроку(ТекстXSD);

    ПостроительDOM = Новый ПостроительDOM;
    ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML);
    
    ПостроительСхем = Новый ПостроительСхемXML;
    СхемаXML = ПостроительСхем.СоздатьСхемуXML(ДокументDOM.ЭлементДокумента);

    НаборСхемXML = Новый НаборСхемXML;
    НаборСхемXML.Добавить(СхемаXML);
    
    Фабрика_XDTO = Новый ФабрикаXDTO(НаборСхемXML);    
    
    Возврат Фабрика_XDTO;

КонецФункции

&НаСервереБезКонтекста
Функция ОбъектXDTO_ПолучитьJSON(ОбъектXDTO, Фабрика_XDTO)
    
    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.УстановитьСтроку();
    
    Фабрика_XDTO.ЗаписатьJSON(ЗаписьJSON, ОбъектXDTO, НазначениеТипаXML.Неявное); 
    
    ТекстJSON = ЗаписьJSON.Закрыть();
    
    // платформа помещает наш объект в свою структуру с ключом #value,
    // можем отдельно получить значение по ключу и еще раз сериализовать,
    // либо просто вырезать открывающий и закрывающий тег
    
    СтрокаТега1С = """#value"": {";
    
    ПозицияНачалоТега1С = СтрНайти(ТекстJSON, СтрокаТега1С);
    ПозицияКонецТега1С  = ПозицияНачалоТега1С + СтрДлина(СтрокаТега1С);
    
    ТекстJSON = Лев(ТекстJSON, ПозицияНачалоТега1С - 2) + Сред(ТекстJSON, ПозицияКонецТега1С + 1, СтрДлина(ТекстJSON) - ПозицияКонецТега1С - 1);
    
    Возврат ТекстJSON;

КонецФункции

Схема сообщений:

<xs:schema xmlns:tns="http://rest_rmq" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://rest_rmq" attributeFormDefault="unqualified" elementFormDefault="qualified">
	<xs:simpleType name="ackmode_type">
		<xs:restriction base="xs:string">
			<xs:enumeration value="ack_requeue_true"/>
			<xs:enumeration value="reject_requeue_true"/>
			<xs:enumeration value="ack_requeue_false"/>
			<xs:enumeration value="reject_requeue_false"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="collection_messages_in">
		<xs:sequence>
			<xs:element name="message" type="tns:message_in" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:simpleType name="encoding_type">
		<xs:restriction base="xs:string">
			<xs:enumeration value="auto"/>
			<xs:enumeration value="base64"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="message_in">
		<xs:sequence>
			<xs:element name="payload_bytes" type="xs:integer"/>
			<xs:element name="redelivered" type="xs:boolean"/>
			<xs:element name="exchange" type="xs:string"/>
			<xs:element name="routing_key" type="xs:string"/>
			<xs:element name="message_count" type="xs:integer"/>
			<xs:element name="properties" type="tns:message_properties"/>
			<xs:element name="payload" type="xs:string"/>
			<xs:element name="payload_encoding" type="tns:payload_encoding_type"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="message_out">
		<xs:sequence>
			<xs:element name="properties" type="tns:message_properties"/>
			<xs:element name="routing_key" type="xs:string" nillable="true"/>
			<xs:element name="payload" type="xs:string"/>
			<xs:element name="payload_encoding" type="tns:payload_encoding_type"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="message_properties"/>
	<xs:complexType name="messages_request">
		<xs:sequence>
			<xs:element name="count" type="xs:integer"/>
			<xs:element name="ackmode" type="tns:ackmode_type"/>
			<xs:element name="encoding" type="tns:encoding_type"/>
			<xs:element name="truncate" type="xs:integer" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:simpleType name="payload_encoding_type">
		<xs:restriction base="xs:string">
			<xs:enumeration value="string"/>
			<xs:enumeration value="base64"/>
		</xs:restriction>
	</xs:simpleType>
</xs:schema>

Схему можно поместить в отдельный файл xsd, в текстовый макет или можно импортировать в конфигурацию в виде XDTO пакета и использовать встроенный в платформу объект ФабрикаXDTO вместо своей фабрики.

 

И в конце, чтобы не создавать отдельную публикацию, поделюсь удачным, как мне кажется, опытом настройки двухстороннего обмена сообщениями между несколькими базами. Этот вопрос почему-то особо не поднимается и у каждого, кто настраивает RabbitMQ в первый раз возникает вопрос: а сколько точек обмена и очередей создавать и как маршрутизировать это. И с первого раза обычно получается огород из очередей и точек, хаотично связанных, так что непосвященному вообще тяжело разобраться что для чего и куда идут сообщения.
Рассматривается свой, не типовой план обмена, вероятно в больших, серьезных обменах стоит рассмотреть стандартные планы обмена типа СинхронизацияЧерезУниверсальныйФормат, но это тема отдельного разговора в каких случаях это оправдано.

Мой вариант:

Предположим у нас есть три базы: ЗУП, БП и ДО, кадровая информация из ЗУП должна попасть в БУ и ДО, оттуда должны придти подтверждения (тикеты) о том, что сообщения приняты успешно. Мы присваиваем базам идентификаторы: hrm, acc, do и создаем соответствующие узлы в базах (в БП можно не создавать узел ДО, соответственно в ДО не создавать БП), присваиваем узлам соответствующие идентификаторы (например в коде узла), предопределенному узлу присваиваем идентификатор этой базы.

В RabbitMQ мы настраиваем три точки обмена (exchange) с идентификаторами баз и три очереди (queue) с такими же идентификаторами. Далее создаются привязки каждой очереди с корреспондирующими точками обмена и указывается ключ маршрутизации (routing key), совпадающий с именем точки обмена. То есть в нашем случае создаются привязки do -> hrm (key: hrm), do -> acc (key: acc), hrm -> do (key: do), acc -> do (key: do).

Пример для очереди hrm:

 

 

Сообщение из ЗУП в ДО отправляем в точку обмена с именем, соответствующему предопределенному узлу базы ЗУП (exchange = hrm) и ключом маршрутизации, соответствующему имени узла, в который отправляем сообщение (routing key = do). Соответственно в ДО мы получаем сообщение из очереди обмена с именем, соответствующему предопределенному узлу базы ДО (queue = do). Откуда пришло сообщение мы узнаем из свойства сообщения exchange, по этому идентификатору мы находим узел базы, откуда сообщение пришло и применяем соответствующие правила и настройки.

То есть, допустим сообщение с кадровой информацией из ЗУП ушло в БП и ДО, соответственно оттуда пришли подтверждения о получении, они попадают в очередь hrm, в одну кучу. Мы получаем массив сообщений и у каждого сообщения считываем свойство exchange, где будут указаны соответственно do и acc - то есть каждому сообщению мы сопоставляем узел, считываем настройки и правила обработки сообщений и обрабатываем.

 

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

Обработка разрабатывалась и тестировалась на платформе 8.3.21, но должна работать и на более ранних версиях платформы.

Конфигурация не важна, методы БСП не использовались.

Скачать файлы

Наименование Файл Версия Размер
Получение/отправка сообщений RabbitMQ через REST API:

.epf 9,89Kb
4
.epf 1.0 9,89Kb 4 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. dsdred 2181 24.09.22 11:09 Сейчас в теме
Если Метод = "POST" Тогда

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

ИначеЕсли Метод = "PUT" Тогда

Ответ = HTTPСоединение.Записать(HTTPЗапрос);

ИначеЕсли Метод = "GET" Тогда

Ответ = HTTPСоединение.Получить(HTTPЗапрос);

ИначеЕсли Метод = "DELETE" Тогда

Ответ = HTTPСоединение.Удалить(HTTPЗапрос);

КонецЕсли;
Показать


Всё это можно реализовать одной строкой.

Ответ = HTTPСоединение.ВызватьHTTPМетод(Метод, HTTPЗапрос) ;

И все.
portwein; NikeeNik; whitedeath; +3 Ответить
2. NikeeNik 55 24.09.22 17:54 Сейчас в теме
(1) Не помню точно почему так, давно эта процедура была написана, кажется был там какой-то нюанс, поэтому так и разнесены методы. Но да - перепишу пожалуй.
3. kolya_tlt 77 25.09.22 23:22 Сейчас в теме
использовали более года rest интерфейса. примерно из 1млн сообщений теряем 1. купили компоненту от пули и стали использовать ack, проблемы кончились
5. NikeeNik 55 26.09.22 07:28 Сейчас в теме
(3) Компонента от пули таки стоит денег (деньги не проблема, проблема это пропихнуть в закупку) и что-то они вообще пропали с горизонта. Я текущую реализацию тоже считаю временной, следующую версию интеграции в планах запилить на 1с:шине.
Насчёт пропадания сообщений, я у себя реализовал через квитирование - не панацея конечно, но позволит хотя бы понять что не дошло.
7. NikeeNik 55 26.09.22 11:15 Сейчас в теме
(6) Это не компонента от пули, а их конкурент от БиТа. Ну и у меня есть подозрения, что они положили прибор на развитие и поддержку своего продукта - последний релиз очень сырой.
8. gybson 26.09.22 12:09 Сейчас в теме
(7) Но бесплатный и открытый.

Вообще я бы еще посмотрел на rest-обертки для кролика.
9. NikeeNik 55 26.09.22 13:46 Сейчас в теме
(8) Если благодаря открытости вы сможете дописать компоненту так, чтобы она перестала ронять rphost, то снимаю перед вами шляпу. Я бы тоже глянул, но кмк их не густо и больше пишут для себя, не выкладывая в публичный доступ.
10. JohnyDeath 300 27.09.22 09:23 Сейчас в теме
Еще из бесплатных есть компонента от СофтБаланса https://sbpg.atlassian.net/wiki/spaces/1C2RMQ/overview
NikeeNik; +1 Ответить
11. NikeeNik 55 27.09.22 09:50 Сейчас в теме
Оставьте свое сообщение

См. также

Заполнение контрагентов по ИНН для УТ 10.3 Промо

Обработка справочников WEB-интеграция Платформа 1С v8.3 1С:Управление торговлей 10 Россия Абонемент ($m)

Заполнение контрагентов по ИНН (1С: Управление торговлей 10.3).

6 стартмани

17.05.2022    2606    28    kostyan7    16    

#KafkaЭтоПросто: Kafka Adapter 1С (Confluent) - отправляем сообщения

Инструментарий разработчика Внешние источники данных WEB-интеграция Платформа 1С v8.3 Абонемент ($m)

Сегодня поднимем в docker kafka с confluent'om, а в 1С, в EDT загрузим проект из репозитория, создадим обработку, в которой несколькими строчками отправим сообщение в kafka через rest proxy и в confluent control center посмотрим на него. Если коротко, то: как отправить сообщение в Kafka несколькими строчками кода без компонент, регистраций и смс.

5 стартмани

24.07.2022    3718    6    huxuxuya    24    

Распознавание текста из изображений и PDF с помощью нейросетей Yandex Vision и 1С

Обработка документов WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Если вам нужно с помощью компьютерного зрения от Yandex быстро распознавать текст из документов и изображений, эта статья для вас!

5 стартмани

13.07.2022    3167    2    kiv1c    4    

Api идеи для начинающих

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Данная обработка подойдет тем, кто только начинает знакомиться с механизмами api в 1С. В обработке представлены взаимодействия с 12 простыми сайтами на примерах. Решения не затрагивают полной документации, а носят лишь ознакомительный характер. Делал на платформе 8.3.20.

1 стартмани

16.06.2022    4654    18    user676027_svikator    5    

Конвертация любых адресов, написанных в свободной форме, к ФИАС Промо

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Допустим у нас есть база с адресами клиентов, и написаны они могут быть как душе угодно. С опечатками, без индексов, без разделителей, в совершенно любом формате. Вот было бы здорово иметь функцию, которая одним нажатием кнопки преобразует любую белиберду к строгому представлению адреса по ФИАС? Восстановит индекс, исправит опечатки и вернёт на 100% валидный адрес. Для всех, кто мечтательно сказал "ДА!", выкладываю данную обработку.

2 стартмани

30.06.2020    13853    121    XilDen    18    

Делаем табло в обозревателе из 1Ски с нуля за полчаса. Без бутстрапов, реактов и ангуляров. Жизнетрюки от kuzkov.info

Разработка внешних компонент WEB-интеграция Платформа 1С v8.3 Абонемент ($m)

На Инфостарте много разработок, которые предназначены для отображения в обозревателе данных на связи из 1С. С разными способами подключения, на разных технологиях. Есть платные, есть бесплатные. В данной публикации я хочу показать, как можно сделать сопряжение 1С обозреватель своими 1Сными силами с базовыми навыками верстки с нуля за полчаса и бесплатно.

1 стартмани

02.05.2022    4948    120    Steelvan    0    

Обмен данными с Web-сервисами

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Обработка предназначена для быстрой настройки обмена данными с Web-сервисами из пользовательского интерфейса.

10 стартмани

29.04.2022    3006    20    ns_bulatov    4    

Модуль обмена с QIWI Промо

Банковские операции WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Абонемент ($m)

Компании, которые используют систему моментальных платежей QIWI, ценят ее за удобство по скорости выплат и для платежей по запросу. Но такие переводы сложны для учета, а при большом объеме проводимых операций отнимают много времени и превращаются в дополнительную головную боль. Мы сотрудничали с компаниями, которые отправляют большое количество платеже на QIWI, и часто слышали боль бухгалтеров о том, как им сложно работать с такими переводами. Поэтому мы автоматизировали выплаты через QIWI в 1С и создали модуль интеграции 1С c API QIWI Wallet и QIWI TopUp.

5 стартмани

25.05.2020    12460    1    Neti    10    

Сервис push-уведомлений для 1С (Push Notification Service For 1C - PNS4OneS)

WEB-интеграция Платформа 1С v8.3 Абонемент ($m)

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

1 стартмани

02.02.2022    7452    28    ltfriend    9    

Создание интерактивных обучающих курсов с помощью Vanessa Interactive

Инструментарий разработчика WEB-интеграция Идеи и тренды в разработке Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Приветствую Вас, коллеги. Сегодня Вам предлагается рассмотреть технологию создания интерактивных обучающих курсов, системы Onboarding, интерактивной справки для любых конфигураций разработанных на базе платформы 1С при работе в web клиенте. Прошу посмотреть ролик, кому неинтересно, как это работает, можно дальше не читать. Тестировалось на 1С:Предприятие 8.3 (8.3.20.1646).

1 стартмани

02.02.2022    4611    0    Viktor_Ermakov    2    

Создание простых сайтов на основе http сервисов - tips and tricks

WEB-интеграция Платформа 1С v8.3 Абонемент ($m)

Универсальный метод, html шаблоны, страницы с авторизацией и без, многоязычность, страница авторизации, etc.

1 стартмани

22.01.2022    6139    10    vl-sher1    29    

BIM: взаимодействие с платформой Autodesk Forge Промо

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Строительство Абонемент ($m)

Предлагаемый пример демонстрирует широкие возможности для взаимодействия «1С:Предприятие» с платформой Autodesk Forge и позволяет вам получить базовые представления о применения технологий информационного моделирования в строительстве. Поддерживаются все версии платформы от 8.3.12 и выше до 8.3.18.

1 стартмани

25.11.2020    67668    16    kandr    3    

Расширение конфигурации для Web-доступа к 1С (1С в роли back-end)

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Для реализации того, чтобы 1С формировала и отдавала страницу, которую можно было бы открыть через браузер было написано расширение, которое позволяет публиковать из 1С произвольные ресурсы, будь то API, сайт или изображения / прочие файлы.

1 стартмани

01.04.2021    14357    18    SaschaG    4    

Работа с картами в 1С на примере бесплатной библиотеки Leaflet

WEB-интеграция Работа с интерфейсом Языки и среды Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Разработка функционала отображения и выбора пунктов доставки на карте прямо в 1С с помощью бесплатной библиотеки Leaflet. Тестирование производилось на платформе 8.3.15.1534 на тонком клиенте.

1 стартмани

31.03.2021    18522    54    Parsec1C    19    

Отправка Push-уведомлений через сервис Firebase Cloud Messaging по протоколу FCM HTTP v1 API

WEB-интеграция Платформа 1С v8.3 Абонемент ($m)

При разработке нативного приложения Android для ТСД, в котором присутствует функционал отображения задач кладовщикам, созданных в 1С, возникла необходимость отправлять push-уведомления о появлении новых задач. Для отправки таких уведомлений было решено использовать сервис Firebase Cloud Messaging (FCM). Так как для 1С, в отличии от других языков программирования, не существует готовых библиотек, что вполне логично, то очевидным способом отправки является использование протокола HTTP. Однако, существующая информация в интернете в части 1С содержит только сведений об отправке push-уведомлений через этот сервис с использованием устаревшего протокола HTTP Firebase Cloud Messaging. Сам Google не рекомендует использовать данный протокол и настоятельно склоняет к переходу на новый протокол FCM HTTP v1 API. Что ж, пришлось разбираться самостоятельно.

1 стартмани

24.03.2021    13738    22    ltfriend    15    

Односторонний файловый обмен с сайтом по ftp (1C 2 Web) Промо

Файловые протоколы обмена (TXT, XML, DBF), FTP WEB-интеграция Платформа 1С v8.3 1С:Розница 1С:Управление нашей фирмой 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

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

3 стартмани

09.12.2019    17959    22    LamerSoft    0    

Генератор маршрута по "документам отгрузки" в Google.Maps

Оптовая торговля Розничная торговля WEB-интеграция Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 11 Россия Управленческий учет Абонемент ($m)

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

7 стартмани

08.11.2020    15248    17    quazare    21    

Продажи со склада поставщика WildBerries. Взаимодействие с АПИ из 1С

WEB-интеграция Розничная торговля Платформа 1С v8.3 1С:Управление торговлей 11 Управленческий учет Абонемент ($m)

Взялся я тут делать интеграцию с АПИ нового проекта Диких Ягод - Продажи со склада поставщика (ПССП). Это было нелегко. Никто же не читает инструкцию (уже аж 7 версии!), а зря! Для начала сделал получение списка товаров и обмен остатками.

5 стартмани

06.11.2020    42280    205    kiv1c    141    

1С + react native

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Пример реализации клиента для 1С на react native.

1 стартмани

09.10.2020    14439    9    van_za    9    

"Учет штрафов ГИБДД" с возможной загрузкой из открытых источников в интернет Расширение конфигурации 1С: Предприятие 8.3 Промо

Обработка документов WEB-интеграция Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Бухгалтерский учет Управленческий учет Абонемент ($m)

Расширение конфигурации Бухгалтерия предприятия, редакция 3.0 (при минимальных изменениях любой типовой конфигурации), позволяющее вести историю данных по штрафам ГИБДД для справочника транспортных средств компании. Бонусом поставляется внешняя обработка, способная загружать эти данные из открытых источников в интернет.

4 стартмани

30.12.2019    26612    38    capitan    26    

Учимся создавать http сервис (часть третья). Передача нескольких параметров в http сервис

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Пошаговое руководство по созданию http сервиса (часть третья). Передача нескольких параметров в http сервис, a также формирование сложных JSON строк.

1 стартмани

02.10.2020    25754    7    hpi    18    

Взаимодействие 1С со сторонними продуктами посредством REST и Golang (middleware). Часть 1 - RabbitMQ

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Часто 1С не может взаимодействовать со сторонними продуктами, например для шины предприятия RabbitMQ создают внешние компоненты. В статье предлагается новомодный подход REST API реализованный на приложении прокладке Middleware, язык тоже трендовый Golang. В статье немного познакомлю Вас с языком Golang, опишу интеграцию на стороне 1С (8.3.16.1502). Если статья зайдет, напишу как выгружать журнал регистрации по этой схеме в ElasticSearch

1 стартмани

31.08.2020    15242    14    dmitry-irk38    15    

Обмен через API с Честный знак (Система маркировки товаров)

Оптовая торговля WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Оптовая торговля, дистрибуция, логистика Россия Абонемент ($m)

Рассмотрен пример обмена через API с Честным знаком с использованием электронной подписи.

1 стартмани

10.08.2020    35047    119    vasilievil    26    

Внешняя компонента для работы по Web-socket протоколу x32 x64 Промо

Разработка внешних компонент WEB-интеграция Платформа 1С v8.3 Абонемент ($m)

Кто когда-нибудь сталкивался с обменом данными по Web-Socket (wss) протоколу из 1С, тому известно, что в платформе отсутствуют данные механизмы (не путать с HTTP запросами и WebServices). Предлагается использовать внешнюю компоненту, написанную по технологии NativeAPI, для подключения и обмена с серверами из 1С-Предприятия, работающими по протоколу Web-Socket.

2 стартмани

30.03.2018    44404    105    Ditron    120    

HTTP сервисы по OpenAPI спецификациям

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Начинаем путь разработки HTTP сервисов с создания спецификаций OpenAPI. Автодокументация сервисов формата Swagger UI без зависимостей. Настройка сервисов в режиме предприятия.

1 стартмани

29.06.2020    22056    25    shmalevoz    22    

Конструктор HTTP-соединений в 1С (обычные и управляемые формы)

WEB-интеграция Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Иногда возникают мысли о том, чтобы прикрутить сервисы, связанные с HTTP-соединениями, в 1С. Необходимо писать обработку и анализировать результат.

1 стартмани

02.06.2020    12146    38    Denr83    0    

oData – HTTP-сервис для ленивых.

WEB-интеграция Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Абонемент ($m)

oData одним из последних появился в инструментах интеграции поддерживаемых платформой 1С. В данной статье хотел бы показать пример его использования. О преимуществах и недостатках oData предлагаю поделиться в комментариях исходя из реального опыта использования. Цель публикации. Дать разработчикам простой инструментарий обмена между идентичными конфигурациями.

1 стартмани

10.05.2020    16347    30    Forest83    2    

Работа с релизами 1С и договорами ИТС Промо

WEB-интеграция БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Работа с релизами 1С и партнерским кабинетом.

2 стартмани

15.08.2019    26314    68    RocKeR_13    39    

DaJet QL - расширяемый язык запросов

WEB-интеграция Платформа 1С v8.3 Абонемент ($m)

DaJet QL поддерживает практический полный синтаксис SQL Server 2005-2016. Кроме этого это расширяемый язык запросов. Обращение к объектам СУБД выполняется в терминах метаданных 1С. Доступ к возможностям этого языка запросов реализован в виде web api сервиса. Результаты запросов возвращаются в виде JSON.

1 стартмани

20.04.2020    17412    12    zhichkin    19    

Обмен данными между OZON и 1С

Оптовая торговля WEB-интеграция Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 11 Управленческий учет Абонемент ($m)

Данная подсистема позволяет загружать отправления «с моего склада» из OZON (в статусе «Ожидают сборки») в 1с Управление торговлей 11 по API. Так же есть возможность выгружать статусы отправлений «awaiting_deliver, т.е. Ожидает отгрузки» и «cancelled, т.е. Отменен» из 1с в OZON по API.

10 стартмани

09.04.2020    42783    245    vex2865    169    

Пример работы с Trello из 1С

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Россия Управленческий учет Абонемент ($m)

Небольшая конфигурация содержит примеры обмена с онлайн-сервисом Trello.

1 стартмани

15.02.2020    23259    61    terrorion    18    

Проверка VAT номеров Промо

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Обработка для вызова сервиса проверка VAT номера.

1 стартмани

26.11.2018    23436    3    wtlz    1    

Google drive - менеджер файлов

WEB-интеграция Внешние источники данных Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Синхронизация с гугл диском легко и просто!

10 стартмани

05.12.2019    30371    47    zykov_vitaliy    28    

Автозаполнение адреса по КЛАДР в УПП при выгрузке контрагента с портала компании (API dadata)

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Заведение, согласование контрагентов организовано на портале компании. Далее по web-сервису контрагенты выгружаются в УПП (юр.адрес и факт.адрес выгружаются строкой). Задача автоматизировать заполнение адреса в УПП по КЛАДР.

1 стартмани

03.12.2019    14047    3    John_d    10    

Конфигурация Парсер Сайтов Объявлений (Авито avito.ru) Промо

WEB-интеграция Платформа 1С v8.3 Россия Абонемент ($m)

Вкратце: Например, вы можете автоматически несколько раз в день (любое заданное время) загружать свежие объявления в категории Телефоны (любой категории или произвольный запрос) и отправлять сообщения тем, которые содержат слово «iphone 6S» и цена ниже 50 000 руб. Затем отправлять себе на почту отчеты о загруженных объявлениях и результатах рассылки. А можете загружать данные в основную учетную систему.

21.03.2016    43466    0    capitan    21    

Работа с Яндекс-картами в 1С (вывод меток, прокладка маршрута, отображение балуна, вывод меток в кластеры) (обычное и управляемое приложение)

WEB-интеграция Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Работа с Яндекс-картами в 1С (управляемое приложение). Обработка показывает, как можно найти адреса на карте Яндекс, проложить маршрут.

2 стартмани

20.11.2019    28133    172    Denr83    0    

Яндекс сервисы [Расширение]

Универсальные обработки WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Расширение для работы с Яндекс-сервисами (предиктор,переводчик,проверка орфографии)

1 стартмани

24.10.2019    19557    12    noprogrammer    12    

Работа с картой. Кадастровый учет (Росреестр). Тематические карты Промо

WEB-интеграция Рабочее место Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Внешняя обработка для работы с картами в 1С. Получения изображения с публичной кадастровой карты России, построения тематических карт

10 стартмани

31.08.2017    30825    29    vipchep    5    

Выгрузка номенклатуры в социальную сеть Вконтакте

WEB-интеграция Оптовая торговля Розничная торговля Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Обработка для быстрой и легкой выгрузки товаров Вконтакт. Так просто еще не было)))

2 стартмани

14.08.2019    29325    70    kaliuzhnyi    48    

Подключение к сайту и отправка или получение данных по API (POST, GET...) (с описанием кода)

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Простая обработка по отправке или получение данных с любого сервера главное знать ресурс (выполняемую функцию) и тело запроса.

1 стартмани

12.08.2019    38285    77    MaxPowerr    7    

Конфигурация для обмена данными (интеграционная шина)

Внешние источники данных WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Система позволяет организовать обмен данными, как с базами 1С, так и любыми другими приложениями. Система представляет собой отдельную конфигурацию. Система позволяет организовать гибкие возможности по настройке обмена. В качестве брокера сообщений, для передачи данных, используется отдельная самостоятельная конфигурация на 1С. Комплект поставки содержит файл расширения для "клиентской" части шины, данное расширение позволяет без снятия "ключа" организовать гибкий механизм обмена данными.

4 стартмани

08.07.2019    26803    43    miha-28    17    

Пример использования REST API Яндекс Диска Промо

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Пример использования REST API Яндекс Диска: чтение диска, добавление каталога, загрузка файла, скачивание файлов или каталогов, удаление файлов или каталогов.

1 стартмани

26.06.2018    41288    73    MKFreeUser    16    

Работа с публикациями "Инфостарт" Промо

Инфостарт WEB-интеграция Платформа 1С v8.3 Управленческий учет Абонемент ($m)

Работа с рублевыми публикациями на сайте "Инфостарт": ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.

1 стартмани

13.09.2018    33386    17    RocKeR_13    16