Pull to refresh
75.73
ИТ-интегратор Белый код
Подбираем и адаптируем ИТ-решения

Как искусственный интеллект допиливал интеграцию 1С и «Битрикс24»

Reading time5 min
Views1.6K

На связи Сергей Скирдин, технический директор ИТ-интегратора «Белый код». На майских праздниках, как водится, собрались на шашлыки, за шашлыками много обсуждали искусственный интеллект. В результате получился интересный эксперимент.

В последнее время я достаточно активно использую ИИ для локальных задач: 

  • скорректировать текст, 

  • написать скрипт для СУБД,

  • разобрать сложный, многостраничный запрос в 1С.

Пробовал для этого бесплатный DeepSeek или нейронку, встроенную в «Битрикс24». ChatGPT не использовал, т. к. лениво было настраивать VPN и по информации из прессы вроде DeepSeek не сильно хуже. Но ребята рассказали, что OpenAI ушел далеко вперед, и можно скармливать ему файлы, он умеет формировать файлы, а еще он может сходить в интернет за актуальной информацией. В общем, заинтересовался. Дальше будет статья, которую написал искусственный интеллект, а кожаный поправил.  

Решение задачи

И тут первый облом:

Возможно это ограничение бесплатной версии. Если у вас получилось скормить в нейронку конфу или расширение, поделитесь, как это сделать, в комментариях или в личку.

Загрузить целиком не смог, но отдельные файлы нейронка анализирует хорошо. Я отправил ей модуль для работы с Б24, который уже был в конфе, модуль веб-сервиса, который получает веб-хук от «Битрикса», и указал, какой метод прописан в веб-сервисе. Структуру регистра сведений нейронка предложила прислать скрином, что я и сделал. Это, конечно, очень ленивый вариант, он не передает инфо о типах атрибутов РС, но если надо что-то мелкое допилить, сойдет. Проще отправить скрипт, попросить написать, как он понял его, написать, где он ошибся, чем выгружать конфу, искать там нужные XML-ки.

Дальше привожу небольшой диалог по структуре регистра: 

🔧 Обновлённая структура регистра бк_КомментарииСделокБ24

Измерения:

  • СделкаB24 — СправочникСсылка.bpcaSNS_СделкиБ24

  • КомментарийИД — Число (целое, длина 10 или 18, в зависимости от максимального значения ID)

Ресурсы:

  • Автор — Строка 100

  • Текст — Строка 1000 (или ХранилищеЗначения, если ожидается длинный текст)

  • ДатаВремя — Дата и время

Если потребуется, могу подготовить XML-файл для импорта этого регистра в конфигуратор или предоставить код для создания вручную. Сообщите, что предпочтительнее.

Вы сказали:

у Автора тип должен быть СправочникСсылка.Пользователи. Как заполнять автора посмотри в модуле бк_РаботаСБитрикс по аналогии с заполнением поля ОтветственныйЗаСделку. Задай уточняющие вопросы, если не понятно.

ChatGPT сказал:

Сохраненная память обновлена

Спасибо, нашёл нужный фрагмент. В модуле bpcaSNS_РаботаСБитрикс поле ОтветственныйЗаСделку заполняется так:

НоваяЗапись.ОтветственныйЗаСделку = ПолучитьПользователяУНФ(СоответствияПользователейБ24иУНФ, СделкаБитрикс["ASSIGNED_BY_ID"]);

Это означает, что:

  • используется функция ПолучитьПользователяУНФ

  • ей передаётся соответствие между пользователями Битрикс и 1С

  • и ID пользователя из Битрикс24


Значит, для поля Автор в комментарии нужно делать то же самое:

Запись.Автор = ПолучитьПользователяУНФ(СоответствияПользователейБ24иУНФ, Комментарий["AUTHOR_ID"]);


Есть один уточняющий вопрос:

📌 Где брать СоответствияПользователейБ24иУНФ в момент обработки комментариев?
Оно глобальное, передаётся в модуль, или его нужно отдельно получать?

Если ты укажешь, как формируется это соответствие (например, в общем модуле или справочнике), я смогу включить корректную логику в обработку.

Вы сказали:

СоответствияПользователейБ24иУНФ заполняется в коде Процедура ЗаполнитьДанныеСделки(СделкаБитрикс)

ChatGPT сказал:

Понял. В процедуре ЗаполнитьДанныеСделки(СделкаБитрикс) переменная СоответствияПользователейБ24иУНФ инициализируется так:

СоответствияПользователейБ24иУНФ = ПолучитьСоответствияПользователейБ24иУНФ();

Это значит, что:

  • при добавлении логики по комментариям внутри этой процедуры мы можем использовать эту переменную напрямую;

  • следовательно, при обработке каждого комментария автора можно заполнять так:

Запись.Автор = ПолучитьПользователяУНФ(СоответствияПользователейБ24иУНФ, Комментарий["AUTHOR_ID"]);


Если ты подтвердишь, что обработка комментариев будет встроена в ЗаполнитьДанныеСделки (или вызываться из неё), то можно переходить к написанию кода добавления комментариев и вставки записей в бк_КомментарииСделокБ24.

Диалог вполне разумный, и это даже не с джуном диалог. Вполне себе помощник!

Какие были проблемы

  1. Упорно использует конструктор массива, которого нет в 1С: 

Пример запроса:

Параметры = Новый Структура;

Параметры.Вставить("filter[ENTITY_TYPE]", Новый Массив("deal", "lead"));

Параметры.Вставить("select", Новый Массив("ID", "ENTITY_ID", "ENTITY_TYPE", "AUTHOR_ID", "COMMENT", "CREATED"));

Несколько раз указывал на ошибку, писал запомни, и он отвечал, что память обновлена. Кидал куски из синтаксис помощника, в общем тут прям проблема. 

  1. Любит писать много кода (копипаста). 

  1. Уже написали с ним процедуру получения лидов из Б24, пишем процедуру разового импорта всех лидов. Не догадывается вызвать готовую отлаженную процедуру загрузки одного лида, пишет заново. 

  2. Комментарии к сделкам и лидам в «Битрикс24» одна сущность, соответственно, и обращение к ним практически одинаковое, логично сделать общую процедуру, но нет, делает очень похожие две. Но если ему на это указать, он быстренько перепишет. 

  3. Забывает обязательный отбор ставить при работе с набором записей:

 // Создаём запись в регистре

    Набор = РегистрыСведений.бк_КомментарииСделокБ24.СоздатьНаборЗаписей();

    Запись = Набор.Добавить();

    Запись.СделкаB24 = СделкаСсылка;

    Запись.КомментарийИД = КомментарийИД;

    Запись.Автор = ПолучитьПользователяУНФ(СоответствияПользователейБ24иУНФ, Комментарий["AUTHOR_ID"]);

    Запись.Текст = Комментарий["COMMENT"];

    Запись.ДатаКомментария = СтрПреобразоватьВДату(Комментарий["CREATED"]);

    Набор.Записать();

  1. Использует несуществующие функции, например СтрПреобразоватьВДату()

Выводы

В итоге за 7-8 часов с перерывами на обед и т. д. было реализовано и отлажено:

  • загрузка лидов в справочник и сохранение истории статусов в РС;

  • загрузка комментариев к сделкам и лидам в РС;

  • процедура для разовой загрузки всех лидов и комментариев;

  • справочник и разовое заполнение статусов лидов.

Я думаю, если бы я писал сам, это заняло бы сопоставимое время, но:

  1. Я давно ничего такого не писал на 1С, навык потихоньку уходит, не уверен, что справился бы.

  2. Даже если бы я сделал это за 8 часов, я был бы интеллектуально высушен, а тут получилось такое наставничество кожаного интеллекта над искусственным. Как недавно прочел у кого-то в статье — «вайб-кодинг», этакая работа без напряга.  

В общем, пришел после выходных в офис и всем, кого встретил рассказал, что нужно использовать ИИ. Это уже не игрушка, это реальный помощник. В комментариях приглашаю обсудить. 

Я, кстати, делаю обзоры продуктов, которые относятся к классу ESB: Factor-ESB, «1С:Интеграция КОРП», «Интегра», USEBUS, Entaxy ION и другие. Для всех, кто интересуется шинами данных, создал сообщество в Телеграме «Шины не для машины». Это площадка для диалога между российскими разработчиками ESB и компаниями, которым нужна интеграционная шина. Если связаны с этой темой, то присоединяйтесь!

Tags:
Hubs:
+3
Comments8

Articles

Information

Website
белыйкод.рф
Registered
Founded
2015
Employees
31–50 employees
Location
Россия
Representative
Сергей Скирдин