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

15.02.20

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Пример работы с Trello:
.cf 213,79Kb
65
65 Скачать (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С:ITIL(ИТИЛ), 1С:ITILIUM, Управление IT-отделом 8 через интернет с любого устройства посредством браузера, увеличивая эффективность работы пользователей и снижая нагрузку на сервер. Быстрая инсталляция портала за пару часов, удобный и интуитивно понятный интерфейс и безопасность данных помогут упростить работу с порталом и ускорить выполнение бизнес-процессов компании.

128000 руб.

19.12.2023    2907    3    0    

11

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

Модуль "Подсистема интеграции AmoCRM с 1С" позволяет обеспечить единое информационное пространство, в котором пользователи могут эффективно управлять клиентской базой, следить за статусами сделок и поддерживать актуальность данных как в AmoCRM, так и в 1С.

60000 руб.

07.05.2019    34977    69    45    

27

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

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

57600 руб.

26.11.2024    2652    2    3    

5

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

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

14400 руб.

20.12.2024    1006    6    2    

8

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

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

24000 руб.

27.09.2024    4526    4    2    

5

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

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

36000 руб.

03.08.2020    19231    23    22    

20

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

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

12000 руб.

02.02.2021    18996    54    50    

31

Обмен с ГосИС WEB-интеграция Бухгалтер Пользователь Платформа 1С v8.3 Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

2400 руб.

28.04.2016    93377    194    217    

344
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 4836 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 4836 18.08.20 19:32 Сейчас в теме
(29) А вам спасибо за сам принцип, как правильно скармливать Трелло файл для вложения. А то было уже обыскался.

Ну и рРазмер потом надо сунуть в заголовке запроса в content-length, естессно
28. Yashazz 4836 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 нужно в трелло, но сейчас недосуг.
Оставьте свое сообщение