Внешняя компонента как REST-API-компонента...

Публикация № 1543746 01.11.21

Разработка - Разработка внешних компонент

REST. HTTP REST-API сервисы C++

...и совсем немного кода на С[++]...

Всем привет!

 

ВВЕДЕНИЕ

Я в последнее время делал несколько проектов на Python, суть которых сводилась к внешнему сервису, работающему как очередь оборудования и механизм контроля. Но Python - это хоть и очень просто, но не так быстро, поэтому время от времени я пытался найти, как сделать какой-нить сервис на С[++] (плюсы в скобках как бы намекают, что от плюсов там по большому счету только int перед main). В итоге нашел, что позволило мне все свои механизмы, написанные на Python, достаточно легко и непринужденно переработать в механизмы, работающие на С++.

 

БИБЛИОТЕКА RESTBED

Периодически набирая в гуглах что-то типа "HTTP-сервер на С++", я натыкался на разные решения с костылями и палками, но в последний раз наткнулся на отличную (на мой скромный взгляд) библиотеку, которая достаточно просто позволяет организовать HTTP-сервис, и при этом (и это было важно) существует и отлично работает даже на DEBIAN для Rispberry PI (ниже приведу сравнительный тест).

Сама по себе библиотека очень проста и в сути своей оперирует всего несколькими сущностями: настройкой соединения и ссылкой на сервисы. У библиотеки достаточно большой функционал (включая авторизацию, SSL/HTTPS, многопоточность и все то, что еще может нам потребоваться).

 

ПРИМЕР ПРОСТОГО СЕРВИСА

Давайте замутим простой сервис, добавляющий в некий массив значения и возвращающий нам, есть ли такое значение в этом массиве.

Для начала установим соответствующую библиотеку (для Linux, как это сделать в винде - я без понятия, если, конечно, что не WSL[2]).

sudo apt install librestbed-dev librestbed0

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

Дальше при сборке нам достаточно будет указать опцию "-lrestbed" и все.

Напишем простой код:

 

ЗАГОЛОВКИ

#include <stdlib.h>
#include <map>
#include <string>
#include <memory>
#include <cstdlib>
#include <restbed>

1. Стандартная библиотека - нужна нам для преобразования параметра командной строки в число функцией atoi (для указания номера порта, на котором весить сервис).

2. Map - "ассоциативный массив", который всегда упорядочен по ключу. Скорость доступа к элементуO( Log2N ).

3. Строки - куда без них...

4. Умные указатели - в нашем случае это shared_ptr, который... Сами где-нить прочитайте, а то это может быть надолго. В нашем случае понимать всю суть этого не нужно.

5. Честно говоря, сам с этим не разбирался. Но нам пока это тоже не нужно.

6. Ну и сама наша библиотека для организации HTTP-сервиса.

И еще немного кода...

using namespace std;
using namespace restbed;

map <string, string> srvArray;

Собственно, это у нас определение пространств имен (чтобы не писать перед каждой функцией и типом std::) и нашего "ассоциативного массива".

 

"ХЭНДЛЕРЫ"

void get_set_method_handler( const shared_ptr< Session > ss )
{
    const auto req = ss->get_request();
    auto data = req->get_path_parameter( "data" );
    srvArray[ data ] = req->get_path_parameter( "value" );
    ss->close( OK, "OK", { { "Content-Length", "2" } } );
}

void get_get_method_handler( const shared_ptr< Session > ss )
{
    const auto req = ss->get_request();
    auto data = req->get_path_parameter( "data" );
    if (!srvArray[ data ].empty()) {
        const string ret = srvArray[ data ];
        //cout << ret << endl;
        ss->close( OK, ret, { { "Content-Length", ::to_string( ret.size() ) } } );
    } else {
        //cout << "EMPTY" << endl;
        ss->close( OK, "EMPTY", { { "Content-Length", "5" } } );
    }
}

Здесь у нас два обработчика событий HTTP-сервиса, которые мы чуть ниже зарегистрируем.

Первый обработчик устанавливает ключ и значение по приехавшим параметрам. Второй обработчик возвращает установленный ранее параметр или строку "EMPTY", если такое значение мы еще не устанавливали.

Алгоритм тут достаточно прост:

1. Получаем из сессии (аргумент функции) текущий запрос (в принципе, все как в 1С).

2. Получаем из запроса именованный параметр(ы) (задается в шаблоне, увидите ниже).

3. Устанавливаем в ключ значение или извлекаем значение по ключу.

4. Возвращаем "ОК, значение или "ENPTY" (если значение с таким ключом еще не было установлено).

Ну и давайте перейдем к самому интересному...

 

ФУНКЦИЯ MAIN

int main ( const int carg, const char** arg)
{
    int port = 8080;
    if ( carg > 1 ) port = atoi( arg[1] );

    auto resource_set = make_shared< Resource >();
    resource_set->set_path( "/set/{data: .*}/{value: .*}" );
    resource_set->set_method_handler( "GET", get_set_method_handler );

    auto resource_get = make_shared< Resource >();
    resource_get->set_path( "/get/{data: .*}" );
    resource_get->set_method_handler( "GET", get_get_method_handler );

    auto settings = make_shared< Settings >();
    settings->set_port( port );
    settings->set_default_header( "Connection", "close" );

    Service service;
    service.publish( resource_set );
    service.publish( resource_get );

    service.start( settings );
}

Вот и вся программа на "супер-пупер-сложном" языке.

1. Указываем порт по умолчанию "8080".

2. Проверяем, есть ли параметры в командной строке.

3. Если параметры есть, то устанавливаем порт из первого (в действительности - второго).

4. Определяем первый наш HTTP-ресурс (SET - установка значения), как умный указатель с соответствующим типом значения.

5. Устанавливаем шаблон "/set/{data: .*}/{value: .*}". Я несколько минут потратил, пока до меня дошло, а Вы?

6. Определяем второй ресурс (GET - получение установленного ранее значения или "EMPTY").

7. Создаем настройку, передаем в нее порт, устанавливаем заголовки по умолчанию.

8. Создаем сервис и регистрируем там наши ресурсы.

9. Стартуем сервис с нашими настройками.

Ну и осталось извлечь пользу.

 

ДЕРНЕМ СЕРВИС ИЗ 1С

Ну тут тоже все просто, но чуть усложним и проведем нагрузочный тест.

 
 Код на 1C

 

Процедура ОтправитьВСервисНаСервере()
	СреднееВремя = 0;
	МаксВремя = 0;
	МинВремя = 100000000;
	ВсегоВремя = 0;

	Запрос = Новый Запрос(
		"ВЫБРАТЬ
		|	Номенклатура.Наименование КАК Наименование,
		|	Номенклатура.Код КАК Код
		|ИЗ
		|	Справочник.Номенклатура КАК Номенклатура");
	
	С = Новый HTTPСоединение("172.23.38.82",8080,,,,10);

	Т = Запрос.Выполнить().Выгрузить();
	Для Каждого Ст ИЗ Т Цикл 
		З = Новый HTTPЗапрос(СтрШаблон("/set/%1/%2",ст.код, КодироватьСтроку(СтрЗаменить(ст.Наименование,"/"," "),СпособКодированияСтроки.URLВКодировкеURL)));
		Время = ТекущаяУниверсальнаяДатаВМиллисекундах();
		О = С.Получить(З);
		ВремяТ = ТекущаяУниверсальнаяДатаВМиллисекундах() - Время;
		
		ВсегоВремя = ВсегоВремя + ВремяТ;
		МинВремя = Мин( МинВремя, ВремяТ);
		МаксВремя = Макс( МаксВремя, ВремяТ);
		
		Если НЕ О.КодСостояния = 200 Тогда 
			Сообщить( "Ошибка! " + О.ПолучитьТелоКакСтроку() );
		КонецЕсли;
	КонецЦикла;
	
	Сообщить(
		СтрШаблон( "Статистика SET:
		|Всего запросов: %4,
		|Минимальное время запроса: %1 мс,
		|Максимальное время запроса: %2 мс,
		|Среднее время запроса: %3 мс.", МинВремя, МаксВремя, Цел(ВсегоВремя / Т.Количество()), Т.Количество() )
		);
	
	
	Для Каждого Ст ИЗ Т Цикл 
		З = Новый HTTPЗапрос(СтрШаблон("/get/%1",ст.код));

		Время = ТекущаяУниверсальнаяДатаВМиллисекундах();
		О = С.Получить(З);
		ВремяТ = ТекущаяУниверсальнаяДатаВМиллисекундах() - Время;
		
		ВсегоВремя = ВсегоВремя + ВремяТ;
		МинВремя = Мин( МинВремя, ВремяТ);
		МаксВремя = Макс( МаксВремя, ВремяТ);

		//Сообщить( Ст.Код + "/" + О.ПолучитьТелоКакСтроку() );
	КонецЦикла;
	
	Сообщить(
		СтрШаблон( "Статистика GET:
		|Всего запросов: %4,
		|Минимальное время запроса: %1 мс,
		|Максимальное время запроса: %2 мс,
		|Среднее время запроса: %3 мс.", МинВремя, МаксВремя, Цел(ВсегоВремя / Т.Количество()), Т.Количество() )
		);
	
КонецПроцедуры

Ну суть кода проста - создаем соединение, дергаем SET с кодом товара в качестве ключа и закодированном наименовании номенклатуры в качестве значения. Дальше дергаем GET с кодом товара. В результат выводим ошибки и измеренное время доступа к сервису.

 
 Результат на большом и красивом компьютере

Ошибка! Argument is not a valid URI: http://localhost/set/000000047/%D0%91%D1%83%D0%BC%D0%B0%D0%B3%D0%B0%20%D0%BE%D1%84%D0%B8%D1%81%D0%BD%D0%B0%D1%8F%20%D1%84-%D1%82%20%D0%903%20500%D0%BB%20%22Ballet%20Premier%22%20%D0%B1%D0%B5%D0%BB%D0%B8%D0%B7%D0%BD%D0%B0%20161%%20CIE,%20%D0%90%20%D0%BA%D0%BB%D0%B0%D1%81%D1%81%20(%D1%80091745,%20%D0%BA398664)


Ошибка! Argument is not a valid URI: http://localhost/set/000000048/%D0%91%D1%83%D0%BC%D0%B0%D0%B3%D0%B0%20%D0%BE%D1%84%D0%B8%D1%81%D0%BD%D0%B0%D1%8F%20%D1%84-%D1%82%20%D0%903%20500%D0%BB%20%22%D0%A1%D0%B2%D0%B5%D1%82%D0%BE%D0%BA%D0%BE%D0%BF%D0%B8%22%20%D0%B1%D0%B5%D0%BB%D0%B8%D0%B7%D0%BD%D0%B0%20146%%20CIE,%20%D0%A1%20%D0%9A%D0%BB%D0%B0%D1%81%D1%81%20CIE%20(%D0%BA28993,%20%D1%80007221)


Ошибка! Argument is not a valid URI: http://localhost/set/000000049/%D0%91%D1%83%D0%BC%D0%B0%D0%B3%D0%B0%20%D0%BE%D1%84%D0%B8%D1%81%D0%BD%D0%B0%D1%8F%20%D1%84-%D1%82%20%D0%904%20500%D0%BB%20%22Ballet%20Brilliant%22%20%D0%B1%D0%B5%D0%BB%D0%B8%D0%B7%D0%BD%D0%B0%20168%%20CIE,%20%D0%90+%20%D0%9A%D0%BB%D0%B0%D1%81%D1%81%20(%D1%80212721)


Ошибка! Argument is not a valid URI: http://localhost/set/000000050/%D0%91%D1%83%D0%BC%D0%B0%D0%B3%D0%B0%20%D0%BE%D1%84%D0%B8%D1%81%D0%BD%D0%B0%D1%8F%20%D1%84-%D1%82%20%D0%904%20500%D0%BB%20%22IQ%20AllRound%22%20%D0%B1%D0%B5%D0%BB%D0%B8%D0%B7%D0%BD%D0%B0%20162%%20CIE(%D0%BA306383,%20%D1%80075193)


Ошибка! Argument is not a valid URI: http://localhost/set/000000051/%D0%91%D1%83%D0%BC%D0%B0%D0%B3%D0%B0%20%D0%BE%D1%84%D0%B8%D1%81%D0%BD%D0%B0%D1%8F%20%D1%84-%D1%82%20%D0%904%20500%D0%BB%20%22%D0%A1%D0%B2%D0%B5%D1%82%D0%BE%D0%BA%D0%BE%D0%BF%D0%B8%22%20%D0%B1%D0%B5%D0%BB%D0%B8%D0%B7%D0%BD%D0%B0%20146%%20CIE,%20%D0%A1%20%D0%9A%D0%BB%D0%B0%D1%81%D1%81%20(%D1%80000877,%20%D0%BA398657)


Ошибка! Argument is not a valid URI: http://localhost/set/000000052/%D0%91%D1%83%D0%BC%D0%B0%D0%B3%D0%B0%20%D0%BE%D1%84%D0%B8%D1%81%D0%BD%D0%B0%D1%8F%20%D1%84-%D1%82%20%D0%904%20500%D0%BB%20%22%D0%A1%D0%BD%D0%B5%D0%B3%D1%83%D1%80%D0%BE%D1%87%D0%BA%D0%B0%22%20%D0%B1%D0%B5%D0%BB%D0%B8%D0%B7%D0%BD%D0%B0%20146%%20CIE%20(%D0%BA306647)


Ошибка! Argument is not a valid URI: http://localhost/set/000000053/%D0%91%D1%83%D0%BC%D0%B0%D0%B3%D0%B0%20%D0%BE%D1%84%D0%B8%D1%81%D0%BD%D0%B0%D1%8F%20%D1%84-%D1%82%20%D0%904%20500%D0%BB%20Ballet%20%22Classic%22%20%D0%B1%D0%B5%D0%BB%D0%B8%D0%B7%D0%BD%D0%B0%20153%%20CIE,%20%D0%92%20%D0%BA%D0%BB%D0%B0%D1%81%D1%81%20(398639,%20398661)


Ошибка! Argument is not a valid URI: http://localhost/set/000000054/%D0%91%D1%83%D0%BC%D0%B0%D0%B3%D0%B0%20%D0%BE%D1%84%D0%B8%D1%81%D0%BD%D0%B0%D1%8F%20%D1%84-%D1%82%20%D0%904%20500%D0%BB%20Ballet%20%22Premier%22%20%D0%B1%D0%B5%D0%BB%D0%B8%D0%B7%D0%BD%D0%B0%20161%%20CIE,%20%D0%90%20%D0%BA%D0%BB%D0%B0%D1%81%D1%81%20(%D1%80066047,%20%D0%BA398663)


Ошибка! Argument is not a valid URI: http://localhost/set/000000055/%D0%91%D1%83%D0%BC%D0%B0%D0%B3%D0%B0%20%D0%BE%D1%84%D0%B8%D1%81%D0%BD%D0%B0%D1%8F%20%D1%84-%D1%82%20%D0%905%20500%D0%BB%20%22OfficeSpace%22%20%D0%B1%D0%B5%D0%BB%D0%B8%D0%B7%D0%BD%D0%B0%20149%%20CIE%201%2010%20(264198)


Ошибка! Argument is not a valid URI: http://localhost/set/000000403/%D0%9F%D0%BE%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BA%D0%B0%20%D0%90%D0%BA%D1%86%D0%B8%D1%8F%2030%%20205*175%20%D0%BC%D0%BC.%20(%D0%BA416133)


Статистика SET:
Всего запросов: 2 000,
Минимальное время запроса: 0 мс,
Максимальное время запроса: 34 мс,
Среднее время запроса: 9 мс.


Статистика GET:
Всего запросов: 2 000,
Минимальное время запроса: 0 мс,
Максимальное время запроса: 44 мс,
Среднее время запроса: 19 мс.

Сначала у меня для ряда позиций система возвратила ошибку, т.к. не смогла определить в запросе соответствие шаблону. Таких строк в моем справочнике не так и много - всего 10 из 2000. Над причиной мне было лень думать, но, например, символ "/" уже приведет к подобной ошибке.

Ну и скорость обращений с виртуалки на винде к хост-системе на убунту достаточно высокая - в среднем запрос выполняется за 9 мс для записи и 19 мс для чтения (не знаю, почему так). Максимальное время не превышает 50 мс. Давайте протестируем это на Rispberry PI 3 B.

sergey@sergey-X570-AORUS-ELITE:~$ ssh pi@172.23.38.105
pi@raspberrypi:~ $ g++ exmpl.cpp -lrestbed
pi@raspberrypi:~ $ ./a.out

Зашли на R PI, скомпилировали программку, запустили...

 
 Результат на меленьком, но гордом Rispberry PI 3 B

 Статистика SET:
Всего запросов: 2 000,
Минимальное время запроса: 0 мс,
Максимальное время запроса: 94 мс,
Среднее время запроса: 15 мс.


Статистика GET:
Всего запросов: 2 000,
Минимальное время запроса: 0 мс,
Максимальное время запроса: 125 мс,
Среднее время запроса: 31 мс.

С учетом того, что до Rispberry надо ехать через WIFI-роутер, то результат вполне себе приличный.

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

*** тестовая база 1С была развернута на бесплатной версии 1С для обучения программированию на виртаульной машине на базе VirtualBox 6.1.26, на которой была установлена винда 10 с опцией "у меня нет ключа". Подробнее тут: ТЫЛЫЩЬ!

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Nefilimus 75 01.11.21 15:14 Сейчас в теме
Название переменных божественны =)) Я что-то не понял в чём фишка... Это же обычный http запрос, не?
Сто27001; +1 Ответить
2. starik-2005 2834 01.11.21 15:15 Сейчас в теме
(1)
Я что-то не понял в чём фишка.
Это веб-сервис на С++. Больше ничего необычного...
Nefilimus; +1 Ответить
9. triviumfan 79 08.11.21 10:27 Сейчас в теме
(2) А можно узнать для чего? Если можно создать такой же сервис в самой 1с. Не понимаю сути этой ВК.
10. starik-2005 2834 08.11.21 13:26 Сейчас в теме
(9)
Не понимаю сути этой ВК.
Для обработки 10к запросов в секунду.
Nefilimus; +1 Ответить
3. SGordon1 01.11.21 15:22 Сейчас в теме
4. starik-2005 2834 01.11.21 15:25 Сейчас в теме
(3)
А что нужно для https?
Если перейдете по сцылке на гит, то найдете там в документации примеры, в которых есть и HTTPS.
https://github.com/Corvusoft/restbed/blob/master/documentation/example/HTTP­S_SERVICE.md
5. gybson 01.11.21 15:30 Сейчас в теме
Как механизм интеграции сгодится, но выгоды перед питоном не видно вот так сразу
6. starik-2005 2834 01.11.21 15:32 Сейчас в теме
(5)
но выгоды перед питоном не видно вот так сразу
Выгоды перед питоном не видно до тех пор, пока не придется что-то простое, но большое, обрабатывать. С++ на несколько порядков быстрее питона может в ряде случаев работать, при этом требует сильно меньше ресурсов. При том современный С++ - это уже не сильно сложнее питона...
cobroid; davdykin; +2 Ответить
7. gybson 01.11.21 16:50 Сейчас в теме
(6)может то оно может, только программист нужен опытный. Современный С++ достаточно сложен, чтобы утонуть в утечках памяти, исключениях и прочем. Масштабирование сервиса под вопросом. У питона то под капотом такой же С++ код, только с ним работать проще.
8. starik-2005 2834 01.11.21 17:00 Сейчас в теме
(7)
чтобы утонуть в утечках памяти, исключениях и прочем
C STL и умными указателями \то будет сложно сделать. Исключения в 99% случаев от того, что переменной не выделена память, но сейчас это статическое выделение или с помощью объектов STL, так что утечки тоже давно уже канули в лету (если, конечно, не программировть на С варианта 90-х).
11. user1886088 18.12.22 19:05 Сейчас в теме
А чего не GO? Там реализовать http сервер на порядок проще с со скоростью у него тоже все хорошо.
12. starik-2005 2834 30.12.22 14:35 Сейчас в теме
(11)
Там реализовать http сервер на порядок проще с со скоростью у него тоже все хорошо
Приведите пример этого "проще".
13. ivan1703 37 20.04.23 21:20 Сейчас в теме
еще проще )))

#include "httplib.h"

int main()
{
    httplib::Server listener;
    listener.Get("/", [](const Request&, Response& res){
        res.set_content("Hello it's c++ !!!", "application / json; charset = utf-8");
    });
    listener.listen("0.0.0.0", 80);
}
Показать
14. starik-2005 2834 20.04.23 21:40 Сейчас в теме
Оставьте свое сообщение

См. также

GGraphics - внешняя компонента для работы с картинками jpg (jpeg), png, bmp, gif, tif

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Позволяет автоматизировать работу с картинками. С помощью компоненты можно измерять размер изображений, поворачивать их, наносить водяные знаки, конвертировать из одного формата в другой. Будет очень полезна для интернет-магазинов и всех, кому постоянно требуется работать с различными графическими форматами. Выполнена по технологии NativeAPI. Работает с форматами: jpg (jpeg), png, bmp, gif, tif

3600 руб.

02.09.2010    72686    71    253    

187

Интеграция с сервисом vetmanager

WEB-интеграция Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Данная обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.

6000 руб.

02.02.2021    12715    28    43    

15

Внешняя компонента для сканирования (замена TWAIN-компоненты БСП) (Native Win 32/64)

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer). Работа с PDF основана на проекте PDFium из состава проекта Chromium/Chrome, для работы с TWAIN использован свободный проект twpp https://github.com/xricht17/twpp.

2400 руб.

12.05.2020    21446    110    84    

68

Модуль для обмена "1С:Предприятие 8. УАТ. ПРОФ" с FortMonitor

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ 3. Отчеты по данным загруженным в регистры сведений. Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен.

11856 руб.

25.05.2021    9727    6    4    

6

Драйвер облачной кассы для Бизнес.РУ Чеки

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

Универсальный драйвер для фискализации чеков для сервиса Бизнес.РУ. Чеки (https://online-check.business.ru/). Работает с любой кассой, подключенной к сервису, в том числе и без физической кассы (Аренда облачной ККТ в датацентре). Принцип работы аналогичен наличию физической кассы, подключенной к рабочему месту 1С. Фискализация выполняется с любого рабочего места через интернет. Нет ограничений на количество рабочих мест, касс, компьютеров. Поддерживает печать с нескольких рабочих мест на одну кассу. Работает в любой операционной системе (Windows, Linux) и в любом клиенте (Тонкий, Толстый, Web, Мобильный клиент).

6000 руб.

03.06.2021    10776    8    0    

5

Contragent+ 9.1 для 1С 8.2/8.3

Обработка справочников Обмен с ГосИС Взаиморасчеты WEB-интеграция Платформа 1С v8.3 Платформа 1C v8.2 Конфигурации 1cv8 Платные (руб)

Универсальная обработка для экспресс-регистрации новых и обновления реквизитов существующих элементов справочников «Контрагенты» & «Организации» по данным Федеральной Налоговой Службы РФ (ЕГРЮЛ&ЕГРИП). Минимизация ручного ввода и соответствие данных 1С учредительным сведениям юр. лиц & ИП.

3600 руб.

13.12.2012    89032    173    308    

248

Внешняя компонента печати PDF (Native Win 32/64)

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента позволяет печатать PDF файлы непосредственно из 1С, не используя при этом сторонних программ. Прекрасно работает на сервере, тонком клиенте и веб-клиенте. Основана на проекте PDFium из состава проекта Chromium/Chrome

1500 руб.

17.09.2018    31720    95    121    

102

SALE! 10%

Автоматическая загрузка файлов (например, прайс-листов) из электронной почты, FTP, HTTP, их обработка и выгрузка на FTP (на сайт) и для других целей

Прайсы WEB-интеграция Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Автомобили, автосервисы Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Программа с заданным интервалом времени (или по ручной команде) скачивает файлы (например, прайс-листы поставщиков) из различных источников: письма электронной почты, FTP или HTTP-адреса, и сохраняет их в каталог упорядоченной структуры. При этом извлекает файлы из архивов, может переименовывать файлы и менять их формат (csv, xls, txt). Можно настроить выгрузку обработанных файлов на сайт (через FTP-подключение). Программа будет полезна компаниям, у которых есть большое количество поставщиков и/или прайс-листы поставщиков обновляются часто (необязательно прайс-листы, файлы могут быть любого назначения). Собранные таким образом актуальные версии прайс-листов можно выгрузить с помощью программы себе на сайт (или на любой FTP-сервер) или выполнить другие необходимые задачи.

10600 9540 руб.

28.05.2015    81733    25    51    

49

Прайс-лист с фотографиями, выгрузкой в Excel с подсчетом суммы заказа, загрузкой заказа в Управление торговлей 11 (Россия) и Управление торговлей для Беларуси 3

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

Прайс-лист для программы 1С: Управление торговлей 11 и Управление торговлей для Беларуси 3, позволяющий: 1) Формировать прайс-лист с фотографиями; 2) Сохранить прайс-лист в Excel с формулами, подсчитывающими количество и сумму заказа; 3) Передать сформированный прайс-лист по каналу ftp на сайт; 4) Сохранить прайс-лист в формате CSV; 5) Загрузить сделанный по прайс-листу заказ обратно в программу.

6000 руб.

04.09.2014    118103    42    105    

51

[Расширение] БОР-Навигатор.Культура

Зарплата Бюджетный учет WEB-интеграция Обмен с ГосИС Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Расширение конфигурации, включающее в себя объекты, необходимые для подготовки и сдачи отчета "Штатная численность" системы "БОР-Навигатор.Культура" в программе "1С:Зарплата и кадры государственного учреждения", редакция 3.1.

8400 руб.

01.02.2019    23151    7    0    

6

Расширение 1СПАРК риски для 1С:Документооборот 8 КОРП

WEB-интеграция Управление взаимоотношениями с клиентами (CRM) Документооборот и делопроизводство (СЭД) Взаиморасчеты Платформа 1С v8.3 1С:Документооборот Бухгалтерский учет Управленческий учет Платные (руб)

Расширение для конфигурации 1С:Документооборот 8 КОРП, позволяющее с помощью сервиса "1СПАРК риски" проверять благонадежность контрагентов непосредственно из программы 1С.

7200 руб.

23.05.2018    27120    17    7    

14

Поиск ИП/судебных участков по адресу и РОСП по адресу без использования api fssp

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Россия Бюджетный учет Платные (руб)

Обработка получает данные в сайтов с информацией по судам/должникам/отделам ФССП по адресу и/или ИНН и идентификаторам. Актуальна в связи с отключением возможности получать эти данные по API.

2400 руб.

22.03.2023    2844    5    2    

4

Внешняя компонента WebSocket для 1С (c поддержкой Authorization token bearer)

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

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

4440 руб.

22.06.2020    13676    9    26    

14

Sync1C: Синхронизация 1С и OpenCart

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

Внешняя обработка для обмена данными с интернет-магазином OpenCart. Позволяет быстро наполнить магазин товарами, затем обновлять цены и добавлять новые товары. Далее можно средствами OpenCart настраивать и дополнять карточки товаров как надо для магазина, при этом связь товаров с 1С не теряется.

3840 руб.

30.03.2018    39867    73    133    

77

Справочник кодов ТНВЭД

Обработка справочников WEB-интеграция Операции по ВЭД Учет ТМЦ Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием Платные (руб)

Загрузка справочника ТНВЭД в базу данных 1С без изменения конфигурации. База кодов загружается с сайта www.nalog.ru или локального ресурса. После загрузки - справочник всегда под рукой! Реализован поиск по загруженной базе. Доступны примечания для групп справочника (комментарии налогового органа). Дополнительно реализовано занесение кодов ТНВЭД в справочники ИБ (например, справочник Номенклатура) как реквизита или свойства справочника. Подходит для всех стандартных конфигураций (БП 2.0, УПП 1.3, КА 1.1, УТ 10.3, Розница 1 и пр., написанных под обычные формы).

3100 руб.

29.09.2015    52010    13    4    

36

Внешняя компонента для подключения 1С к телефонии Asterisk

Разработка внешних компонент Телефония, SIP Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)

1200 руб.

04.05.2018    41381    104    64    

55

Развертывание Linux сервера с community-версией платформы

Linux Платформа 1С v8.3 Бесплатно (free)

Сценарий подготовки рабочего места разработчика с платформой версии 8.3.23 с community-лицензией для разработки и отладки конфигураций в клиент-серверном режиме с сервером, работающим на базе Linux+PostrgeSQL.

03.01.2023    8202    Akcium    46    

165

Яндекс.Метрика - загрузка статистики в 1С:Предприятие 8

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

Хорошая основа вашего решения импорта данных статистики Яндекс.Метрики в информационную базу 1С. Получение счетчиков, запрос статистики, получение данных - все в одной обработке.

3600 руб.

21.06.2022    6511    1    0    

3

Обслуживание баз данных 1C на Postgresql под Astra Linux

Администрирование СУБД Инструменты администратора БД Linux Платформа 1С v8.3 Абонемент ($m)

Эта публикация для тех специалистов 1С, которые развернули сервер 1С и сервер PostgreSQL под Astra Linux и которым не интересно работать в командной строке, выполняя «шаманские» скрипты для автоматического сохранения и восстановления баз. Возможно вам тоже будет удобно обслуживать базы данных PostgreSQL решением на платформе 1С.

10 стартмани

14.06.2022    7634    13    alfanika    11    

22

Открытое ПО и опыт его внедрения

Linux Внедрение ИТ-системы Бесплатно (free)

Open Source. Открытое ПО и опыт его внедрения.

30.05.2022    4001    300_po_vstrechke    56    

225

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

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

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

6 стартмани

17.05.2022    7872    37    kostyan7    20    

1

Интеграция 1С:БИТ.Управление медицинским центром и amoCRM

Управление взаимоотношениями с клиентами (CRM) WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Здравоохранение, медицина, стоматология Россия Управленческий учет Платные (руб)

Это законченное решение, которое позволяет в amoCRM получать данные о врачах и их свободном времени, в 1С создавать документ "Заявка", выгружать оплаты от клиента в лид. Тестировалось на конфигурации БИТ.Управление медицинским центром (2.0.46.43), платформа 1С:Предприятие 8.3 (8.3.16.1063), версия Python 3.10.1.

5400 руб.

28.01.2022    9627    1    2    

2

Обмен со СДЭК

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

Обработка позволяет производить обмен между 1С Альфа Авто 5.1 и СДЭК по протоколу API.

6000 руб.

21.12.2021    8708    1    0    

2

Интеграция с КОМТЕТ Касса Курьер

WEB-интеграция Учет ТМЦ Платформа 1С v8.3 1С:Управление торговлей 10 Платные (руб)

Внешняя обработка предназначена для интеграции конфигурации Управление торговлей 10.3 с веб-сервисом КОМТЕТ Касса Курьер. КОМТЕТ Касса Курьер это сервис с возможностью распределения заказов по курьерам, быстрой корректировке заказов в момент доставки, печати чеков по 54-ФЗ в момент расчета с покупателем.

3480 руб.

20.12.2021    7938    1    0    

1

HTTP-клиент

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

Подсистема 1С для работы с HTTP.

1 стартмани

28.07.2021    17186    55    SpaceOfMyHead    51    

94

Звуковое управление в 1С 8.3

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данной статье описано создание библиотеки для звукового управления (выполнение команд голосом) для платформы 1С 8.3. Задача была поставлена так, чтобы модуль функционировал непосредственно на клиенте 1С, осуществляя управление формами, и взаимодействовал с интерфейсом.

16.03.2021    10455    velemir    36    

81

Внешняя компонента: Android tools

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

Несколько дополнительных функций для мобильного приложения\клиента под Android. Размер архива внешних компонент под архитектуры ARM и x86 - 390KB.

1 стартмани

12.01.2021    14375    39    KAV2    46    

16

Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions

WEB-интеграция Облачные сервисы, хостинг Платформа 1С v8.3 Бесплатно (free)

"Я не могу просто взять и скопировать код с гитхаба", "у нас 1С микросервисами окружена", "возможностей мало" - частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще - берём и используем.

28.12.2020    12931    comol    32    

108

GraphViz1С: внешняя компонента 1С Native API для построения графов

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Внешняя компонента Native API для Windows с исходными кодами на C++ для построения графов посредством библиотеки GraphViz. Граф строится на основании текстового описания в формате dot. Реализован экспорт в большинство графических форматов. Поддерживаются версии платформы от 8.3.14 и выше до 8.3.18.

22.12.2020    10955    214    kandr    15    

66

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

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

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

1 стартмани

25.11.2020    83567    16    kandr    3    

6

Поиск номенклатуры в интернете (Розница 2.3, Управление торговлей 11.4)

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

Альтернатива сервису 1С Номенклатура, не требует подписки ИТС, ищет данные в открытых источниках. Для поиска товара по штрихкоду в сети интернет, полезно для первоначального заполнения базы.

1999 руб.

15.10.2020    16012    20    55    

23