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

26.03.21

Интеграция - Облачные сервисы, хостинг

В публикации и приложенной обработке описываются методы взаимодействий между 1С и облачным сервисом Trello по API.

Файлы

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

Наименование Скачано Купить файл
Интеграция 1С и Trello:
.epf 16,76Kb
16 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

В примерах описан далеко не весь набор API, включены те методы, которые использованы в разработке Тикеты - система учета задач/Service Desk в 1С (интеграция с Trello, Мобильное приложение)

Токен и ключ можно после авторизации в сервисе Trello получить по адресу trello.com/app-key

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

Обработка тестировалась на платформе 8.3.17

Чтение

Функция ВыполнитьЗапросКСерверу(ТекстЗапроса)
    
    Соединение = Новый HTTPСоединение("api.trello.com",,,,,,Новый ЗащищенноеСоединениеOpenSSL());
    Запрос = Новый HTTPЗапрос(ТекстЗапроса + "key=" + Ключ + "&token=" + Токен);
    Результат = Соединение.Получить(Запрос);
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(Результат.ПолучитьТелоКакСтроку());
    РезультатЗапроса = ПрочитатьJSON(ЧтениеJSON);
    ЧтениеJSON.Закрыть();
    
    Возврат(РезультатЗапроса);
    
КонецФункции

Функция ДатаTrello(ДатаИсточник)
    
    Если ДатаИсточник = Дата(1, 1, 1, 0, 0, 0) Тогда
        Рез = "";
    Иначе
        Рез = XMLСтрока(ДатаИсточник) + ".000Z"; 
    КонецЕсли;
    
    Возврат(Рез);
    
КонецФункции


Доски пользователя

//Получаем ID пользователя по адресу электронной почты
    ТекстЗапроса = "1/search/members/?query=" + ЭлектроннаяПочта + "&limit=1&onlyOrgMembers=false&";
    РезультатЗапроса = ВыполнитьЗапросКСерверу(ТекстЗапроса);
    
     Если ТипЗнч(РезультатЗапроса) = Тип("Массив") И (РезультатЗапроса.Количество() > 0)  Тогда
        IDПользователя = РезультатЗапроса[0].id;
    Иначе
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = "В Trello не найден пользователь по e-mail """ + ЭлектроннаяПочта + """";
        Сообщение.Сообщить();
        Возврат;
    КонецЕсли;
    
    //Получаем все доски пользователя
    ТекстЗапроса = "1/members/" + IDПользователя + "/boards?filter=all&fields=all&lists=none&memberships=none&organization=true&organization_fields=name%2CdisplayName&";
    РезультатЗапроса = ВыполнитьЗапросКСерверу(ТекстЗапроса);

 

Колонки доски

ТекстЗапроса = "1/boards/" + IDДоски + "/lists?";
    РезультатЗапроса = ВыполнитьЗапросКСерверу(ТекстЗапроса);

 

Пользовательские поля доски

ТекстЗапроса = "1/boards/" + IDДоски + "/customFields?";
    РезультатЗапроса = ВыполнитьЗапросКСерверу(ТекстЗапроса);

 

Карточки колонки

ТекстЗапроса = "1/lists/" + IDКолонки + "/cards?";
    РезультатЗапроса = ВыполнитьЗапросКСерверу(ТекстЗапроса);

 

Комментарии и файлы карточки

Фильтр = "commentCard,addAttachmentToCard";
    ТекстЗапроса = "1/cards/" + IDКарточки + "/actions/?limit=1000&filter=" + Фильтр + "&since=" + ДатаTrello(НачалоДня(ПериодСобытий.ДатаНачала)) + "&before=" + ДатаTrello(КонецДня(ПериодСобытий.ДатаОкончания)) + "&";
    РезультатЗапроса = ВыполнитьЗапросКСерверу(ТекстЗапроса);

 

Действия с карточкой

Фильтр = "commentCard,addAttachmentToCard,addMemberToCard,removeMemberFromCard,updateCard,moveCardToBoard";
    ТекстЗапроса = "1/cards/" + IDКарточки + "/actions/?limit=1000&filter=" + Фильтр + "&since=" + ДатаTrello(НачалоДня(ПериодСобытий.ДатаНачала)) + "&before=" + ДатаTrello(КонецДня(ПериодСобытий.ДатаОкончания)) + "&";
    РезультатЗапроса = ВыполнитьЗапросКСерверу(ТекстЗапроса);

 

Скачивание прикрепленного файла (из ранее заполненной таблицы)

  Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
    Если Диалог.Выбрать() Тогда
        КопироватьФайл(ТекущаяСтрока.ПутьКФайлу, Диалог.Каталог + "\" + ТекущаяСтрока.Комментарий);
    КонецЕсли;

 

Запись

Функция ВыполнитьЗаписьНаСервере(ТекстЗапроса)
    
    Соединение = Новый HTTPСоединение("api.trello.com",,,,,,Новый ЗащищенноеСоединениеOpenSSL());
    Запрос = Новый HTTPЗапрос(ТекстЗапроса + "key=" + Ключ + "&token=" + Токен);
    Результат = Соединение.Записать(Запрос);
    
    Возврат(Результат.КодСостояния);
    
КонецФункции

Функция Дата1С(ДатаISO)
    
    Если ДатаISO = Неопределено ИЛИ ПустаяСтрока(ДатаISO) Тогда
        Возврат(Дата(1, 1, 1, 0, 0, 0));
    КонецЕсли;
    
    Возврат(XMLЗначение(Тип("Дата"), ДатаISO));
    
КонецФункции

 

Переместить на доску

ТекстЗапроса = "1/cards/" + IDКарточки + "/?idBoard=" + Результат.Значение + "&";
        РезультатЗапроса = ВыполнитьЗаписьНаСервере(ТекстЗапроса);

 

Переместить в колонку

ТекстЗапроса = "1/cards/" + IDКарточки + "/?idList=" + Результат.Значение + "&";
        РезультатЗапроса = ВыполнитьЗаписьНаСервере(ТекстЗапроса);

 

Установить тему

ТекстЗапроса = "1/cards/" + IDКарточки + "/?name=" + Тема + "&";
    Результат = ВыполнитьЗаписьНаСервере(ТекстЗапроса);

 

Установить дату исполнения

ТекстЗапроса = "1/cards/" + IDКарточки + "/?due=" + ?(ДатаИсполнения = Дата(1, 1, 1, 0, 0, 0), "", ДатаTrello(УниверсальноеВремя(ДатаИсполнения))) + "&";
    Результат = ВыполнитьЗаписьНаСервере(ТекстЗапроса);

 

Добавить комментарий

Соединение = Новый HTTPСоединение("api.trello.com",,,,,,Новый ЗащищенноеСоединениеOpenSSL());
    Запрос = Новый HTTPЗапрос("1/cards/" + IDКарточки + "/actions/comments/?text=" + Комментарий + "&key=" + Ключ + "&token=" + Токен);
    Результат = Соединение.ОтправитьДляОбработки(Запрос);

 

Добавить файл

ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ДиалогВыбора.МножественныйВыбор = Ложь;
    Если ДиалогВыбора.Выбрать() Тогда
        ПутьКФайлу = ДиалогВыбора.ПолноеИмяФайла;
        Поз = СтрНайти(ПутьКФайлу, "\", НаправлениеПоиска.СКонца);
        Если Поз > 0 Тогда
            ИмяФайла = Прав(ПутьКФайлу, СтрДлина(ПутьКФайлу) - Поз);
            ДвоичныеДанныеФайла = Новый ДвоичныеДанные(ПутьКФайлу);
            
            Соединение = Новый HTTPСоединение("api.trello.com",,,,,, Новый ЗащищенноеСоединениеOpenSSL());
            Запрос = Новый HTTPЗапрос("1/cards/" + IDКарточки + "/attachments/?key=" + Ключ);
            boundary = СтрЗаменить(Новый УникальныйИдентификатор,"-","");
            МассивДД = Новый Массив;
            Запрос.Заголовки.Вставить("Content-Type", "multipart/form-data; boundary=" + boundary);
            ПереводСтроки = Символы.ВК + Символы.ПС;
            Текст = "--" + boundary + ПереводСтроки;
            Текст = Текст + "Content-Disposition: form-data; name=""token""" + ПереводСтроки + ПереводСтроки;
            Текст = Текст + Токен + ПереводСтроки;
            Текст = Текст + "--" + boundary + ПереводСтроки;
            Текст = Текст + "Content-Disposition: form-data; name=""file""; filename=""" + ИмяФайла + """" + ПереводСтроки + ПереводСтроки;
            МассивДД.Добавить(ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(ПолучитьБуферДвоичныхДанныхИзСтроки(Текст, КодировкаТекста.UTF8, Ложь)));
            МассивДД.Добавить(ДвоичныеДанныеФайла);    
            Текст = ПереводСтроки;
            Текст = Текст + "--" + boundary + "--" + ПереводСтроки + ПереводСтроки;
            МассивДД.Добавить(ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(ПолучитьБуферДвоичныхДанныхИзСтроки(Текст, КодировкаТекста.UTF8, Ложь)));
            ТелоДД = СоединитьДвоичныеДанные(МассивДД);
            Запрос.УстановитьТелоИзДвоичныхДанных(ТелоДД);
            Результат = Соединение.ОтправитьДляОбработки(Запрос);
            Если Результат.КодСостояния = 200 Тогда
                ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Файл успешно добавлен");
            Иначе
                ПоказатьПредупреждение(, "Не удалось добавить файл !");
            Конецесли;
        КонецЕсли;
    КонецЕсли;

 

Установка пользовательского поля

Соединение = Новый HTTPСоединение("api.trello.com",,,,,,Новый ЗащищенноеСоединениеOpenSSL());
    Запрос = Новый HTTPЗапрос("1/cards/" + IDКарточки + "/customField/" + СтрокаТаблицы.ID + "/item?key=" + Ключ + "&token=" + Токен);
    Запрос.Заголовки.Вставить("Content-Type", "application/json");
    
    ЗаписьJSON = Новый ЗаписьJSON;
    ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, " ", Истина);
    ЗаписьJSON.УстановитьСтроку(ПараметрыJSON);
    
    Если ЗначениеПоля = "" ИЛИ ЗначениеПоля = 0 ИЛИ ЗначениеПоля = Неопределено Тогда
        Если Строка(СтрокаТаблицы.ТипЗначения) = "Строка" И СтрокаТаблицы.СписокЗначений.Количество() > 0 Тогда
            СтруктураДанныхJSON = Новый Структура("idValue", "");
        Иначе
            СтруктураДанныхJSON = Новый Структура("value", "");
        КонецЕсли;
    ИначеЕсли СтрокаТаблицы.ТипЗначения = Новый ОписаниеТипов("Булево") И НЕ ЗначениеПоля Тогда
        СтруктураДанныхJSON = Новый Структура("value", "");
    Иначе
        Если Строка(СтрокаТаблицы.ТипЗначения) = "Строка" И СтрокаТаблицы.СписокЗначений.Количество() > 0 Тогда
            СтруктураДанныхJSON = Новый Структура("idValue", ЗначениеПоля);
        Иначе
            Если Строка(СтрокаТаблицы.ТипЗначения) = "Строка" Тогда
                СтруктураДанныхПоля = Новый Структура("text", Строка(ЗначениеПоля));
            ИначеЕсли Строка(СтрокаТаблицы.ТипЗначения) = "Число" Тогда
                СтруктураДанныхПоля = Новый Структура("number", СтрЗаменить(СтрЗаменить(Строка(ЗначениеПоля), Символы.НПП, ""), ",", "."));
            ИначеЕсли СтрокаТаблицы.ТипЗначения = Новый ОписаниеТипов("Булево") Тогда
                СтруктураДанныхПоля = Новый Структура("checked", "true");
            ИначеЕсли Строка(СтрокаТаблицы.ТипЗначения) = "Дата" Тогда
                СтруктураДанныхПоля = Новый Структура("date", ДатаTrello(ЗначениеПоля));
            КонецЕсли;
            СтруктураДанныхJSON = Новый Структура("value", СтруктураДанныхПоля);
        КонецЕсли;
    КонецЕсли;
    
    ЗаписатьJSON(ЗаписьJSON, СтруктураДанныхJSON);
    СтрокаJS = ЗаписьJSON.Закрыть();
    Запрос.УстановитьТелоИзСтроки(СтрокаJS, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
    
    Результат = Соединение.Записать(Запрос);

 

Вступайте в нашу телеграмм-группу Инфостарт

Trello Интеграция

См. также

Управление взаимоотношениями с клиентами (CRM) Телефония, SIP Облачные сервисы, хостинг 1С:Предприятие 8 1C:Бухгалтерия Управленческий учет Платные (руб)

Продукт интеграции возможностей Облачной АТС Билайн в систему 1С Предприятие 8. Звонки прямо из программы 1С, уведомления о текущих звонках, регистрация пропущенных и завершенных вызовов, ведение журнала, анализ данных об использовании мобильной связи.

12000 руб.

20.03.2019    24855    57    0    

40

WEB-интеграция Облачные сервисы, хостинг 1С 8.3 1С 8.5 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Россия Абонемент ($m)

Внешняя обработка предназначена для автоматической выгрузки файлов из локального или серверного каталога на Яндекс.Диск через официальный REST API Яндекса. Решение удобно использовать для регулярной передачи отчетов, обменных файлов, архивов, выгрузок из 1С и других документов в облачное хранилище без ручного копирования через браузер или клиент Яндекс.Диска.

3 стартмани

18.05.2026    287    4    Rom_Kat    0    

4

Облачные сервисы, хостинг Системный администратор Программист Бесплатно (free)

Рассказываем, как родилась идея готового облака 1С и какие инновации сделали его полноценной PaaS-платформой. Материал будет полезен тем, кто ищет способ упростить взаимодействие с 1С, сохранив масштабируемость и надежность корпоративных систем.

14.04.2026    622    militarymax    0    

2

Облачные сервисы, хостинг WEB-интеграция Программист Бесплатно (free)

Очереди сообщений – это инструмент обмена данными между системами. На примере Yandex Message Queue разбираем, как брокер от Яндекс.Облака помогает решать практические задачи. Даем бесплатную библиотеку для 1С, которая упрощает работу с YandexMQ и другими SQS-сервисами.

17.11.2025    3797    leemuar    37    

28

Облачные сервисы, хостинг Программист 1С:Предприятие 8 Абонемент ($m)

Универсальная выгрузка отчетов 1С в облако (Яндекс.Диск, Mail.ru) по расписанию. Любые отчеты на СКД и обычные. Вычисляемые параметры, макросы имен, 5 форматов, полная история. Обычные формы 8.2+. Тестировалась на платформе 8.3.25.1394 в режиме совместимости 8.3.12.

2 стартмани

20.10.2025    1348    4    daka    4    

5

Облачные сервисы, хостинг Бесплатно (free)

Работа с системами 1С в облаке открывает новые горизонты для эффективного управления компанией. Цель данного обзора — проанализировать доступные на рынке облачные сервисы и помочь выбрать решение, которое наилучшим образом соответствует задачам и потребностям вашего бизнеса.

16.10.2025    1972    osa1C    1    

2

Облачные сервисы, хостинг Программист 1С:Предприятие 8 Россия Абонемент ($m)

При выгрузке данных базы 1С для фреш (пункт меню в разделе Администрирование Выгрузка для сервиса или перейти в облачный сервис) столкнулся с кучей ошибок, связанных с дубликатами в справочниках. Обработка позволяет удалить элемент справочника, для которого есть замечания дублирования.

1 стартмани

07.04.2025    1682    3    AlexHelmer    0    

1

Облачные сервисы, хостинг 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бесплатно (free)

Почему не стоит вести учет у нескольких фирм (клиентов) в единой базе в облаке с разделением доступа по организации.

26.03.2025    4070    PD_AD    6    

2
Для отправки сообщения требуется регистрация/авторизация