Запрос 1С copilot

09.03.24

Разработка - Инструментарий разработчика

Пишем на человеческом языке, что нам надо, и получаем текст запроса на языке 1С. Используются большие языковые модели (LLM GPT) от OpenAI или Яндекс на выбор.

Скачать исходный код

Наименование Файл Версия Размер
1С запрос copilot:
.epf 13,59Kb
31
.epf 5 13,59Kb 31 Скачать

Большие языковые модели (LLM), созданные на технологии "трансформер" (GPT), позволяют преобразовать вопрос, сформулированный на человеческом языке, в текст запроса к базе данных.

Кому это может быть полезно.

Во-первых, новичкам. Тем, кто только начинает изучать язык запросов. Задав, к примеру, вопрос: "как получить список товаров, общая сумма продаж которых превышает 10000", начинающий узнает, что условия задаются не только через ГДЕ

 

 

 

Эта обработка будет лучше любого учебника.

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

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

 

 

 

С первым и вторым условием все просто, продажи определенного артикула в 2023 году. А в третьем условии рука тянется написать "В" (контрагент в списке тех, у кого было менее 3 покупок), а надо писать "НЕ В" (контрагент не в списке тех, у кого было 3 покупки и более). Потому что с отсутствующими значениями надо быть внимательнее. Они часто "ломают" логику. Менее 3 покупок - это 2 или 1. А 0 покупок - это не менее 3. Большая языковая модель в этом случае будет вашим полезным ассистентом.

В начале работы укажите свои данные для авторизации.

 

 

В настоящий момент есть два поставщика работоспособных моделей, предоставляющие доступ к ним через API. Это OpenAI и Яндекс. Для OpenAI достаточно указать API-ключ. Для Яндекса API-ключ и каталог. Получить ключи можно на сайтах: https://platform.openai.com/ и https://cloud.yandex.ru/ Использование больших языковых моделей стоит денег. Оплата рассчитывается, исходя из объемов того, что мы подаем на вход и что получаем на выходе. Если сравнивать с другими задачами, у нас это будет немного. Например, при подготовке данной статьи, я прогнал с десяток-другой запросов к двум моделям Яндекс. У меня вышло 13 рублей. И Яндекс и OpenAI предоставляют всем новым пользователям гранты. Т.е. зачисляют некоторую начальную сумму на счет. У Яндекс это 3000 рублей у OpenAI 18 долларов, если не ошибаюсь.

Далее нам потребуется схема базы данных. Использовать метаданные 1С как есть не получится по разным причинам, на которых я сейчас не буду останавливаться. Нужно некоторое промежуточное представление.

 

 

 

Почему MySQL. Если ничего не указывать, то на выходе можно получить "губы Никанора Ивановича" и "нос Ивана Кузьмича", т.е. смесь различных диалектов SQL. По моему опыту, запросы на MySQL формируются лучше прочих, но вы можете поэкспериментировать сами. # нужна, чтобы одно не "прилипло" к другому. OpenAI этим вроде бы не грешит, а у Яндекса я такое видел. В обработке есть макет с готовой схемой. Ее можно загрузить. Используя этот пример, вы сможете делать свои собственные схемы.

Основная рабочая страница выглядит так:

 

   

 

На данный момент доступны 4 языковые модели.  Две модели от Яндекса, одна попроще и подешевле, другая подороже и посильнее, и две модели от OpenAI, с таким же раскладом. Модель Яндекс GPT-lite не годится для работы. Сначала я не хотел включать ее в список. Но потом решил оставить для того, чтобы вы могли получить более полное представление о работе различных языковых моделей и на практике убедиться в том, что в данном случае размер имеет значение. Для получения осмысленных результатов, используйте полную модель от Яндекса. В случае с OpenAI ситуация прямо противоположная. Лучше использовать "младшую" модель OpenAI GPT3.5 Она не только дешевле, но еще и немного лучше справляется с работой. И это опять же доказывает, что размер имеет значение. Не вдаваясь в технические подробности, скажем, что у OpenAI GPT3.5 и OpenAI GPT4 размер примерно одинаков.

Выбрав модель, вы задаете свой вопрос на естественном языке и получаете "сырой" ответ от языковой модели. Чтобы получить из сырого ответа текст запроса на языке 1С последовательно применяются  две функции ПолучитьИсправленныйОтвет() и ПолучитьТекстЗапроса1С(). Первая не имеет отношения к 1С. Она исправляет некоторые общие недостатки. Например, текст ответа от модели Яндекса будет содержать не только собственно текст запроса SQL, но и пояснения, по большей части бесполезные. Соответственно возникает задача выделить из всего этого сам запрос. Вторая функция решает две задачи. Она транслирует элементы заданной нами схемы запроса в настоящие объекты метаданных. А также эта функция представляет собой относительно простой транслятор из SQL в язык запросов 1С. Я не задавался целью получать всякий раз 100% работающие запросы. Все же это инструмент разработчика, и тут важнее идея. Но вы можете подойти сколь угодно близко к этим 100%, если усовершенствуете этот транслятор.

Визуализацию результатов выполнения запроса я все же добавил.

 

   

 

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

 

Тестировал на 8.3.23.1912.

Управляемые формы.

 

UPD 07.02.2024

Добавлены две модели GigaChat от Сбера. Это не изменило количество работоспособных моделей. Их по прежнему три: полная модель от Яндекса и две модели от Open AI. Тем не менее, возможность убедиться в этом самостоятельно, а не с чьих-то слов будет не лишней. 

 

UPD 09.03.2024

Добавлена модель от Google Gemini pro. На данный момент пользование этой моделью бесплатно. Для нее установлено ограничение в 60 запросов в минуту, что в нашем случае вполне приемлемо. Спешите воспользоваться!   

UPD 15.03.2024

Добавлены три модели от Anthropic. Anthropic - это стартап, основанный выходцами из OpenAI. Они дают стартовый грант в 5$. Этого вполне достаточно для того, чтобы ознакомиться с возможностями этих моделей.   

Проверено на следующих конфигурациях и релизах:

  • Управление торговлей, редакция 11, релизы 11.5.10.73

GPT LLM

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

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

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    124401    680    389    

731

Infostart PrintWizard

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

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 руб.

06.10.2023    7694    24    6    

42

Infostart УДиФ: Управление данными и формами

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

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

10000 руб.

10.11.2023    4205    12    2    

36

SALE! %

PowerTools

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

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

3600 2880 руб.

14.01.2013    178508    1083    0    

861

Многопоточность. Универсальный «Менеджер потоков» 2.1

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

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99571    239    97    

298

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

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

2400 руб.

24.09.2019    23830    16    15    

33

[ЕХТ] Фреймворк для Расширений 1С

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

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18332    6    8    

40

1С HTML Шаблоны / HTML Templates

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

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28282    3    10    

15
Комментарии
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. dsfix 30 15.01.24 13:34 Сейчас в теме
Скачать - 5 Sm, возомнить себя 1С-программистом - бесценно
DimkoZah; it_depDi; bocharovki; bulpi; +4 Ответить
2. Timur.V 78 15.01.24 14:11 Сейчас в теме
(1)
Каждый имеет право устанавливать ту цену, которую желает!
Критика вообще не понятна.
DrAku1a; demidrole; dnikolaev; Obertone; ilyav; serg-lom89; +6 1 Ответить
8. bayselonarrend 1075 16.01.24 15:25 Сейчас в теме
(2) Каждый имеет право критиковать так, как хочет!
Контркритика вообще не понятна :)
mrChOP93; it_depDi; DrAku1a; bocharovki; +4 Ответить
9. mkalimulin 1163 16.01.24 16:06 Сейчас в теме
(8) Осторожно! Тут может возникнуть рекурсия )))
script; mrChOP93; it_depDi; DrAku1a; bayselonarrend; +5 Ответить
10. dsfix 30 16.01.24 17:58 Сейчас в теме
(2) эта шутка не про цену, а про "если бы у меня такая программа была, я бы, может, и не женился (на 1С) никогда"
3. booksfill 15.01.24 17:32 Сейчас в теме
"Я три дня гналась за вами, чтобы сказать, как вы мне безразличны" (С) "Обыкновенное чудо".
Я себе чем-то напоминаю героиню этого произведения. :)

Давайте попробуем провести эксперимент?

Я ни на чем не настаиваю, просто может вам тоже будет любопытно.

Под новичком, подразумеваю того, кого можно подпускать к рабочей базе и давать полезные для работы задачи.

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

Я попытался изобрести максимально простую задачу, которая имеет хоть какой-то практический смысл и где реально новичку может потребоваться помощь.

На выходе не обязательно должно быть что-то рабочее, но оно должно помогать, а не путать. Так?

Задача:
"В разрезе номенклатуры, получить сумму продаж за произвольный заданный период, с учетом возвратов.
Вывести только первые 100 позиций, отсортированных по сумме продаж.
Возвраты берутся по состоянию на сегодняшнюю дату.

Выводится номенклатура, находящейся в указываемой группе, включая подгруппы.

Номенклатура не должна быть помечена на удаление - данное условие относится только к элементам.

Сумма продаж, в оптовых ценах, должна быть >= суммы, указанной в параметре запроса.
При расчете суммы продаж оптовую цену брать на дату совершения операции.
Данное требование относится и к возвратам.

Учесть, что цена номенклатуры устанавливается с учетом характеристики.

Из анализируемой номенклатуры исключить услуги и работы.

Вывести номенклатуру, сумму продаж.

Обеспечить не обязательную возможность отбора по заданному списку номенклатуры.

Запрос, по возможности, должен использовать индексы и исключать лишние соединения.".
it_depDi; +1 Ответить
4. mkalimulin 1163 15.01.24 17:43 Сейчас в теме
(3) До максимальной простоты нужно еще немного поднажать )))
5. booksfill 15.01.24 18:23 Сейчас в теме
(4)
Имеете в виду, анализировать себестоимость, отбираться по группам А,В,С, учитывать не только сумму продаж, но и их динамику и рентабельность, разбивать по контрагентам, сезонности номенклатуры и т.п. + прогноз на следующий период? :)))

Если серьезно, то более простые задачи относятся к группе- ну, я пойду в магазин, куплю заварку, а ты мне в Excel файлик сбрось контрагентов с незаполненным ИНН. И обработочкой сними регистрацию изменений по регистру НеПонятнозачемОноВообщеВРИБ.

Если здесь новичку требуется помощь AI - дело плохо, причем не у него, а у того, кто умудрился взять его на работу. :)

Это в армии принцип "мне все равно, чем вы занимаетесь, лишь бы вы устали", а тут правда стало интересно. Ну нет у меня доступа к этим самым ChatGPT, да и ксак правиьно спрашивать сие чудо я не освоил.
6. mkalimulin 1163 15.01.24 18:49 Сейчас в теме
(5) В чем проблема организовать доступ через Яндекс?
7. booksfill 16.01.24 09:15 Сейчас в теме
(6)В моем неумении. К сожалению, сейчас нет времени разбираться ни в том, как подключиться к яндексу ни в том, как правильно писать промпты, кажется, это так называется.
Разумеется, это мои проблемы - через пару месяцев разгребусь и попробую поиграться
11. monkbest 115 17.01.24 11:19 Сейчас в теме
API ключи есть в обработке?
12. mkalimulin 1163 17.01.24 12:53 Сейчас в теме
(11) API ключи вы можете получить сами. Для Яндекс легко и просто. Для OpenAI нелегко и непросто, но возможно
13. mkalimulin 1163 17.01.24 21:16 Сейчас в теме
15. mkalimulin 1163 27.01.24 13:46 Сейчас в теме
(11) Если очень нужен ключ от OpenAI, обращайтесь
14. mkalimulin 1163 26.01.24 10:48 Сейчас в теме
Для Яндекса нужно создать сервисный аккаунт. Есть вариант работать без сервисного аккаунта, но там схема авторизации переусложненная, одним API ключом, как в сервисном аккаунте, не обойдешься
16. JohnyDeath 301 30.01.24 10:10 Сейчас в теме
А на сберовском AI не пробовали? У них есть есть такое:
Физическим лицам доступен freemium-режим и платные пакеты токенов.

В рамках freemium-режима пользователи получают 1 000 000 бесплатных токенов для генерации текста с помощью модели GigaChat Lite в одном потоке. Лимит обновляется раз в 12 месяцев.

До 31 января 2024 года вы можете использовать токены freemium-режима для получения векторного представления текста и обращения к модели GigaChat Pro ("model": "GigaChat-Pro").

(правда на про-версию остался всего один день)

Также интересно, подойдет ли их лайт-версия для этой задачи. Если подойдет, то там цена довольно небольшая и можно как физлицу пробовать, в отличии от про-версии
17. mkalimulin 1163 30.01.24 10:32 Сейчас в теме
(16) Сберовская модель неработоспособна, я пробовал. Она хуже Яндекс-лайт.
Пользуйтесь полной моделью от Яндекса, а еще лучше GPT3.5 от OpenAI.
Яндекс всем дает грант 3000 рублей. 5 минут на регистрацию и можно пробовать
JohnyDeath; +1 Ответить
18. JohnyDeath 301 30.01.24 10:36 Сейчас в теме
(17) я Яндексом пользуюсь и некоторые их облачные сервисы оплачиваю ежемесячно.
Просто хотел услышать ваше мнение по поводу еще одной модели, которая активно продвигается последнее время.

По поводу GPT. Сначала они блокировали доступ к через веб к чат-GPT, но по api всё прекрасно работало. Потом они вроде бы начали банить и по ip и для api-вызовов. После этого я забросил игры с ним. Пляски с впн-ами немного надоели.
Как сейчас обстоят с этим дела? Можно дергать api GPT из русского города без впн?
20. mkalimulin 1163 30.01.24 13:31 Сейчас в теме
(18) Да, OpenAI сейчас блокируют запросы из России.
JohnyDeath; +1 Ответить
22. mkalimulin 1163 30.01.24 13:34 Сейчас в теме
(18) Проблема сберовской модели в том, что она маленькая (вроде как 13B). А в этом деле размер имеет значение.
19. JohnyDeath 301 30.01.24 10:48 Сейчас в теме
(17) а еще буквально вчера "Вышла Code Llama 70B - самая производительная версия LLM для генерации кода".

небольшой видеообзор

Вроде как бесплатная даже для бизнеса и которую можно развернуть локально.
21. mkalimulin 1163 30.01.24 13:31 Сейчас в теме
(19) Пока еще не пробовал эту модель. Надо будет найти время. Спасибо за ссылку!
JohnyDeath; +1 Ответить
23. JohnyDeath 301 30.01.24 14:04 Сейчас в теме
(21) есть вот такая штуковина: https://lmstudio.ai/ где можно удобно и быстро развернуть и запустить модель локально. Но я сам еще не пробовал. И новая 70b там вроде как уже есть
24. user1966274 27.03.24 16:53 Сейчас в теме
подставил api ключ yandex. загрузил схему БД и ничего не происходит. как понять что подключилась обработка к модели и в какой момент пишется запрос?
25. mkalimulin 1163 27.03.24 17:14 Сейчас в теме
(24) У Яндекса два поля надо заполнять: ключ и каталог. Вы оба заполнили?
Оставьте свое сообщение