Отправка файлов через SOAP. SOAP with attachments, MTOM

Публикация № 1045578

Разработка - Системная интеграция - Интеграция с WEB

SOAP with Attachments MTOM веб сервисы

В продолжение «своеобразной» поддержки 1С протокола SOAP, описанной в https://infostart.ru/public/965259/, опишу еще одну особенность. 1С не поддерживает возможность отправки файлов-вложений. Для решения этой проблемы пришлось самостоятельно писать формирование пакетов SOAP и разбор ответов сервера.

Была задача сделать обмен 1С с  электронной торговой площадкой B2B-Center (https://www.b2b-center.ru/). У площадки есть SOAP интерфейс, но передача файлов поддерживается только по протоколу MTOM. Описание этого протокола есть здесь https://www.w3.org/TR/SOAP-attachments и здесь https://www.soapui.org/docs/soap-and-wsdl/attachments.html.

Если говорить кратко, то запрос SOAP представляет из себя HTTP POST запрос, в теле которого расположены данные в формате XML. Данные запрос представляют собой «конверт», содержащий заголовок запроса и тело запроса.  Если нужно отправить файл, то все сообщение оформляется multipart, одной частью является SOAP запрос, а файлы прикладываются как остальные части.


                                                         

 

Будем считать, что wsdl ссылка у нас успешно импортирована и мы может создавать XDTO объекты для обмена.

Местоположение = "https://demo.b2b-center.ru/market/remote_alternative.html";
URIПространстваИмен = "urn:ws";
ИмяСервиса = "ws";
ИмяТочкиПодключения = "wsPort";
АдресWSDL =  Местоположение + "?wsdl";
ИнтернетПрокси = ПолучениеФайловИзИнтернетаКлиентСервер.ПолучитьПрокси(АдресWSDL);
Таймаут = 120;
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL;

WSПрокси = WSСсылки.WS_B2B_Center.СоздатьWSПрокси(URIПространстваИмен, ИмяСервиса, ИмяТочкиПодключения,
        ИнтернетПрокси, Таймаут, ЗащищенноеСоединение, Местоположение);

WSПрокси.Пользователь = "ИмяПользователя";
WSПрокси.Пароль       = "Пароль";


// отправка запроса без файлов
                ТипАвторизация      = WSПрокси.ФабрикаXDTO.Тип(URIПространстваИмен, "auth_info");
                ТипВнешнийИД        = WSПрокси.ФабрикаXDTO.Тип(URIПространстваИмен, "external_id");        
                Авторизация         = WSПрокси.ФабрикаXDTO.Создать(ТипАвторизация);
                
                Авторизация.token   = "Билет";
                ВнешнийИД           = WSПрокси.ФабрикаXDTO.Создать(ТипВнешнийИД);
                
                ВнешнийИД.id        = "Идентификатор";
                ВнешнийИД.type      = 0;
                
                Этап                = 0; //Номер этапа, 0 - основной, 1 - первая переторжка, 2 - вторая переторжка и т.д
                                
                ВходныеПараметры = Новый Структура;
                ВходныеПараметры.Вставить("auth",Авторизация);
                ВходныеПараметры.Вставить("auction_id",ИД_Аукциона);
                ВходныеПараметры.Вставить("external_id",ВнешнийИД);
                
                ВыходныеПараметры = Новый Структура;
                ВыходныеПараметры.Вставить("return","ret_auction_position");
                
                // получим данные по позициям от площадки для связки позиций в 1С и на площадке
                ОтветСервера = ОтправитьSOAPЗапрос(WSПрокси,URIПространстваИмен,"getPositions","RemoteAuction_getPositions",ВходныеПараметры,ВыходныеПараметры);
Успешно = (Число(ОтветСервера.status.error_code) = 0);                
Если НЕ Успешно Тогда
         ВызватьИсключение ОтветСервера.status.error_message;    
КонецЕсли;  


// отправка запроса с вложенными файлами
    СвязанныеФайлы  =   СвязанныеФайлыВызовСервера.СвязанныеФайлыПоВладельцу(Ссылка);

    Для каждого Файл Из СвязанныеФайлы Цикл
        Если ТипЗнч(Файл.Файл) <> Тип("СправочникСсылка.Файлы")  Тогда
            Продолжить;	
        КонецЕсли; 
        
        ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляОткрытия(Файл.Файл, Неопределено, Неопределено, Неопределено, Неопределено);	
        
        // отправить файл
        // отправляем файлы по одному, чтобы можно было отправлять файлы максимального размера                    
        Хеш = Новый ХешированиеДанных(ХешФункция.MD5);
        Хеш.Добавить(ПолучитьИзВременногоХранилища(ДанныеФайла.СсылкаНаДвоичныеДанныеФайла));
        
        ИмяФайла     =   WSПрокси.ФабрикаXDTO.Создать(ТипИмяФайла);
        ИмяФайла.filename   = СтрШаблон("%1.%2",ДанныеФайла.Наименование,ДанныеФайла.Расширение);
        ИмяФайла.md5        = ПолучитьHexСтрокуИзДвоичныхДанных(Хеш.ХешСумма);    
        
        МассивФайлов = Новый Массив;
        МассивФайлов.Добавить(ДанныеФайла);
        
        Действие = "uploadDoc";
        Метод = "RemoteAuction_uploadDoc";
        
        ВходныеПараметры = Новый Структура;
        ВходныеПараметры.Вставить("auth",Авторизация);
        ВходныеПараметры.Вставить("auction_id",ИД_Аукциона);
        ВходныеПараметры.Вставить("external_id",ВнешнийИД);
        ВходныеПараметры.Вставить("type","docs");
        ВходныеПараметры.Вставить("append_mode",1);
        ВходныеПараметры.Вставить("attachment_name",ИмяФайла);      
        
        ВыходныеПараметры = Новый Структура;
        ВыходныеПараметры.Вставить("return","ret_status");
        
        ОтветСервера = ОтправитьSOAPЗапросСФайлами(WSПрокси,URIПространстваИмен,Действие,Метод,ВходныеПараметры,МассивФайлов,ВыходныеПараметры);                                    
        
        Успешно = (Число(ОтветСервера.status.error_code) = 0);
        Если НЕ Успешно Тогда
            ВызватьИсключение ОтветСервера.status.error_message;	
        КонецЕсли;         	
       
   КонецЦикла;








     /// ---------------------------------------------------------------------------------------------------------- 
// Работа с SOAP

Функция ОтправитьSOAPЗапрос(WSПрокси,URIПространстваИмен,Действие,Метод,ВходныеПараметры,ВыходныеПараметры)
    
    Результат = Неопределено;
    
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("Content-Type",  "text/xml;charset=UTF-8");
    Заголовки.Вставить("SOAPAction",    СтрШаблон("%1#%2",URIПространстваИмен,Действие));

    ПространствоИменSOAP = "http://schemas.xmlsoap.org/soap/envelope/";
        
    // формируем конверт    
    ТелоЗапросаSOAP =  СформироватьКонвертSOAP(WSПрокси,URIПространстваИмен,Метод,ВходныеПараметры);    
 
    
    HTTPЗапрос = Новый HTTPЗапрос("/market/remote_alternative.html", Заголовки);
    HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапросаSOAP, "UTF-8");
    
    ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(, Новый СертификатыУдостоверяющихЦентровОС);   
    ПроксиСервер = Новый ИнтернетПрокси(Истина);     
    
    // https://demo.b2b-center.ru/market/remote_alternative.html
    HTTPСоединение = Новый HTTPСоединение("demo.b2b-center.ru",,,,ПроксиСервер,120,ЗащищенноеСоединение); 
    HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
    //
    ОтветСервера =  HTTPОтвет.ПолучитьТелоКакСтроку();
    
    // Обработка результата
    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.УстановитьСтроку(ОтветСервера);
    
    Результат = Новый Структура;
    
    Пока ЧтениеXML.Прочитать() Цикл        
        Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
            ИмяЭлемента = СтандартныеПодсистемыСервер.ПреобразоватьСтрокуВДопустимоеНаименованиеКолонки(ЧтениеXML.Имя);
            Если ВыходныеПараметры.Свойство(ИмяЭлемента) Тогда
                ТипОтвета = WSПрокси.ФабрикаXDTO.Тип(URIПространстваИмен,ВыходныеПараметры[ИмяЭлемента]);
                РезультатXDTO = WSПрокси.ФабрикаXDTO.ПрочитатьXML(ЧтениеXML,ТипОтвета);
                Если ТипЗнч(РезультатXDTO) = Тип("ОбъектXDTO") Тогда
                    //Результат = ОбъектXDTOВСтруктуру(РезультатXDTO);
                    Результат = РезультатXDTO;
                    Прервать;
                КонецЕсли;
            КонецЕсли; 
        КонецЕсли; 
    КонецЦикла; 
    
    ЧтениеXML.Закрыть();
        
    Возврат Результат;
    
КонецФункции
 
Функция ОтправитьSOAPЗапросСФайлами(WSПрокси,URIПространстваИмен,Действие,Метод,ВходныеПараметры,СписокФайлов,ВыходныеПараметры)
    
    Результат = Неопределено;
    
    Разделитель = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", ""); 
    
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("Content-Type",  "text/xml;charset=UTF-8");
    Заголовки.Вставить("Content-Type",СтрШаблон("multipart/related; type=""text/xml""; boundary=""%1""",Разделитель));
    Заголовки.Вставить("SOAPAction",    СтрШаблон("%1#%2",URIПространстваИмен,Действие));
    
    // формируем конверт    
    ТелоЗапросаSOAP =  СформироватьКонвертSOAP(WSПрокси,URIПространстваИмен,Метод,ВходныеПараметры);    
    
    ПотокТелоЗапроса = Новый ПотокВПамяти();
    ЗаписьДанных = Новый ЗаписьДанных(ПотокТелоЗапроса);
    ЗаписьДанных.ЗаписатьСтроку(СтрШаблон("--%1",Разделитель));
    ЗаписьДанных.ЗаписатьСтроку("Content-Type: text/xml; charset=UTF-8");
    ЗаписьДанных.ЗаписатьСтроку("Content-Transfer-Encoding: 8bit");
    ЗаписьДанных.ЗаписатьСтроку("");

    ЗаписьДанных.ЗаписатьСтроку(ТелоЗапросаSOAP);

    // добавляем файлы
    Для каждого ДанныеФайла Из СписокФайлов Цикл
        
        ДопустимоеНаименованиеФайла = СтандартныеПодсистемыСервер.ПреобразоватьСтрокуВДопустимоеНаименованиеКолонки(ДанныеФайла.Наименование);
        ДопустимоеРасширениеФайла = СтандартныеПодсистемыСервер.ПреобразоватьСтрокуВДопустимоеНаименованиеКолонки(ДанныеФайла.Расширение);
        //ДопустимоеНаименованиеФайла = ДанныеФайла.Наименование;
        //ДопустимоеРасширениеФайла = ДанныеФайла.Расширение;        
        ИмяФайла   = СтрШаблон("%1.%2",ДопустимоеНаименованиеФайла,ДопустимоеРасширениеФайла);
        ЗаписьДанных.ЗаписатьСтроку(СтрШаблон("--%1",Разделитель));
        ЗаписьДанных.ЗаписатьСтроку(СтрШаблон("Content-Type: application/octet-stream; name=""%1""",ИмяФайла));
        ЗаписьДанных.ЗаписатьСтроку("Content-Transfer-Encoding: binary");
        ЗаписьДанных.ЗаписатьСтроку(СтрШаблон("Content-ID: <%1>",ИмяФайла));
        ЗаписьДанных.ЗаписатьСтроку(СтрШаблон("Content-Disposition: attachment; name=""%1""; filename=""%1""",ИмяФайла));
        ЗаписьДанных.ЗаписатьСтроку("");
        
        ЗаписьДанных.Записать(ПолучитьИзВременногоХранилища(ДанныеФайла.СсылкаНаДвоичныеДанныеФайла));        
        
    КонецЦикла; 
    
    
    ЗаписьДанных.Закрыть();
    
    
    HTTPЗапрос = Новый HTTPЗапрос("/market/remote_alternative.html", Заголовки);
    РазмерСообщения = ПотокТелоЗапроса.Размер();
    ДвоичныеДанныеТело = ПотокТелоЗапроса.ЗакрытьИПолучитьДвоичныеДанные();
    
    Заголовки.Вставить("Content-Length",XMLСтрока(РазмерСообщения));
    
    HTTPЗапрос.УстановитьТелоИзДвоичныхДанных(ДвоичныеДанныеТело);    
    
    ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(, Новый СертификатыУдостоверяющихЦентровОС);   
    ПроксиСервер = Новый ИнтернетПрокси(Истина);     
    
    // https://demo.b2b-center.ru/market/remote_alternative.html
    HTTPСоединение = Новый HTTPСоединение("demo.b2b-center.ru",,,,ПроксиСервер,120,ЗащищенноеСоединение); 
    HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
    //
    ОтветСервера =  HTTPОтвет.ПолучитьТелоКакСтроку();
    
    // Обработка результата
    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.УстановитьСтроку(ОтветСервера);
    
    Результат = Новый Структура;
    
    Пока ЧтениеXML.Прочитать() Цикл        
        Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
            ИмяЭлемента = СтандартныеПодсистемыСервер.ПреобразоватьСтрокуВДопустимоеНаименованиеКолонки(ЧтениеXML.Имя);
            Если ВыходныеПараметры.Свойство(ИмяЭлемента) Тогда
                ТипОтвета = WSПрокси.ФабрикаXDTO.Тип(URIПространстваИмен,ВыходныеПараметры[ИмяЭлемента]);
                РезультатXDTO = WSПрокси.ФабрикаXDTO.ПрочитатьXML(ЧтениеXML,ТипОтвета);
                Если ТипЗнч(РезультатXDTO) = Тип("ОбъектXDTO") Тогда
                    //Результат = ОбъектXDTOВСтруктуру(РезультатXDTO);
                    Результат = РезультатXDTO;
                    Прервать;
                КонецЕсли;
            КонецЕсли; 
        КонецЕсли; 
    КонецЦикла; 
    
    ЧтениеXML.Закрыть();
        
    Возврат Результат;
    
КонецФункции

Функция СформироватьКонвертSOAP(WSПрокси,URIПространстваИмен,Метод,ВходныеПараметры)
    
    ПространствоИменSOAP = "http://schemas.xmlsoap.org/soap/envelope/";
    
    Пакет = WSПрокси.ФабрикаXDTO.Пакеты.Получить(URIПространстваИмен);
    СвойствоXDTOМетод = Пакет.КорневыеСвойства.Получить(Метод);
    
    // формируем конверт
    ЗаписьXML = Новый ЗаписьXML;
    ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML("UTF-8");
    ЗаписьXML.УстановитьСтроку(ПараметрыЗаписиXML);
    ЗаписьXML.ЗаписатьОбъявлениеXML();
    ЗаписьXML.ЗаписатьНачалоЭлемента("Envelope", ПространствоИменSOAP);
    ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("soap", ПространствоИменSOAP);
    ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xs", "http://www.w3.org/2001/XMLSchema");
    ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
    ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("urn", URIПространстваИмен);
    ЗаписьXML.ЗаписатьНачалоЭлемента("Header", ПространствоИменSOAP);
    ЗаписьXML.ЗаписатьКонецЭлемента();
    ЗаписьXML.ЗаписатьНачалоЭлемента("Body", ПространствоИменSOAP);
    ЗаписьXML.ЗаписатьНачалоЭлемента(СвойствоXDTOМетод.ЛокальноеИмя, URIПространстваИмен);
    Для каждого Элемент Из ВходныеПараметры Цикл
        Если ТипЗнч(Элемент.Значение) <> Тип("ОбъектXDTO") Тогда
            Значение = ЗначениеТипаВЗначениеXDTO(Элемент.Значение);
        Иначе
            Значение = Элемент.Значение;
        КонецЕсли;    
        WSПрокси.ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, Значение, Элемент.Ключ, URIПространстваИмен);   
    КонецЦикла; 
    ЗаписьXML.ЗаписатьКонецЭлемента();
    ЗаписьXML.ЗаписатьКонецЭлемента();
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
    Возврат ЗаписьXML.Закрыть();    
    
КонецФункции

 

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. vano-ekt 841 19.04.19 08:16 Сейчас в теме
2. YPermitin 9708 20.04.19 20:46 Сейчас в теме
(0) Спасибо за полезный материал!
3. Kyrales 136 23.07.20 08:57 Сейчас в теме
Добрый день. Подскажите. У вас в статье приведен код. Но нет в нем информации по функции ЗначениеТипаВЗначениеXDTO(). Не могли бы вы код по этой функции скинуть?
4. mysm 45 23.07.20 23:34 Сейчас в теме
(3)
Функция ЗначениеТипаВЗначениеXDTO(знач ЗначениеТипа)
	Если ТипЗнч(ЗначениеТипа) = Тип("Строка") Тогда
		ТипXDTO = ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string");
	ИначеЕсли ТипЗнч(ЗначениеТипа) = Тип("Булево") Тогда		  
		ТипXDTO = ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "boolean");
	ИначеЕсли ТипЗнч(ЗначениеТипа) = Тип("Дата") Тогда 
		ТипXDTO = ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "date");	
	ИначеЕсли ТипЗнч(ЗначениеТипа) = Тип("Число") Тогда 
		ТипXDTO = ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "integer");	
	КонецЕсли; 	
	Возврат ФабрикаXDTO.Создать(ТипXDTO, ЗначениеТипа);	
КонецФункции
Показать
Оставьте свое сообщение

См. также

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

Практика программирования WEB v7.7 v8 Бесплатно (free)

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

10.03.2016    55749    Serginio    33    

Интеграционная прослойка(middleware) на Golang. Часть 5 - Обмен с 1С через HTTP-сервисы платформы

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

В этой статье научим прослойку отправлять данные в 1С, для этого используем HTTP-сервисы платформы. Обменяемся данными с новым справочником Клиенты. Но главное создадим HTTP-сервис для получения сообщений из очереди RabbitMQ.

сегодня в 09:30    6    dmitry-irk38    0    

Отладка http сервиса

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

При разработке http сервиса возникает ситуация, а как протестировать http сервис? Создали мы сервис, настроили шаблоны, передали, если нужно параметры, открываем браузер заполняем строку подключения и БАХ, ошибка. Что делать?

23.09.2020    740    hpi    3    

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

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

Пошаговое руководство по созданию http-сервиса (часть вторая). Передача параметра в http сервис.

22.09.2020    2110    hpi    4    

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

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

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

10.03.2017    25852    ruha    14    

Организация данных и вариант обработки для организации обмена с сайтом

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

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

22.09.2020    413    malikov_pro    4    

Формирование списка документов и скачивание печатной формы документа через веб-сайт с использованием HTTP-сервиса, плюс особенности авторизации

Практика программирования Обмен данными 1С WEB v8 1cv8.cf Бесплатно (free)

В статье показан пример, как реализовать формирование списка документов клиента/пользователя по коду, а затем скачать его (документа) печатную форму по ссылке

18.09.2020    432    R_o_n_n_y    0    

Формирование HTTP запроса формата multipart/form-data с двоичными данными, используя ПотокВПамяти

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

В статье опишу вариант формирования запроса

11.09.2020    1871    malikov_pro    11    

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

Практика программирования Перенос данных из 1С7.7 в 1C8.X Внешние источники данных WEB v8 Россия Бесплатно (free)

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

11.04.2013    41242    YPermitin    41    

Ферма приложений на Kubernetes

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

При эксплуатации большого количества информационных систем 1С, предоставляющих интернет-сервисы, возникают проблемы, связанные с зависимостью от производительности и стабильности веб-сервера. Как объединить отдельно стоящие веб-сервера с помощью платформы Kubernetes для централизованного мониторинга всех опубликованных интернет-сервисов на конференции Infostart Event 2019 Inception рассказал программист компании BIA Technologies Владимир Кирбаба.

24.08.2020    819    ComboBoy    0    

Использование шаблонного процессора для формирования HTML страниц

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

В статье опишу использование шаблонного процессора Handlebars запущенного на Node.js

24.08.2020    1302    malikov_pro    26    

Загрузка или обновление файла на яндекс диске через rest-api

Практика программирования Файловые протоколы обмена, FTP WEB v8 Бесплатно (free)

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

12.08.2020    1422    pavelpribytkin96    10    

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

WEB Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

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

03.06.2013    30444    anig99    6    

Самый простой парсинг и обработка веб-страниц в 1С

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

Рассмотрим самый простой парсинг веб-страниц средствами платформы 1С и еще некоторые полезные приемы работы с веб-страницами.

07.08.2020    4218    YPermitin    18    

Загрузка или обновление файла на гугл диске

Практика программирования Файловые протоколы обмена, FTP WEB v8 1cv8.cf Бесплатно (free)

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

06.08.2020    1129    pavelpribytkin96    0    

Использование Yandex Translate (Яндекс.Переводчик)

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

В статье опишу вариант подключения и использования Yandex Translate.

08.07.2020    1961    malikov_pro    6    

Когда хотим знать IP клиента...

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

В процессе разработки web приложения на 1С, и это не шутка))), а пожелание заказчика, возникла ситуации когда понадобилось знать, с какого IP подключался клиент.

03.07.2020    2897    IMihalev    10    

Ограничение доступа к HTTP публикациям 1С сервера используя NGINX

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

В статье опишу вариант ограничения доступа к HTTP публикациям 1С сервера используя NGINX.

02.07.2020    6012    malikov_pro    0    

Структура обработки загрузки цен и остатков поставщика с примерами и комментариями

Внешние источники данных WEB v8 1cv8.cf Россия Бесплатно (free)

В статье опишу структуру обработки по загрузке цен и остатков от поставщика с примерами.

27.06.2020    1555    malikov_pro    0    

Вариант использования документа "Операция по Яндекс.Кассе" для других сервисов по оплате через интернет

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

В статье рассмотрю организацию эквайринга в УТ 11.4 и доработки для создания заказов на оплату к стороннему сервису, как пример Сбербанк.

24.06.2020    1121    malikov_pro    3    

Работа с AliExpress через API

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

В публикации опишу подход работы с API AliExpress и примеры кода.

23.06.2020    3301    malikov_pro    12    

История создания успешной системы чат-ботов на 1С

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

Использование чат-ботов в мессенджерах позволяет автоматизировать многие сложные бизнес-процессы путем диалога с системой через виртуального собеседника. О том, как создать универсальную систему ботов с бэкендом на 1С, работающую в Telegram, Viber и Facebook Messenger одновременно, на конференции Infostart Event 2019 Inception рассказал программист-фрилансер Константин Гейнрих.

21.05.2020    6839    CyberCerber    14    

Парсинг html страниц с выводом информации через JavaScript с использованием Selenium

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

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

20.05.2020    3336    platonov.e    25    

Интеграция 1С и CMS WordPress посредством Rest API сайта. Шаг третий, WooCommerce, публикация категорий товаров

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

Интеграция 1С и CMS WordPress посредством функционала Rest API. Используем только язык программирования 1С и штатный функционал Rest API предоставляемый CMS, без дополнительных библиотек и плагинов. Процедуры и функции публикации категорий товаров в магазин WooCommerce, с комментариями внутри.

13.05.2020    2831    osivv    3    

Интеграция 1С и CMS WordPress посредством Rest API сайта. Шаг второй, публикация картинок

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

Интеграция 1С и CMS WordPress посредством функционала Rest API. Используем только язык программирования 1С и штатный функционал Rest API предоставляемый CMS, без дополнительных библиотек и плагинов. Процедуры и функции передачи фото из 1С, с комментариями внутри.

13.05.2020    2071    osivv    0    

Интеграция Camunda BPM и 1С

WEB Интеграция v8 Бесплатно (free)

Быстрый старт. Только практические примеры. Установка, запуск и публикация бизнес-процесса на сервере Camunda BPM. Управление бизнес-процессами из 1С при помощи Camunda REST API.

12.05.2020    3490    zhichkin    19    

Интеграция 1С и CMS WordPress посредством Rest API сайта. Первый шаг

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

Интеграция 1С и CMS WordPress посредством функционала Rest API. Используем только язык программирования 1С и штатный функционал Rest API предоставляемый CMS, без дополнительных библиотек и плагинов. Процедуры и функции 1С с комментариями внутри.

28.04.2020    4152    osivv    23    

Выразительный Web API

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

Теория разработки Web API с ожидаемым поведением, за который не будет стыдно за пределами мира 1С.

27.04.2020    6018    nbeliaev    22    

Хранение статистики публикаций автора сообщества Инфостарт ® (мобильное приложение И ++)

Мобильная разработка WEB v8 1cv8.cf Бесплатно (free)

Инфостарт ® достаточно удобный в плане работы со своим личным кабинетом сайт. Но программисты тем и отличаются от большинства людей, что им хочется знать больше. Поэтому появилась конфигурация 1С (она же мобильное приложение 1С) для более подробного учета статистики публикаций: рейтинг, количество просмотров, количество комментариев в динамике и в разрезах.

24.04.2020    2291    capitan    15    

Интеграция УАТ с топливными сервисами

WEB v8 1cv8.cf Автомобили, автосервисы Бесплатно (free)

Интеграция конфигурации Управление автотранспортом с топливными веб-сервисами.

21.04.2020    7192    RPGrigorev    2    

Интеграция 1С с веб-сервисами Лукойл ЛИКАРД

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

Описание интерфейса взаимодействия сервиса Лукойл- ЛИКАРД с информационной системой 1С.

20.04.2020    3882    RPGrigorev    0    

Ошибка инициализации модуля: HTTPСервис

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

Решение проблемы "Ошибка при работе с HTTP сервисом 500. Ошибка инициализации модуля".

13.04.2020    3028    VipDim    10    

COVID-19. Динамика эпидемии

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

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

01.04.2020    3258    Alejandro_V    6    

Как я собрал для себя высокопроизводительный и бесплатный облачный бекенд для 1С на PosgreSQL + PostgREST

Производительность и оптимизация (HighLoad) WEB Интеграция Мобильная разработка Администрирование веб-серверов v8 Бесплатно (free)

В этой статье я расскажу о проблемах бека для мобильных приложений или другого фронта, который требует производительности, быстрой реакции и отказоустойчивости, и как я решил это благодаря opensource проекту PostgREST и СУБД Postgre SQL 12. Проведу простой тест производительности для сравнения 1С с данным решением. Это может быть полезно всем, кто разрабатывает мобильные приложения либо фронтсайд-приложения для 1С на чем угодно - на мобильной платформе или на нативном языке или на Simple UI. И также обзор новых функций SimpleUI для связи с этим бекендом.

31.03.2020    12576    informa1555    31    

Коронавирус COVID-19. Статистика по странам

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

В связи с COVID-19 люди поделились на две категории: те, кто осознал, и те кто ЕЩЕ не осознал. Единственное наше преимущество перед Коронавирусом заключается в том, что информация распространяется быстрее, чем расползается "невидимка".

25.03.2020    6251    Evgen.Ponomarenko    60    

Получение html-кода страницы. JS из 1С

Практика программирования WEB v8 Бесплатно (free)

Получение исходника страницы, выполнение произвольного js-кода. Теперь с WebKit от 1С.

18.02.2020    6157    Yashazz    1    

Отладка конфигурации в режиме веб-клиента

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

После очередного обновления платформы при попытке запуска отладки в веб-клиенте стало появляться сообщение. Собственно, до этого момента никогда веб-клиентом особо не пользовался и необходимости в отладке как-то не возникало. Данное сообщение заставило задуматься, что не так с отладкой в веб-клиенте и как ее собственно включить? Тот самый неловкий момент, когда программа просит обратиться к администратору, а администратор - это вы.

12.02.2020    4846    gamletspb    3    

Анализ работы внешней обработки сервиса МодульКасса применительно к задаче фискализации чеков при доставке

Кассовые операции WEB v8 УТ11 Россия Бесплатно (free)

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

11.02.2020    2697    malikov_pro    0    

Вариант реализации работы с сервисом Dadata применительно к конфигурации УТ 11.4 и подобным

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

В статье описывается реализация получения данных с сервиса DaData при работе с формами справочников в конфигурации УТ 11 для дополнения информации по ФИО, ИНН, Адресу.

22.01.2020    3208    malikov_pro    7    

Двусторонний обмен с поставщиком через интернет-магазин для реализации товаров с ответственного хранения (с 01.02.2020 "Партии" не используются)

Файловые протоколы обмена, FTP WEB v8 УНФ Оптовая торговля, дистрибуция, логистика Россия УУ Бесплатно (free)

Рассмотрены реализация двустороннего обмена данными с использованием API-сервиса сайта поставщика при продаже товаров со склада ответственного хранения, алгоритм движения товаров и обмена документами на примере конфигурации 1С: УНФ у партнера, который взаимодействует с поставщиком "ООО Пауэр-Интернэшнл-шины" - одним из крупнейших в России поставщиков автомобильных шин и дисков.

16.01.2020    4386    chkurs    0    

Получение номера ВСД по идентификатору 1С: Меркурий

Производство готовой продукции (работ, услуг) WEB v8 УТ11 Пищевая промышленность Россия Бесплатно (free)

Код парсинга веб страницы для получения номера ВСД в системе Меркурий.

24.11.2019    4400    ohyen    0    

Немного о интеграции с CRM AMO

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

Немного информации о том, как настроить интеграцию с CRM AMO. Пример функций для подключения к АМО и обновления заказа. Пример на основе API авторизации.

15.11.2019    4430    xxxAndricxxx    6    

Ещё немного о ИНН и сервисе DaData

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

Об использовании сервиса dadata и немного информации о возможностях получать данные по ИНН. Возможно, кому-то будет полезным.

14.11.2019    7237    xxxAndricxxx    21    

Вариант реализации клиента SOAP на примере получения остатков из MERLION

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

В статье приведу пример клиента к сервису SOAP, функции которого принимают несколько значений типа строка или массив строк.

14.11.2019    3489    malikov_pro    0