База знаний Одина – Одинэсника › Форумы › ODIN – Форум по 1С Предприятию › Как сформировать запрос к базе данных на основе распознанного текста? › RE: Как сформировать запрос к базе данных на основе распознанного текста?

Для формирования запроса к базе данных на основе распознанного текста в 1С:Предприятии необходимо выполнить следующие шаги:
1. **Получение и обработка распознанного текста**
После распознавания речи у вас есть строка с текстом, например:
1 |
"Показать все документы продажи за август" |
Важно выделить из этой строки ключевые параметры для запроса: тип объекта (документы продажи), период (август), и т.д.
2. **Парсинг и анализ текста**
Для выделения параметров можно использовать:
– Простые методы поиска ключевых слов (например, Найти(“продажа”)
, Найти(“август”)
)
– Регулярные выражения для более точного извлечения дат, чисел, имен и т.п.
– Встроенные средства 1С для работы с датами и строками
3. **Преобразование параметров в условия запроса**
На основе выделенных параметров формируется текст запроса или объект запроса. Например:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
1C Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ДокументПродажи.Ссылка, ДокументПродажи.Дата, ДокументПродажи.Сумма ИЗ Документ.Продажа КАК ДокументПродажи ГДЕ ДокументПродажи.Дата МЕЖДУ &ДатаНачала И &ДатаКонца"; Запрос.УстановитьПараметр("ДатаНачала", НачалоАвгуста); Запрос.УстановитьПараметр("ДатаКонца", КонецАвгуста); |
Здесь НачалоАвгуста
и КонецАвгуста
— вычисленные даты на основе распознанного текста.
4. **Выполнение запроса и обработка результата**
1 2 3 4 |
1C Результат = Запрос.Выполнить(); ТаблицаРезультатов = Результат.Выгрузить(); // Далее вывод или обработка данных |
5. **Пример упрощённого алгоритма**
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
1C ТекстРаспознанный = "Показать все документы продажи за август"; Если Найти(ТекстРаспознанный, "продажа") > 0 Тогда // Определяем период Если Найти(ТекстРаспознанный, "август") > 0 Тогда НачалоАвгуста = Дата(2025, 8, 1); КонецАвгуста = КонецМесяца(НачалоАвгуста); КонецЕсли; // Формируем и выполняем запрос Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ДокументПродажи.Ссылка, ДокументПродажи.Дата, ДокументПродажи.Сумма ИЗ Документ.Продажа КАК ДокументПродажи ГДЕ ДокументПродажи.Дата МЕЖДУ &ДатаНачала И &ДатаКонца"; Запрос.УстановитьПараметр("ДатаНачала", НачалоАвгуста); Запрос.УстановитьПараметр("ДатаКонца", КонецАвгуста); Результат = Запрос.Выполнить(); ТаблицаРезультатов = Результат.Выгрузить(); // Вывод результатов КонецЕсли; |
—
**Рекомендации:**
– Для сложного анализа текста можно использовать внешние библиотеки NLP (например, Python + NLP), а в 1С передавать уже структурированные параметры.
– В 1С можно использовать полнотекстовый поиск и операторы (И, ИЛИ, НЕ) для гибкого поиска по тексту.
– Для распознавания дат и чисел удобно использовать функции 1С для работы с датами и регулярные выражения.
Рекомендую посмотреть здесь:
https://its.1c.ru/db/v8std#content:456:hdoc
https://its.1c.ru/db/v8std#content:456:hdoc:search
https://its.1c.ru/db/v8std#content:456:hdoc:query
—
Оценка ответа: 9/10