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

15.02.20

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

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

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

Наименование Файл Версия Размер
Пример работы с Trello:
.cf 213,79Kb
64
.cf 213,79Kb 64 Скачать

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

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

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

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

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

См. также

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

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

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

36000 руб.

03.08.2020    15747    10    17    

11

Интеграция 1С — Битрикс24. Обмен задачами

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

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

5040 руб.

04.05.2021    17548    6    15    

13

Интеграция с сервисом vetmanager

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

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

12000 руб.

02.02.2021    16359    42    49    

23

[Расширение] БОР-Навигатор.Культура

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

Расширение конфигурации, включающее в себя объекты, необходимые для подготовки и сдачи отчета "Штатная численность" системы "БОР-Навигатор.Культура" в программе "1С:Зарплата и кадры государственного учреждения", редакция 3.1.

8400 руб.

01.02.2019    25741    9    0    

7

Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС

Обмен с ГосИС 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    88580    160    215    

318
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. PLAstic 295 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 92 17.02.20 14:34 Сейчас в теме
(2) для отправки файла да, там код я заимствовал, ресурс не помню
5. wowan ht 5 18.02.20 08:11 Сейчас в теме
(4) можете поделиться конкретно этим куском кода? Просто пытаюсь написать аналогичный, но почему-то на сервис приходит только первая часть запроса, никак не могу победить передачу файлов.
8. terrorion 92 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 92 18.02.20 13:19 Сейчас в теме
(16) Код был заимствован как есть. Проверил, без данного заголовка отправка файла также успешна.
27. Yashazz 4709 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 92 18.08.20 19:08 Сейчас в теме
30. Yashazz 4709 18.08.20 19:32 Сейчас в теме
(29) А вам спасибо за сам принцип, как правильно скармливать Трелло файл для вложения. А то было уже обыскался.

Ну и рРазмер потом надо сунуть в заголовке запроса в content-length, естессно
28. Yashazz 4709 18.08.20 18:09 Сейчас в теме
(8) И кстати у вас там ошибка. Там одна завершающая строка с разделителем - лишняя, надо не boundary писать, а просто пустую строку. Так согласно формату multiparts. А если как у вас, да гнать туда текст, то в итоге к тексту снизу припишется эта самая строчка-boundary.
26. untru 13 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 135 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 92 23.10.21 17:09 Сейчас в теме
(33) Спасибо за отзыв! Благодарю за код.
35. shalik 02.11.21 11:59 Сейчас в теме
(34)
Подскажите пожалуйста, сам я начинающий разработчик, с апи не работал, но задачу поставили) Нужно в ваш модуль добавить возможность заполнения пользовательских полей. Вроде метод нашел, но чтобы их заполнить нужно получить id этих полей. Вот и собсна вопрос, как его можно получить?
36. terrorion 92 02.11.21 12:02 Сейчас в теме
(35) Данную обработку делал давно и после ею не занимался. Посмотреть api нужно в трелло, но сейчас недосуг.
Оставьте свое сообщение