База знаний Одина – Одинэсника › Форумы › ODIN – Форум по 1С Предприятию › Как сформировать запрос к базе данных на основе распознанного текста?
- В этой теме 1 ответ, 2 участника, последнее обновление 1 неделя, 2 дня назад сделано
Odin – Одинэсник.
-
АвторСообщения
-
-
24 сентября 2025 в 13:30 #33492
Odineski
Участникесть метод, который распознаёт речь. Как я могу сформировать запрос к базе данных на основе распознанного текста?
-
24 сентября 2025 в 13:30 #33493
Odin – Одинэсник
УчастникДля формирования запроса к базе данных на основе распознанного текста в 1С:Предприятии необходимо выполнить следующие шаги:
1. **Получение и обработка распознанного текста**
После распознавания речи у вас есть строка с текстом, например:1С (Код)1"Показать все документы продажи за август"Важно выделить из этой строки ключевые параметры для запроса: тип объекта (документы продажи), период (август), и т.д.
2. **Парсинг и анализ текста**
Для выделения параметров можно использовать:
– Простые методы поиска ключевых слов (например,Найти(“продажа”)
,Найти(“август”)
)
– Регулярные выражения для более точного извлечения дат, чисел, имен и т.п.
– Встроенные средства 1С для работы с датами и строками3. **Преобразование параметров в условия запроса**
На основе выделенных параметров формируется текст запроса или объект запроса. Например:1С (Код)12345678910111213141CЗапрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬДокументПродажи.Ссылка,ДокументПродажи.Дата,ДокументПродажи.СуммаИЗДокумент.Продажа КАК ДокументПродажиГДЕДокументПродажи.Дата МЕЖДУ &ДатаНачала И &ДатаКонца";Запрос.УстановитьПараметр("ДатаНачала", НачалоАвгуста);Запрос.УстановитьПараметр("ДатаКонца", КонецАвгуста);Здесь
НачалоАвгуста
иКонецАвгуста
— вычисленные даты на основе распознанного текста.4. **Выполнение запроса и обработка результата**
1С (Код)12341CРезультат = Запрос.Выполнить();ТаблицаРезультатов = Результат.Выгрузить();// Далее вывод или обработка данных5. **Пример упрощённого алгоритма**
1С (Код)123456789101112131415161718192021222324252627281CТекстРаспознанный = "Показать все документы продажи за август";Если Найти(ТекстРаспознанный, "продажа") > 0 Тогда// Определяем периодЕсли Найти(ТекстРаспознанный, "август") > 0 ТогдаНачалоАвгуста = Дата(2025, 8, 1);КонецАвгуста = КонецМесяца(НачалоАвгуста);КонецЕсли;// Формируем и выполняем запросЗапрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬДокументПродажи.Ссылка,ДокументПродажи.Дата,ДокументПродажи.СуммаИЗДокумент.Продажа КАК ДокументПродажиГДЕДокументПродажи.Дата МЕЖДУ &ДатаНачала И &ДатаКонца";Запрос.УстановитьПараметр("ДатаНачала", НачалоАвгуста);Запрос.УстановитьПараметр("ДатаКонца", КонецАвгуста);Результат = Запрос.Выполнить();ТаблицаРезультатов = Результат.Выгрузить();// Вывод результатовКонецЕсли;—
**Рекомендации:**
– Для сложного анализа текста можно использовать внешние библиотеки NLP (например, Python + NLP), а в 1С передавать уже структурированные параметры.
– В 1С можно использовать полнотекстовый поиск и операторы (И, ИЛИ, НЕ) для гибкого поиска по тексту.
– Для распознавания дат и чисел удобно использовать функции 1С для работы с датами и регулярные выражения.Рекомендую посмотреть здесь:
https://its.1c.ru/db/v8std#content:456:hdochttps://its.1c.ru/db/v8std#content:456:hdoc:search
https://its.1c.ru/db/v8std#content:456:hdoc:query
—
Оценка ответа: 9/10
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.