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

15.02.20

Интеграция - WEB-интеграция

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Пример работы с Trello:
.cf 213,79Kb
64
64 Скачать (1 SM) Купить за 1 850 руб.

Какие возможности:

  1. Загрузка команды, досок, списков и карт. (надо учитывать, что при бесплатном использовании Trello в команде доступно не более 10 досок).
  2. Создание, обновление и выгрузка команды, досок, списков и карт в Trello.
  3. Переход из 1С на доску или карту в Trello.
  4. Переход из 1С к просмотру прикрепленных документов в Trello, прикрепление документов в 1С и выгрузка в Trello.
  5. Перетаскивание в 1С карт и списков с обновлением в Trello.

Для обмена с Trello нужно зарегистрироваться в сервисе и получить ключ и токен (зайти сюда).

Проверено на версии 8.3.16.1063.

конфигурация Trello

См. также

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

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    17794    19    22    

17

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

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    19878    13    17    

17

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

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

22656 руб.

25.05.2021    14432    42    8    

18

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

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    1190    1    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. PLAstic 296 17.02.20 09:10 Сейчас в теме
Молодец. Но мне начальство сказало в своё время, что недопустимо хранить конфиденциальные сведения компании о разработке на сторонних серверах. И мы выбрали standalone-сервер YouTrack. Интеграция та ещё, но вроде работает. Ну и учёт времени есть ещё, и спринты.
6. пользователь 18.02.20 09:22
Сообщение было скрыто модератором.
...
7. пользователь 18.02.20 09:32
Сообщение было скрыто модератором.
...
9. пользователь 18.02.20 09:44
Сообщение было скрыто модератором.
...
10. пользователь 18.02.20 10:35
Сообщение было скрыто модератором.
...
11. пользователь 18.02.20 10:49
Сообщение было скрыто модератором.
...
12. пользователь 18.02.20 11:06
Сообщение было скрыто модератором.
...
13. пользователь 18.02.20 11:17
Сообщение было скрыто модератором.
...
14. пользователь 18.02.20 12:29
Сообщение было скрыто модератором.
...
15. пользователь 18.02.20 12:50
Сообщение было скрыто модератором.
...
18. пользователь 18.02.20 15:50
Сообщение было скрыто модератором.
...
19. пользователь 18.02.20 15:58
Сообщение было скрыто модератором.
...
20. пользователь 18.02.20 18:11
Сообщение было скрыто модератором.
...
21. пользователь 18.02.20 19:43
Сообщение было скрыто модератором.
...
22. пользователь 18.02.20 21:11
Сообщение было скрыто модератором.
...
23. пользователь 19.02.20 09:01
Сообщение было скрыто модератором.
...
24. пользователь 19.02.20 09:35
Сообщение было скрыто модератором.
...
25. пользователь 19.02.20 09:47
Сообщение было скрыто модератором.
...
2. wowan ht 5 17.02.20 13:54 Сейчас в теме
Здравствуйте.
Вы используете в обмене post-запросы multipart/form-data?
3. пользователь 17.02.20 14:32
Сообщение было скрыто модератором.
...
4. terrorion 93 17.02.20 14:34 Сейчас в теме
(2) для отправки файла да, там код я заимствовал, ресурс не помню
5. wowan ht 5 18.02.20 08:11 Сейчас в теме
(4) можете поделиться конкретно этим куском кода? Просто пытаюсь написать аналогичный, но почему-то на сервис приходит только первая часть запроса, никак не могу победить передачу файлов.
8. terrorion 93 18.02.20 09:40 Сейчас в теме
&НаСервере
Функция ПодготовитьИОтправитьВложение(ПеремещаемыеФайлы)
	
	ПараметрыВозврата = Новый Структура("Ошибка,Результат");
	ПараметрыВозврата.Ошибка = Ложь;
	ПараметрыВозврата.Результат = "";
	
	Для Каждого ПолученноеИмяФайла Из ПеремещаемыеФайлы Цикл

		ИмяФайлаДляЗагрузки = ПолучитьИмяВременногоФайла(ПолученноеИмяФайла.Расширение);
		ДвоичныеДанные = ПолучитьИзВременногоХранилища(ПолученноеИмяФайла.Хранение);
		ДвоичныеДанные.Записать(ИмяФайлаДляЗагрузки);
		ИмяФайлаОтправки = КаталогВременныхФайлов() + "post.txt";    

	    Boundary = Строка(Новый УникальныйИдентификатор());

	    //Определяем массив для процедуры ОбъединитьФайлы 

	    МассивФайловДляОбъединения = Новый Массив; 

	    //Формируем начальный фрагмент файла POST-запроса 

	    ИмяФайлаОтправкиНачало = ПолучитьИмяВременногоФайла("txt"); 
	    ФайлОтправкиНачало = Новый ЗаписьТекста(ИмяФайлаОтправкиНачало, КодировкаТекста.ANSI, Символы.ПС, Ложь); 
	    //Определяем раздел двоичных данных 

	    ФайлОтправкиНачало.ЗаписатьСтроку("--" + Boundary); 
	    //Указываем имя файла для передачи 

	    ФайлОтправкиНачало.ЗаписатьСтроку("Content-Disposition: form-data; name=""file""; filename=""" + ПолученноеИмяФайла.Имя + """"); 
	    //Указываем тип передаваемых данных. 

	    ФайлОтправкиНачало.ЗаписатьСтроку("Content-Type: application/x-octet-stream"); 
	    ФайлОтправкиНачало.ЗаписатьСтроку(""); 
	    ФайлОтправкиНачало.Закрыть(); 

	    МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиНачало); 

	    //Копируем файл для загрузки во временный и добавляем в массив файлов для объединения 

	    ИмяФайлаДляЗагрузкиВременный = ПолучитьИмяВременногоФайла("tmp"); 
	    КопироватьФайл(ИмяФайлаДляЗагрузки, ИмяФайлаДляЗагрузкиВременный); 
	    МассивФайловДляОбъединения.Добавить(ИмяФайлаДляЗагрузкиВременный); 

	    //Формируем конечный фрагмент файла POST-запроса 

	    ИмяФайлаОтправкиКонец = ПолучитьИмяВременногоФайла("txt"); 
	    ФайлОтправкиКонец = Новый ЗаписьТекста(ИмяФайлаОтправкиКонец, КодировкаТекста.ANSI, Символы.ПС, Ложь); 

	    //Завершение раздела двоичных данных 

	    ФайлОтправкиКонец.ЗаписатьСтроку("--" + Boundary); 

	    ФайлОтправкиКонец.ЗаписатьСтроку("--" + Boundary + "--"); 
	    ФайлОтправкиКонец.Закрыть(); 

	    МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиКонец); 

	    //Теперь сформированные фрагменты сообщения для сервера объединяем в один файл POST-запроса 

	    ОбъединитьФайлы(МассивФайловДляОбъединения, ИмяФайлаОтправки);     
	    Заголовки = Новый Соответствие();
	    Заголовки.Вставить("Content-Type", "multipart/form-data; boundary=" + Boundary);
		
		ПараметрыАвторизации = Trello.ПолучитьПараметрыАвторизации();
		Сервер = "api.trello.com";
		АдресРесурса = "/1/cards/"+Объект.id+"/attachments?key="+ПараметрыАвторизации.Ключ+"&token="+ПараметрыАвторизации.Токен;
		HTTPСоединение = Новый HTTPСоединение(Сервер,443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
	    HTTPЗапрос = Новый HTTPЗапрос();
		HTTPЗапрос.Заголовки = Заголовки;
		HTTPЗапрос.АдресРесурса = АдресРесурса;
	    HTTPЗапрос.УстановитьИмяФайлаТела(ИмяФайлаОтправки);    

		Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
		Если Ответ.КодСостояния<>200 Тогда
                        ...
			Прервать;
		Иначе
                        ...
		КонецЕсли;

	КонецЦикла;

КонецФункции
Показать

(5)
16. wowan ht 5 18.02.20 13:13 Сейчас в теме
(8) а почему "Content-Type: application/x-octet-stream"? Это требование http-сервиса?
17. terrorion 93 18.02.20 13:19 Сейчас в теме
(16) Код был заимствован как есть. Проверил, без данного заголовка отправка файла также успешна.
27. Yashazz 4791 18.08.20 18:08 Сейчас в теме
(8) Ой. Громоздко и старомодно. То же самое действие можно сделать без записи в файлы и без их объединения.

	// готовим файл вложения к отправке как multipart
	рРазделитель=СтрЗаменить(Строка(Новый УникальныйИдентификатор),"-","_");
	
	рПоток=Новый ПотокВПамяти;
	рЗапись=Новый ЗаписьДанных(рПоток,КодировкаТекста.ANSI);
	
	// начало
    рЗапись.ЗаписатьСтроку("--"+рРазделитель); 
    рЗапись.ЗаписатьСтроку("Content-Disposition: form-data; name=""file""; filename="""+_ИмяВашегоФайла_+""""); // файл к передаче
    //рЗапись.ЗаписатьСтроку("Content-Type: application/x-octet-stream"); // тип передаваемых данных, необязательный
    рЗапись.ЗаписатьСтроку(""); // обязательно пишем пустую строку
	//
	// собственно данные файла
	рЗапись.ЗаписатьБуферДвоичныхДанных(ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(_ДвоичныеДанныеВашегоФайла_));
	//
	// окончание
	рЗапись.ЗаписатьСтроку(""); // обязательно пишем пустую строку
    рЗапись.ЗаписатьСтроку("--"+рРазделитель+"--");
	
	рЗапись.Закрыть();	
	рРазмер=XMLСтрока(рПоток.Размер());
	ДвоичныеДанныеДляТелаЗапроса=рПоток.ЗакрытьИПолучитьДвоичныеДанные();
Показать


Разумеется, если там не колоссальные объёмы, т.к. ограничение в 1ГБ на операцию с двоичкой никто не отменял, а в веб-клиенте особенно)
29. terrorion 93 18.08.20 19:08 Сейчас в теме
30. Yashazz 4791 18.08.20 19:32 Сейчас в теме
(29) А вам спасибо за сам принцип, как правильно скармливать Трелло файл для вложения. А то было уже обыскался.

Ну и рРазмер потом надо сунуть в заголовке запроса в content-length, естессно
28. Yashazz 4791 18.08.20 18:09 Сейчас в теме
(8) И кстати у вас там ошибка. Там одна завершающая строка с разделителем - лишняя, надо не boundary писать, а просто пустую строку. Так согласно формату multiparts. А если как у вас, да гнать туда текст, то в итоге к тексту снизу припишется эта самая строчка-boundary.
26. untru 14 23.02.20 01:53 Сейчас в теме
31. user721364 26.01.21 09:37 Сейчас в теме
А если несколько пользователей будут отправлять, то может не сработать

  КаталогВременныхФайлов() + "post.txt"; 
32. user721364 26.01.21 11:35 Сейчас в теме
Чтобы файл с кириллицей загрузился, нужно написать так

    ФайлОтправкиНачало.ЗаписатьСтроку("Content-Disposition: form-data; name=""file""; filename*=UTF-8''" + КодироватьСтроку( НазваниеФайлаДляТрелло, СпособКодированияСтроки.КодировкаURL ) ) ;
33. dimisa 137 23.10.21 14:17 Сейчас в теме
Скачал Вашу поделку . Очень пригодилась. Отличная работа. Очень хорошо что все что касается трелло выделено в отдельную подсистему.
Интегрировать Ваш функционал одно удовольствие.

Держите в качестве благодарности код для раскрашивания карточкек ;) (В Вашей разработке такого нет)


//--- Раскрасить карточку Trello
	//--- иточники описания API
    //   https://community.developer.atlassian.com/t/trello-rest-api-card-colors-covers/38865/8
	//   https://community.developer.atlassian.com/t/trello-rest-api-card-colors-covers/38865/9
	
	Заголовки = Новый Соответствие();
	Заголовки.Вставить("Content-Type", "application/json");
	ПараметрыАвторизации = Trello.ПолучитьПараметрыАвторизации();
	Сервер = "api.trello.com";
	АдресРесурса = "/1/cards/"+НовыйЭлементTrello_карты.id+"?key="+ПараметрыАвторизации.Ключ+"&token="+ПараметрыАвторизации.Токен;
	HTTPСоединение = Новый HTTPСоединение(Сервер,443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
	HTTPЗапрос = Новый HTTPЗапрос();
	HTTPЗапрос.Заголовки = Заголовки;
	HTTPЗапрос.АдресРесурса = АдресРесурса;
	
	//--- структура JSON Для раскрашивания карточки Trello
	//  {
	//	"cover":{
	//	            "color":"purple",  //--- Собственно тут цвет
	//	            "idAttachment":null,
	//	            "idUploadedBackground":null,
	//	            "size":"normal",
	//	            "brightness":"light"
	//	            }
	//	}
	
	//--- Доступные цвета из описания API
	// pink, yellow, lime, blue, black, orange, red, purple, sky, green
		
	ИмяФайлаТела = ПолучитьИмяВременногоФайла("tmp");
	ЗаписьJSON = Новый ЗаписьJSON;
	ЗаписьJSON.ПроверятьСтруктуру 	= Ложь;
	ПараметрыЗаписиJSON 			= Новый ПараметрыЗаписиJSON( , Символы.Таб);
	ЗаписьJSON.ОткрытьФайл(ИмяФайлаТела, , , ПараметрыЗаписиJSON);
	ЗаписьJSON.ЗаписатьНачалоОбъекта();
	ЗаписьJSON.ЗаписатьИмяСвойства("cover");
		ЗаписьJSON.ЗаписатьНачалоОбъекта();
		ЗаписьJSON.ЗаписатьИмяСвойства("color");
		ЗаписьJSON.ЗаписатьЗначение("purple");    //--- Собственно тут цвет
		ЗаписьJSON.ЗаписатьИмяСвойства("idAttachment");
		ЗаписьJSON.ЗаписатьЗначение(Неопределено);	
		ЗаписьJSON.ЗаписатьИмяСвойства("idUploadedBackground");
		ЗаписьJSON.ЗаписатьЗначение(Неопределено);	
		ЗаписьJSON.ЗаписатьИмяСвойства("size");
		ЗаписьJSON.ЗаписатьЗначение("normal");
		ЗаписьJSON.ЗаписатьИмяСвойства("brightness");
		ЗаписьJSON.ЗаписатьЗначение("light");
		ЗаписьJSON.ЗаписатьКонецОбъекта();	
	ЗаписьJSON.ЗаписатьКонецОбъекта();
	ЗаписьJSON.Закрыть();
	HTTPЗапрос.УстановитьИмяФайлаТела(ИмяФайлаТела); 
	Ответ = HTTPСоединение.ВызватьHTTPМетод("PUT",HTTPЗапрос);	
	Если Ответ.КодСостояния<>200 Тогда		
		Сообщить(ПараметрыВозврата.Результат);		
	КонецЕсли;


Показать


Заранее извиняюсь что JSON через временный файл передал в HTTPЗапрос, можно было через строку передавать в HTTPЗапрос но я лентяй :)
34. terrorion 93 23.10.21 17:09 Сейчас в теме
(33) Спасибо за отзыв! Благодарю за код.
35. shalik 02.11.21 11:59 Сейчас в теме
(34)
Подскажите пожалуйста, сам я начинающий разработчик, с апи не работал, но задачу поставили) Нужно в ваш модуль добавить возможность заполнения пользовательских полей. Вроде метод нашел, но чтобы их заполнить нужно получить id этих полей. Вот и собсна вопрос, как его можно получить?
36. terrorion 93 02.11.21 12:02 Сейчас в теме
(35) Данную обработку делал давно и после ею не занимался. Посмотреть api нужно в трелло, но сейчас недосуг.
Оставьте свое сообщение