Внешняя компонента как 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 69 01.11.21 15:14 Сейчас в теме
Название переменных божественны =)) Я что-то не понял в чём фишка... Это же обычный http запрос, не?
Сто27001; +1 Ответить
2. starik-2005 2660 01.11.21 15:15 Сейчас в теме
(1)
Я что-то не понял в чём фишка.
Это веб-сервис на С++. Больше ничего необычного...
Nefilimus; +1 Ответить
9. triviumfan 30 08.11.21 10:27 Сейчас в теме
(2) А можно узнать для чего? Если можно создать такой же сервис в самой 1с. Не понимаю сути этой ВК.
10. starik-2005 2660 08.11.21 13:26 Сейчас в теме
(9)
Не понимаю сути этой ВК.
Для обработки 10к запросов в секунду.
Nefilimus; +1 Ответить
3. SGordon1 01.11.21 15:22 Сейчас в теме
4. starik-2005 2660 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 2660 01.11.21 15:32 Сейчас в теме
(5)
но выгоды перед питоном не видно вот так сразу
Выгоды перед питоном не видно до тех пор, пока не придется что-то простое, но большое, обрабатывать. С++ на несколько порядков быстрее питона может в ряде случаев работать, при этом требует сильно меньше ресурсов. При том современный С++ - это уже не сильно сложнее питона...
cobroid; davdykin; +2 Ответить
7. gybson 01.11.21 16:50 Сейчас в теме
(6)может то оно может, только программист нужен опытный. Современный С++ достаточно сложен, чтобы утонуть в утечках памяти, исключениях и прочем. Масштабирование сервиса под вопросом. У питона то под капотом такой же С++ код, только с ним работать проще.
8. starik-2005 2660 01.11.21 17:00 Сейчас в теме
(7)
чтобы утонуть в утечках памяти, исключениях и прочем
C STL и умными указателями \то будет сложно сделать. Исключения в 99% случаев от того, что переменной не выделена память, но сейчас это статическое выделение или с помощью объектов STL, так что утечки тоже давно уже канули в лету (если, конечно, не программировть на С варианта 90-х).
Оставьте свое сообщение

См. также

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

Разработка внешних компонент v8 1cv8.cf Бесплатно (free)

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

16.03.2021    8690    velemir    33    

Rest API от чайника для чайников

WEB v8 Бесплатно (free)

На написание статьи побудило чтение книги "Технологии интеграции "1С:Предприятия 8.3"" Хрусталевой Е.Ю. В первой главе там постоянно чередуются слова REST, REST-интерфейс, архитектура REST и т.д. Мне стало интересно, я начал копать, что это такое, и тема оказалась достаточно интересной.

06.06.2022    2054    zeltyr    0    

Загрузка выпусков подкаста Радио 1С Энтерпрайз

WEB v8 Бесплатно (free)

Код для загрузки всех выпусков подкаста Радио 1С Энтерпрайз для оффлайн-прослушивания.

29.04.2022    665    q_i    9    

Методика интеграции HTML редакторов в поле HTML документа базы 1С

WEB v8 Платформа 1C v8.2 Бесплатно (free)

В статье описаны критерии WYSIWYG HTML редакторов и общая картина интеграции с платформенными механизмами. На момент платформы 1С 8.3 и возможно для будущих релизов описание будет скорее всего актуально. Апробировано на 1С 8.3.20 и 8.2.12, а также на мобильной платформе 8.3.19.59.

12.04.2022    649    user1206119    0    

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

WEB Облачные сервисы, хостинг v8 Бесплатно (free)

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

28.12.2020    10806    comol    31    

Создание кодогенератора для Postman

WEB v8 Бесплатно (free)

Опишу порядок разработки кодогенератора для Postman c использованием OneScript и HTTPКоннектор.

13.03.2022    810    malikov_pro    0    

Ювелирсофт: Ювелирный торговый дом. Настройка интеграции с ГИИС ДМДК

WEB v8 1cv8.cf Ювелирная промышленность и торговля Россия Бесплатно (free)

Краткое описание настройки без лишней воды, для локального и серверного варианта.

21.02.2022    2076    Drasha    15    

Как из 1С отдать миллионы строк в BI и успеть это сделать быстро

Консолидация данных Анализ и проектирование ИТ-систем WEB v8 Бесплатно (free)

На онлайн-митапе «Бизнес-анализ по данным базы 1С. Интеграция c платформами BI» выступил ведущий разработчик WiseAdvice.tech Дмитрий Фурцев. Дмитрий рассказал о том, как отдать миллионы строк из 1С в платформу бизнес-аналитики и не потратить на это сутки.

14.02.2022    3505    Fudj1k    11    

.Net в 1С. На примере использования HTTPClient, AngleSharp. Удобный парсинг сайтов с помощью библиотеки AngleSharp, в том числе с авторизацией аля JQuery с использованием CSS селекторов. Динамическая компиляция Промо

WEB v7.7 v8 Бесплатно (free)

Часто приходится парсить сайты, в том числе с авторизацией, перескакивая со страницы на страницу по ссылкам. Тот, кто занимался вэб программированием, знает, как удобно использовать JQuery и CSS селекторы. На .Net написана очень удобная библиотека AngleSharp. Я покажу, как с её помощью можно значительно облегчить себе труд.

10.03.2016    64556    Serginio    33    

Передача сообщений из 1С в MS Teams

WEB v8 1cv8.cf Бесплатно (free)

Пример организации уведомлений в канал MS Teams.

09.02.2022    1415    Alex_YAM    3    

Работа с 1С через протокол OData

WEB v8 1cv8.cf Россия Бесплатно (free)

В данной статье мы будем рассматривать работу с данными информационной базы через протокол OData (далее OData).

17.12.2021    10857    ProfessionStore    19    

Подключение к HTTP-сервису с авторизацией посредством передачи клиентского SSL-сертификата

WEB v8 Бесплатно (free)

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

07.12.2021    5495    kholkin    12    

Online телефонный справочник из 1С: Зарплата и управление персоналом Промо

WEB v8 ЗУП3.x Россия Бесплатно (free)

В интернете представлено много реализаций online телефонных справочников организаций. Есть справочники, которые использует для хранения информации базу Active Directory (LDAP), есть справочники, которые реализованы с использованием СУБД (например, MySQL). Но я не нашел справочника, который использует информацию из базы 1С. Далее я рассмотрю данную разработку.

10.03.2017    28057    ruha    21    

Тонкости и подводные камни работы типового модуля интеграции Битрикс24 и 1С (Часть 2)

WEB v8 1cv8.cf Россия Бесплатно (free)

Это вторая часть цикла статей, посвящённых типовому модулю интеграции 1С Предприятия и Битрикс24. Цель данной части: рассмотреть тонкости, связанные с обменом товарами и сопутствующими сущностями (спойлер - единицы измерения и свойства товаров). Также затронем некоторые нюансы связи сущностей 1С и Б24 (относящиеся не только к товарам) и их побочное влияние при переносе данных из модуля в модуль (при смене конфигурации, переустановки или обновлении модуля).

27.11.2021    2917    freegman74    10    

Web консоль управления сеансами 1С

WEB v8 1cv8.cf Бесплатно (free)

Мы дали ему название adm1c, он позволяет посредством веб доступа удалять или смотреть на сеансы в 1С базах и при необходимости удалять их. Да и что тут такого, сказали бы, есть же консоль на win, с нее же это можно делать, и все верно, но есть пара но.

26.11.2021    2564    4ernuy    16    

Тонкости и подводные камни работы типового модуля интеграции Битрикс24 и 1С

WEB v8 1cv8.cf Россия Бесплатно (free)

Цель статьи - указать на подводные камни и нюансы, о которых “не пишут на заборах” и которые встретились мне за время внедрения типового модуля интеграции 1С и Битрикс24. Будет интересна для людей, кто подумывает о том, чтобы настроить интеграцию, и хотят понять, с чем столкнутся. А также для тех, кто уже работает с подобным обменом, столкнулся с какими-то из описанных ситуаций и хочет понять, что пошло не так и “как жить дальше”. Постараюсь все описать “человеческим” языком с минимальной долей терминов, так как статья, надеюсь, будет полезна не только программистам.

07.11.2021    4851    freegman74    13    

Кэширование COM-соединения. Три способа Промо

Внешние источники данных WEB Обмен между базами 1C v8 Россия Бесплатно (free)

Статья о трех способах кэширования COM-соединения в 1С:Предприятии 8.x.

11.04.2013    43897    YPermitin    42    

Публикация веб-сервисов 1С 8.3 вручную в Linux

Linux v8 Бесплатно (free)

Актуальный пример настройки публикации веб-сервисов под Linux

02.11.2021    1237    tubusx    1    

Окей, Google

WEB v8 Россия Бесплатно (free)

Пример интеграции Google Ассистента с 1С. В основе которого лежит платформа Dialogflow CX для понимания естественного языка.

28.10.2021    1578    Soloist    6    

Повышение производительности веб-сервисов. Переиспользование сеансов

WEB HighLoad оптимизация v8 Бесплатно (free)

Повышение производительности веб-сервисов. Переиспользование сеансов. Практическая реализация.

20.10.2021    2991    sorter1    2    

Заготовка для загрузки файлов по ftp Промо

WEB Обмен между базами 1C v8 1cv8.cf Бесплатно (free)

3 процедуры и 1 макет

03.06.2013    31688    anig99    6    

WEB/HTTP сервисы. Базовые отличия и применение на практике

WEB v8 Бесплатно (free)

Рассказываем о WEB и HTTP сервисах, их практическом применении, о шишках, которые мы набили, и о выводах, которые сделали. Спойлер: тех, кто дочитает статью до конца, ждет бонус от автора.

04.10.2021    13981    Neti    16    

Интеграция 1С с ГИИС ДМДК

WEB Файловые протоколы обмена (TXT, XML, DBF), FTP v8 ERP2 Ювелирная промышленность и торговля Россия Бесплатно (free)

ГИИС ДМДК - единая информационная платформа для взаимодействия участников рынка драгоценных металлов и драгоценных камней. с 01.09.21 стартовал обязательный обмен данными с Федеральной пробирной палатой (ФПП) исключительно через ГИИС. А постепенно - с 01.01.2022 и с 01.03.2022 - все данные о продаже драгоценных металлов и камней должны быть интегрированы с ГИИС. У многих пользователей возникает вопрос как автоматизировать обмен между программой 1С и ГИИС ДМДК. В настоящей статье ВЦ Раздолье поделится своим опытом о реализации такого обмена. Автор статьи - Мордовин Антон - архитектор систем на базе 1С Внедренческого центра "Раздолье".

30.09.2021    27490    1СERP    154    

Быстрое чтение составных http сообщений multipart/form-data

WEB v8 Бесплатно (free)

Алгоритм быстрого разбора составного http сообщения multipart/form-data.

26.09.2021    2247    cherkasovvitalik    3    

Необычно-экономное использование 1С:Предприятие 8 на Asp.Net-хостинге для реализации Интернет-магазина Промо

WEB Анализ и проектирование ИТ-систем v8 1cv8.cf Россия Бесплатно (free)

Статья описывает, как можно сэкономить на реализации Интернет-магазина предприятия, в который данные поступают из 1С:Предприятие 8. Данные размещаются в базе данных MSSql удаленно у хостинг-провайдера. Предлагается практический опыт гармоничной интеграции 1С:Предприятие и Asp.Net через LINQ и прямой доступ к информационной базе 1С. Строится простейшее решение, с одной стороны имеющее веб-интерфейс, а с другой стороны построенное как desktop-приложение. Тем самым достигается эффективность в наполнении веб-сайта контентом. Максимальный эффект достигается, когда Интернет-магазин проектируется «с нуля» с уникальной для предприятия структурой.

12.11.2010    43488    Elisy    13    

Интеграция 1С с Битрикс24 через вебхуки

WEB v8 1cv8.cf Россия Бесплатно (free)

Пример получения токена и http запрос к API битрикса.

15.09.2021    4573    TyurinArt    8    

Обмен с HTTP сервисом файлами по формату multipart/form-data

WEB v8 1cv8.cf Россия Бесплатно (free)

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

07.09.2021    5625    ix5s    25    

Разработка гибридного web-приложения на 1С, возможности и ограничения

WEB v8 Бесплатно (free)

Все чаще разработчики склоняются к использованию 1C в качестве бэкенда при разработке веб-приложений. Но благодаря встраиванию веб-клиента 1С в сайт можно получить еще больше готовой функциональности. О том, как реализовать гибридное приложение за счет связки 1С с другими веб-технологиями, рассказал разработчик компании Neti Эльдар Мингалиев.

06.09.2021    3780    Бэнни    11    

Работа с WEB-сервисами под HTTPS на примере прямого обмена между базами (1С – 1С) 

WEB v8 Россия Бесплатно (free)

Использование веб-сервисов 1С при обмене 1С – 1С позволяет быстро передавать достаточно большие объемы данных из базы-источника в базу-приемник в объектах языка 1С. Данный метод обмена может применяться при бесшовной интеграции между двумя базами 1С, но требует определенной серверной инфраструктуры (установленного и настроенного WEB-сервера).

03.09.2021    8649    UltraUnion2005    8    

Глава 2. Как я написал (собрал с инфостарта) свой парсер сайта 1С Releases

WEB v8 1cv8.cf 1С:Франчайзи, автоматизация бизнеса Россия Бесплатно (free)

Путешествие начинающего программиста 1С. Глава вторая. Призываем экспертов в комментарии, оптимизируем код, ругаемся на кривые руки автора. Автор же, в свою очередь, делится своим опытом, читает умные комментарии, стремится дать те знания, за которыми он сидел ночами тем, кто их хочет найти.

31.08.2021    1677    ldmonster    4    

Взаимодействие с api Честный знак (Молочная продукция)

WEB Универсальные функции v8 1cv8.cf Бесплатно (free)

Обзор основных примеров взаимодействия с Честным знаком по api для нетиповых конфигураций.

30.08.2021    5901    user5300    57    

Умная маршрутизация: о сложностях интеграции с 1С (часть 2)

WEB v8 УТ11 Бесплатно (free)

В статье будет много примеров кода с комментариями работы расширения для обмена данными УТ11.4 с Яндекс.Маршрутизацией через выгрузку/загрузку EXCEL файла.

27.08.2021    2336    greencactus    6    

Встраивание форм 1С на страницы сайта

WEB v8 1cv8.cf Бесплатно (free)

В платформе 8.3.16 появилась возможность выводить на страницах сайта информацию из веб-клиента 1С так, что пользователь даже не заметит, что работает с платформой. Руководитель компании Айтон Михаил Пинягин на онлайн-митапе «Web-клиенты для 1С» рассказал о том, какие особенности нужно учесть при настройке встраиваемого веб-клиента, и какие возможности он дает.

27.08.2021    4900    mikepin    9    

Гарри Поттер и подкапотное пространство веб-клиента

WEB v8 Бесплатно (free)

При разработке сайтов, интегрированных с 1С через HTTP-сервисы, приходится бороться с кодировками, искать производительные интерфейсные решения и задумываться над безопасностью. В ходе онлайн-митапа «Web-клиенты для 1С» Юрий Лазаренко показал на практике, как работает магия самодельного веб-клиента и как решать проблемы, возникающие при интеграции.

20.08.2021    3814    TitanLuchs    19    

Умная маршрутизация: кейс интеграции с 1С (часть 1)

WEB v8 Бесплатно (free)

Как мы решали проблемы с доставкой в нашем интернет-магазине, внедрили новый бизнес-процесс за 3 месяца и научились меньшим количеством машин привозить больше заказов клиентам.

18.08.2021    5156    greencactus    42    

Сравнительный анализ вариантов интеграции между системами

Файловые протоколы обмена (TXT, XML, DBF), FTP WEB v8 Бесплатно (free)

На Infostart Meetup «Интеграционные решения для 1С» выступил Сергей Наумов – руководитель центра аналитики и консалтинга WiseAdvice. Сергей поделился с коллегами кейсами из собственной практики: какие интеграционные решения остаются актуальными до сих пор, а каких приемов стоит избегать – даже в безвыходных ситуациях.

30.07.2021    2990    SergeyN    1    

Пример организации HTTP сервиса на 1С: Документооборот. Источник 1С: ЕРП => Приемник 1С: Документооборот

WEB v8 ДО Бесплатно (free)

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

13.05.2021    3301    Flover    0    

Настраиваем авторизацию пользователей 1С через Okta

WEB v8 Бесплатно (free)

Чем больше в компании различных конфигураций и сервисов, тем актуальнее становится проблема единой системы авторизации single Sign-On. Его лидером практически безоговорочно считается Okta. Но на просторах интернета очень мало информации про интеграцию 1С с Okta через протокол OpenID Connect. Что ж, настало время восполнить недостающие пробелы и перевернуть эту печальную страницу в вашей истории

30.04.2021    4909    ripreal1    16    

Xubuntu 20.04 для бухгалтера 1С

Linux Администрирование СУБД v8 БП3.0 Россия Бесплатно (free)

В публикации представлен необходимый минимум для настройки Xubuntu 20.04 в качестве рабочего места бухгалтера, ведущего учёт в программе 1С: Бухгалтерия 3.0 файловый вариант. Кроме этого, настроено подключение и других сотрудников через тонкий клиент 1С к опубликованной на веб-сервере базе бухгалтерии.

12.04.2021    6651    compil7    34    

Правила обмена больше не нужны

Внешние источники данных Обмен между базами 1C WEB Файловые протоколы обмена (TXT, XML, DBF), FTP v8 Бесплатно (free)

Есть несколько общепринятых подходов к написанию обмена между 1С-системами, каждый из которых упирается в длительное изучение технологии, мучительную отладку правил конвертации и написание большого количества сервисного кода, в котором потом тяжело разобраться. О принципах работы универсального фреймворка liteExchange, который реализует быстрые обмены между 1С и внешними системами, и берет на себя всю техническую обвязку по стандартному преобразованию данных, на INFOSTART MEETUP Saint Petersburg.Online рассказал Николай Крылов.

17.03.2021    15609    Nikola23    40    

Установка платформы 1С 8.3.20.1363 и более старших версий на RHEL8 и любые другие rpm-based linux. Решение проблемы установки меньших версий 1С8.3 (webkitgtk3) на RHEL 8 / CentOS 8 / Fedora Linux

Linux v8 1cv8.cf Бесплатно (free)

Начиная с версии платформы 1С 8.3.20.1363 реализована программа установки компонентов системы «1С:Предприятие» для ОС Linux. Теперь любой пользователь Линукс может без проблем установить 1С на свою любимую систему. Попытка установки 1С:Предприятия 8.3 меньших версий, чем 1С 8.3.20.1363 на RedHat Enterprise Linux 8 / CentOS 8 / Fedora не увенчается успехом, произойдет ошибка: Неудовлетворенные зависимости: libwebkitgtk-3.0.so.0()(64bit) нужен для 1c-enterprise-8.3.18.1128-training-8.3.18-1128.x86_64. Конфликт заключается в том, что 1С требует устаревшую версию пакета libwebkitgtk-3.0.so.0()(64bit), запрещенную из-за проблем безопасности, и не может работать с актуальной версией пакета webkit2gtk3. Гуглить в интернете можно долго, хочу поделиться с Вами уже найденным рабочим решением в конце данной статьи.

08.03.2021    8811    ksnik    56    

Интеграция с API WB (Wildberries). Создание карточки товара (спецификации)

WEB v8 1cv8.cf ИТ-компания Россия Бесплатно (free)

Опыт интеграции с API WB (Wildberries), опыт создания карточки товара, получение токенов API WB.

18.01.2021    49511    jenyavp    66    

HTML редактор/editor (Wysiwyg) для WebKit 1С (CMS, B2B), альтернатива TinyMCE и стандартному ФорматированныйДокумент

WEB v8 v8::УФ 1cv8.cf Бесплатно (free)

Suneditor - отличная замена HTML редактору TinyMCE (бесплатному), в публикации с открытым кодом подключим его в 1С с WebKit, скачать HTMLeditor обработку можно бесплатно.

28.12.2020    5213    SizovE    25    

Выгрузка HTML описаний с картинками (Base64) товаров на сайт/интернет-магазин/B2B, разберем регулярное выражение получения тега body, ПолучитьHTML, ФорматированныйДокумент

WEB v8 v8::УФ 1cv8.cf Бесплатно (free)

Редактор HTML платформы 1С простой и очень удобный для небольших задач, однако ПолучитьHTML возвращает отдельно картинки и отдельно целиком HTML страницу со ссылкой на имена этих картинок, что неудобно для отправки в базу данных сайта/интернет-магазина/веб-приложения/B2B. Разберем на открытом коде, как решить эту проблему, напишем универсальную функцию получения значения любого тега HTML на регулярных выражениях. Бонусом - возможность редактировать теги HTML в текстовом режиме.

24.11.2020    1739    SizovE    4    

Как сделать интеграцию (обмен) с интернет-магазином? Пошаговый план действий (Часть 1)

WEB v8 1cv8.cf УУ Бесплатно (free)

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

19.11.2020    11806    markbraer    14