Загружаем картинки товаров в Битрикс24 через REST API

17.10.17

Интеграция - Внешние источники данных

Пример обработки для загрузки и выгрузки картинки товара из Битрикс24 через REST API.

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

Наименование Файл Версия Размер
Загружаем картинки товаров в Битрикс24 через REST API
.epf 10,51Kb
32
.epf 1 10,51Kb 32 Скачать

В продолжении к статье решил разобраться с загрузкой изображений товара в Битрикс24. Были вопросы на эту тему в обсуждении да и сам решил не ждать, пока срочно не понадобится. Так-как по опыту уже знаю, что документации минимум и не все сразу понятно.

И так. Есть товар товар, необходимо загрузить детальную картинку.

В обработке задаю параметры подключения. Где взять client_id, client_secret описано здесь

Параметры подключения

Жмем "Загрузить картинку из файла", выбираем картинку для загрузки.  Необходимо указать ИД товара (смотрим его на форме)

ID товара

ID товара в Битрикс24

ID товара в Битрикс24

 

После чего жмем "Отправить картинку в битрикс". И смотрим результат.

Результат

 

Теперь немного кода. Как передавать картинку нашел в инструкции. Для файла будет сформирована очень длинная строка, которую через метод GET уже не передать. Используем POST.

Функция ОтправитьКартинкуТовара(ИДТовара, Адрес, ИмяФайла) Экспорт
	
	Если ИДТовара = "" Тогда
		Возврат "";
	КонецЕсли;
	
	
	Картинка = ПолучитьИзВременногоХранилища(Адрес);
	СтрокаBase64 = Base64Строка(Картинка.ПолучитьДвоичныеДанные());
	СтрокаBase64 = КодироватьСтроку(СтрокаBase64, СпособКодированияСтроки.КодировкаURL);

	Рез = ОтправитьRESTЗапросPOST("crm.product.update", "id=" + ИДТовара + "&fields[DETAIL_PICTURE][fileData][0]=" + ИмяФайла + "&fields[DETAIL_PICTURE][fileData][1]=" + СтрокаBase64, "");
	
	Возврат "";
	
КонецФункции

И сама функция отправки POST-запроса

Функция ОтправитьRESTЗапросPOST(RESTЗапрос, Параметры, Тело)
	
	ПроверитьТокен();
	
	
	ssl = Новый ЗащищенноеСоединениеOpenSSL(
				//Новый СертификатКлиентаWindows(
				//                СпособВыбораСертификатаWindows.Выбирать),
				Новый СертификатКлиентаWindows(),
                Новый СертификатыУдостоверяющихЦентровWindows());   
                         
	Соединение = Новый HTTPСоединение(
                            АдресБитрикс24,
							, // порт
							, // пользователь
							, // пароль
							, // прокси
                            60, // таймаут в секундах
                            ssl // защищенное HTTPS соединение
                        );
						
	Заголовки = Новый Соответствие;
	Заголовки.Вставить("Cookie", Cookie);

	Запрос = Новый HTTPЗапрос("rest/" + RESTЗапрос, Заголовки);											
	
	Если Параметры = "" Тогда
		ТелоСтрока = "auth=" + AccessToken;		
	Иначе
		ТелоСтрока = "auth=" + AccessToken + "&" + Параметры;
	КонецЕсли;
	
	Запрос.УстановитьТелоИзСтроки(ТелоСтрока, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
			
	Ответ = Соединение.ОтправитьДляОбработки(Запрос);

	РезСтр = Ответ.ПолучитьТелоКакСтроку();
	
	Чтение = Новый ЧтениеJSON;
	Чтение.УстановитьСтроку(РезСтр);
	
	Отв = ПрочитатьJSON(Чтение);

	Возврат Отв;
	
КонецФункции

 

Как подключиться к Битрикс24 и получить токен все описано в предыдущей статье.

Бонусом в обработку добавил пример, как скачать  картинку товара из Битрикс24. Тут намного попроще. В описании товара возвращается ссылка на картинку. По этой ссылке качаем файл изображения.

Функция ПолучитьКартинкуТовара(ИДТовара) Экспорт
	
	Рез = ОтправитьRESTЗапрос("crm.product.get", "id=1", ""); 
	
	Если Рез.Свойство("result") И Рез.result.Свойство("DETAIL_PICTURE") И Рез.result.DETAIL_PICTURE.Свойство("downloadUrl") Тогда
		
		ИмяВремФайла = ПолучитьИмяВременногоФайла();
		
		
		КопироватьФайл("https://" + АдресБитрикс24 + Рез.result.DETAIL_PICTURE.downloadUrl, ИмяВремФайла);
			
			
		Попытка
			
			Картинка = Новый Картинка(ИмяВремФайла);
			
		Исключение
		
		КонецПопытки;
		
		УдалитьФайлы(ИмяВремФайла);
		
		Возврат Картинка;
		
	Иначе
		
		Возврат Неопределено;
		
	КонецЕсли;
	
	
	
КонецФункции

 

Обработка тестировалась в УНФ 1.6.10.50. Должна работать в любой конфигурации, созданной под УФ на 8.3.

Битрикс24 REST API bitrix24

См. также

Перенос данных из Парус 10 в ЗГУ ред.3

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9155    9    8    

10

Перенос данных из Парус 8 в ЗГУ 3

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

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 8 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

84000 руб.

19.08.2020    22350    18    1    

21

Автоматическая многопоточная выгрузка данных 1С 8.3 в БД Clickhouse и MS SQL (для работы с данными 1С в BI-системах)

Внешние источники данных Платформа 1С v8.3 Управляемые формы Анализ и прогнозирование Конфигурации 1cv8 Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

Готовое решение для автоматизированной выгрузки данных из 1С 8.3, а также MS Excel в базу данных ClickHouse, а также в Microsoft SQL для работы с данными 1С в Yandex Datalens, Visiology, Apache Superset (и не только) - "Экстрактор данных 1С в BI". Решение отлично работает со всеми типовыми (и не только) конфигурациями 1С 8.3 для управляемых форм. Gозволяет автоматизировать работу бизнес-аналитика по ежедневной выгрузке данных из 1С в БД ClickHouse для последующей работы с этой БД в Yandex Datalens/ Система полностью автоматизирует работу с хранилищем данных в БД Clickhouse/MS SQL. Не надо быть программистом, чтобы одной кнопкой получать любые данные из 1С в Вашей BI-системе

230000 руб.

15.11.2022    12910    11    47    

28

Перенос данных из Парус 7.хх в ЗГУ ред.3

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

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 7.хх учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

24000 руб.

24.04.2017    48628    96    159    

86

Перенос начальных остатков из Парус 7.71 в БГУ

Внешние источники данных Взаиморасчеты Учет ОС и НМА Логистика, склад и ТМЦ Бюджетный учет Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 2.0 1С:Бухгалтерия государственного учреждения Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Перенос словарей и начальных остатков из ПП Парус-Бухгалтерия Бюджет 7.71 в 1Сv8 БГУ2. Заполнение словарей и документов по вводу начальных остатков. Не требуется установка ПП Парус7. Возможна дозагрузка. Позволит автоматически и наиболее полно ввести данные в программу для начала работы. 

15600 руб.

08.12.2011    81471    128    123    

146

Перенос данных из Парус 10 (Торнадо) в ЗГУ ред.3 через Excel

Внешние источники данных Загрузка и выгрузка в Excel Зарплата Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате из Парус 10(Торнадо) учреждений через файлы Excel в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ). В принципе, обработка может быть использована для загрузки из файлов Excel, полученных из любых информационных систем.

24000 руб.

16.11.2018    29979    20    31    

21
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. isaev2016 07.11.17 04:24 Сейчас в теме
А можно ли работать с файлами в других сущностях - например - "Коммерческое предложение" или "Счет". Пока нашел в описании только у задач.
2. user662672_explorer2000 225 07.11.17 07:36 Сейчас в теме
Смотрим в документацию, если у задач есть метод task.item.addfile, то у счетов и коммерческих предложений ничего подобного нет. У коммерческого предложения есть товарные позиции, которые в свою очередь могут содержать изображения. Ничего больше, чем дает API не придумать
3. isaev2016 07.11.17 17:45 Сейчас в теме
(2) Списался с техподдержкой. Добавили пользовательское поле с типом файл и туда получилось прикрепить.

"&fields[UF_CRM_1510048875][fileData][0]=" + Формат(Выборка.Номер,"ЧРГ=' '; ЧГ=0")+".pdf" + "&fields[UF_CRM_1510048875][fileData][1]=" + СтрокаBase64
4. user662672_explorer2000 225 07.11.17 18:39 Сейчас в теме
(3) Интересно, спасибо за информацию!
14. Westbound 16.08.19 16:30 Сейчас в теме
(3) а как обратно получить имя файла с сайта?
5. g_b 90 14.09.18 17:00 Сейчас в теме
а картинки для каталогов можно? , то покапался поменял обработку а на сайте ничего(
6. MaiorovYury 10 28.01.19 22:57 Сейчас в теме
(0) Спасибо огромное!!!
пару часов не понимал что не так, пока не нашел этот топик
Вот эта строка кода меня спасла

СтрокаBase64 = КодироватьСтроку(СтрокаBase64, СпособКодированияСтроки.КодировкаURL);
7. MaiorovYury 10 28.01.19 22:58 Сейчас в теме
(0) а есть идеи как прикрепить файл к комментарию?
Через сам битрикс 24 это сделать можно, и получить их тоже можно... вернее получить ссылку на их скачивание
А вот как их добавить я в документации не нашел
8. novatrade 02.02.19 18:10 Сейчас в теме
	Запрос = Новый HTTPЗапрос("rest/" + RESTЗапрос, Заголовки);											

у меня запустилось только, если
	Запрос = Новый HTTPЗапрос("rest/" + RESTЗапрос+"?auth=" + AccessToken, Заголовки);											

ну и пришлось поменять в соответствии с рекомендацией "DETAIL_PICTURE" на "PREVIEW_PICTURE".
Добавлю как комментарий. ИмяФайла в параметрах Rest - это имя, под каким файл будет сохранен на Б24
MaiorovYury; +1 Ответить
9. user662672_explorer2000 225 04.02.19 07:31 Сейчас в теме
(8)
у меня запустилось только, если


в статье используется функция ОтправитьRESTЗапросPOST, которая в том числе цепляет токен в параметры
MaiorovYury; +1 Ответить
11. novatrade 06.02.19 22:24 Сейчас в теме
(9)
в статье используется функция ОтправитьRESTЗапросPOST, которая в том числе цепляет токен в параметры

именно в Вашей функции ОтправитьRESTЗапросPOST эту строчку я и подкорректировал.
	Заголовки = Новый Соответствие;
	Заголовки.Вставить("Cookie", Cookie);

	Запрос = Новый HTTPЗапрос("rest/" + RESTЗапрос, Заголовки);											
13. user662672_explorer2000 225 07.02.19 06:53 Сейчас в теме
(11) странно, токен передается в теле POST запроса и так работало всегда. Но очевидно можно и в адресе ресурса токен передавать
10. MaiorovYury 10 05.02.19 00:49 Сейчас в теме
(8)
RESTЗапрос
а что в переменной RESTЗапрос ?
12. novatrade 06.02.19 22:26 Сейчас в теме
(10) у меня как и у автора
"crm.product.update"
15. Tanis 05.05.20 20:23 Сейчас в теме
Доброго времени!

Судя по всему эта обработка для битрикса. Подскажите, если кто сталкивался, как просто выгружать на сайт, не в битрикс? Начало такое же через HTTPСоединение..... А вот дальше как, что не могу понять....

Спасибо!
Оставьте свое сообщение