Работа с локальным ИИ (LLM, БЯМ) через KoboldCPP из 1С
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Обновления:
12-02-2025 Добавлен вывод количества входящих и исходящих токенов
03-02-2025 Добавлен параметр Температура
Использованные сокращения:
ИИ – искусственный интеллект.
БЯМ, она же LLM – большая языковая модель
LLM, она же БЯМ – large language model
ПО – программное обеспечение
ОЗУ – оперативная память компьютера.
SSD – solid state drive, твердотельный накопитель, более быстрая альтернатива жестким дискам
Мотивы
На создание данной обработки меня подтолкнуло прохождение интенсива по 1С от Университета Зерокодер. Идея использовать БЯМ (ИИ в обычной терминологии) для генерации программного кода с минимальным участием программиста невероятно притягательна. Возможно, когда-нибудь это станет признаком следующего поколения языков программирования. Но если для широко распространенных языков программирования технология уже работает довольно неплохо, то с 1С ситуация пока не так хороша. Причина в обучении моделей - материалов для обучения 1С объективно доступно меньше. Язык 1С не так широко распространен в мире, программисты 1С в основном используют русский язык. В итоге, на аналогичном курсе университета с использованием языка Python использовался реально сгенерированный ИИ программный код. На курсе по 1С создатели замахнулись только на создание ИИ описаний ресторанных блюд.
В обоих курсах в качестве ИИ использовался ChatGPT от компании OpenAI, чьи модели обладают несомненными преимуществами. На данный момент лидерство ChatGPT в генерации программного кода вряд ли может быть оспорено. Обидно, но в генерации кода 1С ведущие российские модели YandexGPT и GigaChat работают хуже, чем ChatGPT. Хотя казалось бы, отечественные модели должны лучше работать с русским языком, российским ПО и тд. Однако, ChatGPT имеет существенные недостатки для обычного пользователя из РФ – плату за использование продвинутых моделей и запрет на доступ из РФ (API работает только через прокси-посредников). Это дополнительно повышает стоимость использования, растут риски в глазах бизнеса. Приходится искать альтернативы, не имеющие подобных недостатков. Здесь радует, что ситуация в отрасли меняется в лучшую сторону прямо на глазах – если полгода назад альтернатив ChatGPT для мира 1С я не находил в принципе, то сейчас они появляются все быстрее и быстрее. Новые модели выходят буквально каждую неделю. Более того, выходят открытые бесплатные модели, которые желающий вполне может запускать и использовать прямо на своем компьютере. Другими словами, для использования таких моделей не нужны и не используются никакие внешние сервисы. Конечно, надо принимать во внимание, что характеристики компьютера должны соответствовать предъявляемым требованиям. Для генерации кода на 1С простые и маленькие версии моделей вряд ли подойдут, результат их работы скорее разочарует. А серьезная большая модель на слабом компьютере либо вообще не запустится, либо будет работать неприемлемо медленно. Самым критичным параметром компьютера является размер ОЗУ. Для ускорения работы весомым плюсом станет наличие видеокарты от Nvidia последних поколений. Мои рекомендации по результатам проведенных лично тестов – ОЗУ от 32 Гб и видеокарта от Nvidia поколения 3000 или 4000 (скоро ожидается анонс видеокарт поколения 5000). Для ускорения запуска модели рекомендуется использовать SSD. Но прогресс неумолимо идет вперед, и к счастью, требования к компьютеру для запуска моделей ИИ постепенно снижаются.
Бизнес, в свою очередь, может использовать свои собственные серверы. Плюсом здесь будет уменьшение рисков потери конфиденциальных данных и вывод производительности на уровни, недоступные персональным компьютерам. Это может быть необходимым для использования ИИ в многопользовательской среде.
Данная обработка демонстрирует использование ИИ из 1С в варианте локальной БЯМ, запускаемой на компьютере пользователя.
Использованное стороннее ПО
Для запуска локальной модели ИИ используется KoboldCPP. Из аналогичных продуктов я выбрал его за возможность использования видеокарт Nvidia для ускорения работы и использования более объемных моделей за счет расширения доступной оперативной памяти. При ОЗУ в 64 Гб и видеокарте с 12 Гб видеопамяти получается запускать модели ИИ размером в 70 Гб, которые показывают очень неплохие результаты. Разумеется, скорость работы будет сильно падать с увеличением размера модели, мгновенных ответов от больших моделей ждать точно не стоит.
KoboldCPP имеет удобный веб-интерфейс для общения и настройки. Используются модели ИИ в формате файлов c расширением GGUF.
https://koboldai.com/Koboldcpp/
Ссылка на скачивание с GitHub - https://github.com/LostRuins/koboldcpp/releases
Пример командной строки запуска KoboldCPP на компьютере с видеокартой, имеющей 12 Гб видеопамяти, из которой используются рекомендованные Max – 1 = 11 Гб. contextsize 4096 – максимальный размер контекста запроса в токенах, с которым может работать модель:
C:\Kobold\koboldcpp.exe --model C:\AIModels\t-pro-it-1.0-q8_0.gguf --usecublas --gpulayers 11 --contextsize 4096
Модель ИИ
В качестве LLM я использовал новую модель от Т-Банка, опубликованную буквально несколько дней назад. Данная модель основана на Qwen от китайской компании Алибаба, дополнительно обучена специалистами Т-Банка и показала неплохие результаты в моих тестах. Модели от Т-Банка доступны на https://huggingface.co, ссылки для скачивания в статье ниже. Из других испытанных мною неплохие результаты в генерации кода 1С показали модели DeepSeeker и Qwen, также доступные на Huggingface.
Описание кода
Код для обращения к модели ИИ достаточно компактен и занимает не более страницы текста. Для передачи запроса и получения ответа используется API KoboldCPP, доступный по HTTP по адресу Localhost:5001. Код функции из приложенной обработки приведен на скриншоте ниже.
Результаты тестирования
Тестирование проводилось с помощью приложенной обработки на различных запросах по коду 1С и не только. Для запуска обработки подойдет пустая или любая конфигурация 1С 8.3, весь код находится в самой обработке. Я задавал модели различные каверзные вопросы, на которые не смог получить адекватный ответ от других моделей (исключая ChatGPT, он ответил наилучшим образом и выступал в качестве эталона). Список вопросов у меня постоянно пополняется, ниже приведены примеры ответов на некоторые из них. Вывод по результатам тестирования – ответы не идеальны, но в целом модель ИИ от Т-Банка тестирование выдержала, для задач в области программирования на 1С вполне может использоваться.
Проверено на следующих конфигурациях и релизах:
- 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.10.383
Вступайте в нашу телеграмм-группу Инфостарт
Обработка Искусственный интеллект Большая языковая модель large language model KoboldCPP БЯМ LLM локальная gguf Т-Банк
См. также
Нейросети Системный администратор Разработчик Аналитик Бухгалтер Пользователь Руководитель проекта 1С 8.3 1С:Документооборот 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Россия Платные (руб)
Подключите ИИ к 1С и решайте рабочие задачи обычными словами. От работы с данными до доработки конфигурации через расширения, всё в привычном чате с ИИ-помощником. Теперь с поддержкой DeepSeek Harness, Kimi Code и Kimi Work, доступных в России без VPN.
15990 руб.
30.07.2026 19411 43 4
SALE! %
Банковские операции Обмен с интернет-банком Мастера заполнения Нейросети Разработчик Бухгалтер Пользователь 1С:Предприятие 8 1C:ERP 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:ERP. Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 1С:Розница 3.0 Платные (руб)
Корректируйте банковские документы быстро и легко! Создайте правило обработки — и оно автоматически применится при загрузке выписки (отбор по любому реквизиту или регулярному выражению). Решение заполняет расшифровку платежа, комиссию эквайринга, подбирает ведомости на выплату зарплаты, помечает дубли из банка на удаление и многое другое. Доплачивать за алгоритмы не нужно — они включены в решение. Обработка работает при загрузке из файлов клиент-банка и через DirectBank. Новое — искусственный интеллект: модель приводит нестандартные назначения платежа к виду, понятному алгоритмам, а ИИ-ассистент прямо в 1С консультирует по решению и разбирает код правил и алгоритмов. Поддерживаются локальные и облачные OpenAI-совместимые модели — данные могут не покидать ваш контур.
17500 руб.
20.12.2024 21482 104 32
Инструментарий разработчика Нейросети Платные (руб)
Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданным 1С, справке синтакс-помощника и проверки синтаксиса.
15250 руб.
25.08.2025 76833 147 41
SALE! 30%
Нейросети 1С 8.3 1С:Документооборот 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Россия Платные (руб)
Расширение добавляет в 1С чат с ИИ-агентом. Пользователь пишет вопрос обычными словами: «какие УПД не подписаны?», «какой НДС к уплате за квартал?», «что висит на согласовании дольше недели?», а агент сам строит запросы к базе с правами этого пользователя и отвечает цифрами, таблицей, диаграммой или файлом Excel. Плитки «Аналитик», «Бухгалтер» и «Руководитель» дают сводку по базе одной кнопкой. Агент разбирает ошибки по скриншоту, сверяет прайсы поставщиков и проверяет коды маркировки. С версии 1.0.21 спрашивать можно и с телефона: QR-код в окне агента, без установки приложения. Работает в УТ 11, КА 2, ERP 2, БП 3.0, УНФ 3.0, Документооборот 3.0 и Альфа-Авто 6, ставится одним расширением.
18300 руб.
05.10.2026 3498 10 9
Инструментарий разработчика Нейросети Системный администратор Разработчик Руководитель проекта 1С 8.3 Платные (руб)
Обработка заменяет ФИО, организации, ИНН, ИИН, БИН, ОГРН, КПП, БИК, счета и IBAN, паспорта, СНИЛС, адреса, телефоны, почту и суммы на правдоподобные выдуманные перед отправкой данных в ChatGPT, Claude или YandexGPT, а потом расшифровывает ответ модели обратно, подставляя настоящие имена и настоящие числа. Возвращаются и те итоги, которые модель посчитала сама: суммы масштабируются одним коэффициентом, поэтому пропорции и доли переживают обезличивание. Словарь замен хранится в самой базе и подхватывается автоматически, даже если обработку закрывали. Реквизиты России и Казахстана, любая конфигурация от 8.3.24, без единой зависимости.
14640 руб.
07.08.2026 2167 3 0
Распознавание документов и образов Нейросети 1С:Предприятие 8 1С 8.3 1С 8.5 1C:Бухгалтерия 1С:Зарплата и Управление Персоналом 3.x Беларусь Россия Казахстан Армения Платные (руб)
ИИ-сканер документов с REST API для интеграции с 1С и корпоративными системами. Извлекайте данные из счетов, паспортов, дипломов, патентов и трудовых книжек за секунды. Точность человека - скорость машины. Приложение поддерживает восемь типов документов, четырех провайдеров ИИ (имеется возможность использования локальных ИИ), локальный REST API и экспорт в JSON. Важно! модель должна поддерживать функцию Vision (распознавание файлов и картинок). Запускайте используя локальные ИИ, без подписок и ограничений
6100 руб.
24.08.2026 1416 1 0
Нейросети Разработчик Бесплатно (free)
Как автоматически создавать маркетинговые ролики для собственных IT-продуктов, используя ИИ? В предыдущей статье я рассказывал о Zapis — приложении для работы с речью и текстом. Теперь расширил его возможности: добавил конвейер создания видео, в котором ИИ-агент изучает материалы проекта, готовит сценарий, подбирает реальные скриншоты и пишет текст диктора. Zapis отвечает за озвучку, а Remotion — за анимацию и сборку. На примере обмена ПУТ на OneBase -> 1С:Бухгалтерия 3.0 покажу готовый 83-секундный ролик из восьми сцен. Разберём, как устроен процесс, зачем нужны настоящие скриншоты интерфейса, как синхронизируются речь и изображение и что сохраняется для повторной сборки после изменений в продукте. Исходный код и инструкции доступны в открытом репозитории Zapis.
06.11.2026 420 Ibrogim 2
Нейросети Разработчик 1С 8.3 Бесплатно (free)
Как подключить ИИ-агента к разработке 1С на примере обработки «Почему не закрывается месяц»: одна папка, копия демобазы и несколько скриптов. Семь шагов: агент, выгрузка в файлы, правила, проверка кода, сборка, тесты YAxUnit и сценарии форм. На каждый: зачем он нужен, команда и где легко споткнуться. В конце: что выросло поверх, три ошибки с разных типовых и сколько это стоило.
05.11.2026 6326 Iliaelagin 6
Главное условие успешной работы - модель должна полностью вмещаться в свободную оперативную память. И, как написал, на скорость хорошо влияет наличие видеокарты NVidia. Чем большую часть модели удастся разместить в видеопамяти, тем заметнее будет эффект.
Попробовал. Согласен, далек ответ модели от совершенства. Общая последовательность действий в принципе верная, но синтаксис языка и близко не похож( За пример спасибо, обязательно буду проверять!
Процедура ВыгрузитьКонтактыВJSON(Контакты, ПутьКФайлу)
// Создаем JSON-объект
JSONДокумент = Новый JSONДокумент;
// Создаем массив для хранения контактов
КонтактыArray = JSONДокумент.ДобавитьМассив();
// Перебираем все записи в структуре Контакты
Для Каждого Контакт Из Контакты Цикл
// Создаем новый JSON-объект для каждого контакта
КонтактJSON = КонтактыArray.ДобавитьОбъект();
// Заполняем поля контакта
КонтактJSON.Добавить("Имя", Контакт.Имя);
КонтактJSON.Добавить("Телефон", Контакт.Телефон);
КонтактJSON.Добавить("Адрес", Контакт.Адрес);
КонецЦикла;
// Преобразуем JSON-документ в строку
JSONСтрока = JSONДокумент.Сериализовать();
// Открываем файл для записи
Файл = Новый Файл(ПутьКФайлу);
// Проверяем, существует ли файл
Если Файл.Существует() Тогда
Файл.Удалить();
КонецЕсли;
// Открываем файл для записи
Файл.ОткрытьДляЗаписи();
// Записываем JSON-строку в файл
Файл.Записать(JSONСтрока);
// Закрываем файл
Файл.Закрыть(); Показать
По сути это очень удобная экспертная система. ИИ - это просто коммерчески раскрученное имя.
Вместо того, чтобы вот это вот все сюда постить, попросите лучше sate-of-art модель написать ФИФО запросом. Вот это дело будет
Конечно! Вот пример запроса на языке 1С для получения остатков по методу FIFO (First-In, First-Out) из регистра "ОстаткиТовара" с учетом измерений "Товар", "Партия" и количества:
```1C
Процедура ПолучитьОстаткиПоFIFO()
// Создаем запрос к регистру накопления "ОстаткиТовара"
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|РегистрНакопления.ОстаткиТовара.Товар КАК Товар,
|РегистрНакопления.ОстаткиТовара.Партия КАК Партия,
|СУММА(РегистрНакопления.ОстаткиТовара.Количество) КАК Остаток
|ИЗ
|РЕГИСТРНАКОПЛЕНИЯ.ОстаткиТовара КАК РегистрНакопления.ОстаткиТовара
|ГДЕ
|РегистрНакопления.ОстаткиТовара.Дата <= &ДатаНачала
|ГРУППИРОВКА ПО
|РегистрНакопления.ОстаткиТовара.Товар,
|РегистрНакопления.ОстаткиТовара.Партия";
// Устанавливаем параметры запроса
Запрос.УстановитьПараметр("ДатаНачала", Сегодня());
// Выполняем запрос и получаем набор данных
Результат = Запрос.Выполнить().Выбрать();
// Инициализируем структуру для хранения остатков по FIFO
ОстаткиFIFO = Новый Структура;
// Обрабатываем результаты запроса
Пока Результат.Следующий() Цикл
Товар = Результат.Следующее();
Партия = Результат.Следующее();
Остаток = Результат.Следующее();
Если Не ОстаткиFIFO.Существует(Товар) Тогда
ОстаткиFIFO.Добавить(Товар, Новый Структура);
КонецЕсли;
ТекущиеОстатки = ОстаткиFIFO.Получить(Товар);
Если Не ТекущиеОстатки.Существует(Партия) Тогда
ТекущиеОстатки.Добавить(Партия, 0);
КонецЕсли;
ТекущиеОстатки.Положить(Партия, ТекущиеОстатки.Получить(Партия) + Остаток);
КонецЦикла;
// Выводим или используем результаты
Для Каждого Товар Из ОстаткиFIFO Цикл
|Вывести("Товар
" + Товар.Ключ);
|Для Каждого Партия Из Товар.Значение Цикл
| |Вывести(" Партия
" + Партия.Ключ + ", Остаток: " + Партия.Значение);
|КонецЦикла;
КонецЦикла;
КонецПроцедуры Показать```
Этот код создает запрос к регистру накопления "ОстаткиТовара", группирует данные по товару и партии, а затем обрабатывает их для получения остатков по методу FIFO. Вы можете настроить параметр `ДатаНачала`
есть таблица приходов Товар, Партия, Количество
есть таблица расходов Товар, Количество
нужен текст запроса для распределения по FIFO
И опять же. Режим "сказочника" никто не отменял.
Попросите ИИ рассказать сказку. Он расскажет. Вам одну, Васе другую, Наташе третью. Лично вам сегодня одну, завтра другую...
Прежде чем проводить эксперименты на тему программирования или запросов SQL, убедитесь, что запускаете модель в режиме "одна сказка для всех и всегда"
Хотя может пригодиться. Если вам платят за код постранично. Во времена линейного программирования мы с коллегой ломали голову над фрагментом кода предыдущего программиста на 20 листов примерно. Потом обнаружили if 1=0 then. Не забудьте только в самом конце подставить endif.
Из строки следующего вида: "dsfhs12.432.234.32sdfsdf21.434dsfsd4.34fsdfsdf334.342.34" вытащить все числа. Сложность в том, что в качестве разделителя разрядов и разделителя дробной части указывается точка "." Например, число 32342324.34 записывается как 32.342.324.34, а число 21434 как 21.434 Числа представлены в денежном формате. Это означает, что дробная часть имеет только два знака, если она есть.
Нужен код на языке 1С без использования регулярных выражений
Что вам выдаст Claude 3.5?
Функция ИзвлечьЧисла(Знач СтрокаВход) Экспорт
МассивЧисел = Новый Массив;
ТекущееЧисло = "";
ЕстьТочка = Ложь;
СчетчикПослеТочки = 0;
Для Индекс = 1 По СтрДлина(СтрокаВход) Цикл
Символ = Сред(СтрокаВход, Индекс, 1);
Если Символ = "." Тогда
// Если точка уже была или число еще не начали собирать
Если ЕстьТочка ИЛИ ПустаяСтрока(ТекущееЧисло) Тогда
// Начинаем собирать новое число
ТекущееЧисло = "";
ЕстьТочка = Ложь;
СчетчикПослеТочки = 0;
Продолжить;
КонецЕсли;
ЕстьТочка = Истина;
ТекущееЧисло = ТекущееЧисло + Символ;
Продолжить;
КонецЕсли;
Если СтрНайти("0123456789", Символ) > 0 Тогда
Если ЕстьТочка Тогда
СчетчикПослеТочки = СчетчикПослеТочки + 1;
// Если после точки больше двух цифр
Если СчетчикПослеТочки > 2 Тогда
// Сохраняем предыдущее число если оно корректное
Если ЗначениеЗаполнено(ТекущееЧисло) Тогда
МассивЧисел.Добавить(Число(ТекущееЧисло));
КонецЕсли;
// Начинаем собирать новое число
ТекущееЧисло = Символ;
ЕстьТочка = Ложь;
СчетчикПослеТочки = 0;
Продолжить;
КонецЕсли;
КонецЕсли;
ТекущееЧисло = ТекущееЧисло + Символ;
Иначе
// Если встретили не цифру и не точку
Если ЗначениеЗаполнено(ТекущееЧисло) Тогда
МассивЧисел.Добавить(Число(ТекущееЧисло));
КонецЕсли;
ТекущееЧисло = "";
ЕстьТочка = Ложь;
СчетчикПослеТочки = 0;
КонецЕсли;
КонецЦикла;
// Добавляем последнее число, если оно есть
Если ЗначениеЗаполнено(ТекущееЧисло) Тогда
МассивЧисел.Добавить(Число(ТекущееЧисло));
КонецЕсли;
Возврат МассивЧисел;
КонецФункции
// Пример использования
Процедура ТестИзвлечения()
СтрокаТест = "dsfhs12.432.234.32sdfsdf21.434dsfsd4.34fsdfsdf334.342.34";
МассивРезультат = ИзвлечьЧисла(СтрокаТест);
Для Каждого Число Из МассивРезультат Цикл
Сообщить(Число);
КонецЦикла;
КонецПроцедуры
ПоказатьЭтот код:
Проходит по строке посимвольно
Собирает числа, учитывая следующие правила:
Дробная часть может иметь только 2 знака после точки
Если после точки идет больше двух цифр, начинается новое число
Числа разделяются нецифровыми символами (кроме точки)
Сохраняет найденные числа в массив
Для строки "dsfhs12.432.234.32sdfsdf21.434dsfsd4.34fsdfsdf334.342.34" результат будет:
12.43
234.32
21.43
4.34
334.34
2.34
Код учитывает различные краевые случаи:
Несколько точек подряд
Точка в начале или конце числа
Буквы между цифрами
Дробные числа с более чем двумя знаками после точки (разбивает на разные числа)
Напиши код на языке 1С, чтобы из строки вида: "dsfhs12.432.234.32sdfsdf21.434dsfsd4.34fsdfsdf334.342.34" вытащить все числа. Дробная часть числа имеет 2 разряда, если есть.
Для решения задачи на языке 1С можно использовать регулярные выражения. Вот пример кода, который извлекает все числа из строки, учитывая, что дробная часть числа может иметь два разряда:
1C
Copy
Функция ИзвлечьЧисла(Строка)
РегулярноеВыражение = Новый РегулярноеВыражение("(\d+\.\d{2}|\d+)");
Совпадения = РегулярноеВыражение.НайтиВсе(Строка);
Результат = Новый Массив;
Для Каждого Совпадение Из Совпадения Цикл
Результат.Добавить(Совпадение.Значение);
КонецЦикла;
Возврат Результат;
КонецФункции
// Пример использования
Строка = "dsfhs12.432.234.32sdfsdf21.434dsfsd4.34fsdfsdf334.342.34";
Числа = ИзвлечьЧисла(Строка);
Для Каждого Число Из Числа Цикл
Сообщить(Число);
КонецЦикла;
Описание:
Регулярное выражение (\d+\.\d{2}|\d+):
\d+ — одна или более цифр.
\.\d{2} — точка и ровно две цифры (дробная часть).
| — логическое "или".
\d+ — одна или более цифр (целая часть числа без дробной части).
Метод НайтиВсе — находит все совпадения с регулярным выражением в строке.
Массив Результат — хранит все найденные числа.
Цикл Для Каждого — проходит по всем найденным числам и добавляет их в массив.
Функция Сообщить — выводит каждое число в сообщение (можно заменить на другие действия, например, запись в таблицу значений).
Пример вывода:
Copy
12.43
2.23
4.32
21.43
4.34
334.34
2.34
Этот код корректно обрабатывает строку и извлекает все числа, учитывая, что дробная часть может состоять из двух разрядов.
Напиши код на языке 1С без использования регулярных выражений, чтобы из строки вида: "dsfhs12.432.234.32sdfsdf21.434dsfsd4.34fsdfsdf334.342.34" вытащить все числа. Дробная часть числа имеет 2 разряда, если есть.
Если не использовать регулярные выражения, то можно реализовать алгоритм, который проходит по строке посимвольно и собирает числа, учитывая формат (целая часть и дробная часть из двух разрядов). Вот пример кода на языке 1С:
1C
Copy
Функция ИзвлечьЧисла(Строка)
Результат = Новый Массив;
ДлинаСтроки = СтрДлина(Строка);
Индекс = 1;
Пока Индекс <= ДлинаСтроки Цикл
Символ = Сред(Строка, Индекс, 1);
Если Найти("0123456789", Символ) > 0 Тогда
Число = "";
ТочкаНайдена = Ложь;
КоличествоЦифрПослеТочки = 0;
Пока Индекс <= ДлинаСтроки Цикл
Символ = Сред(Строка, Индекс, 1);
Если Найти("0123456789", Символ) > 0 Тогда
Число = Число + Символ;
Если ТочкаНайдена Тогда
КоличествоЦифрПослеТочки = КоличествоЦифрПослеТочки + 1;
КонецЕсли;
ИначеЕсли Символ = "." И Не ТочкаНайдена Тогда
Число = Число + Символ;
ТочкаНайдена = Истина;
Иначе
Прервать;
КонецЕсли;
Индекс = Индекс + 1;
КонецЦикла;
Если ТочкаНайдена И КоличествоЦифрПослеТочки = 2 Тогда
Результат.Добавить(Число);
ИначеЕсли Не ТочкаНайдена Тогда
Результат.Добавить(Число);
КонецЕсли;
Иначе
Индекс = Индекс + 1;
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции
// Пример использования
Строка = "dsfhs12.432.234.32sdfsdf21.434dsfsd4.34fsdfsdf334.342.34";
Числа = ИзвлечьЧисла(Строка);
Для Каждого Число Из Числа Цикл
Сообщить(Число);
КонецЦикла;
Описание:
Переменные:
Результат — массив для хранения найденных чисел.
ДлинаСтроки — длина входной строки.
Индекс — текущий индекс символа в строке.
Основной цикл:
Проходит по строке посимвольно.
Если символ является цифрой, начинается сбор числа.
Сбор числа:
Если встречается точка, она добавляется к числу, и начинается отсчет цифр после точки.
Если после точки найдено ровно две цифры, число считается корректным и добавляется в результат.
Если точка не найдена, число считается целым и также добавляется в результат.
Проверка формата:
Если число содержит точку, но после нее не две цифры, оно игнорируется.
Пример вывода:
Copy
12.43
2.23
4.32
21.43
4.34
334.34
2.34
Этот код корректно извлекает числа из строки, учитывая формат с двумя разрядами дробной части.
В каком виде получается готовая форма? Неужели Cloude Sonnet 3.5 уже умеет формировать файлы внешних обработок epf?
Интересно, а отчет на СКД сумеет сформировать? К сожалению, нет времени проверить.
Можно написать такой промт, причем ИИ поможет его сочинить:
В обработке будет управляемая форма с 2-мя полями:
1. Поле ввода текста
2. Поле выбора даты
В обработке будет 2 кнопки:
1. Кнопка "Сохранить"
2. Кнопка "Отмена"
При нажатии на кнопку "Сохранить" в таблицу регистрации будет добавлена новая запись с текстом из поля ввода и датой из поля выбора даты.
При нажатии на кнопку "Отмена" форма закроется без сохранения данных.
Внешняя обработка "ВводДанных"
Дальше мне курсор написал текст кода, тоже все замечательно.
&НаКлиенте
Перем ТекстВвода;
&НаКлиенте
Перем ДатаВвода;
// Процедура при создании формы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ТекстВвода = "";
ДатаВвода = ТекущаяДата();
КонецПроцедуры
// Обработчик нажатия кнопки "Сохранить"
&НаКлиенте
Процедура КнопкаСохранитьНажатие(Кнопка)
ЗаписатьДанныеВРегистр();
Закрыть();
КонецПроцедуры
// Процедура записи данных в регистр
&НаСервере
Процедура ЗаписатьДанныеВРегистр()
НаборЗаписей = РегистрыСведений.РегистрДанных.СоздатьНаборЗаписей();
Запись = НаборЗаписей.Добавить();
Запись.Текст = ТекстВвода;
Запись.Дата = ДатаВвода;
НаборЗаписей.Записать();
КонецПроцедуры
// Обработчик нажатия кнопки "Отмена"
&НаКлиенте
Процедура КнопкаОтменаНажатие(Кнопка)
Закрыть();
КонецПроцедуры
ПоказатьТеперь я хочу получить файл с расширением epf и управляемой формой внутри. Как это сделать? По-моему никак. Можно сохранить файл с расширением epf, но это будет тот же текстовый файл, просто с другим расширением.
Прикрепляю получившиеся в Cursor файлы xml и bsl.
Пришлите, пож-та, получившиеся у вас файлы. Я их подсуну ИИ и тогда он поймет что я от него хочу.
Удивительно, уже два года прошло, но пока не готовы. Что ж, бывает и так.
А для ЕДТ, как мне кажется, можно уже и сейчас что-то прикрутить в виде плагинов.
Другое дело, что конфигурации огромные. Я, например, хотел в Курсоре открыть проект с исходниками от БП+БитФинанс. Он индексировать кодовую базу отказался, т.к. имеет лимит в 100000 файлов. Да, будет что-то подсказывать, но хотелось бы, чтобы весь контекст конфигурации держал в себе при ответах на вопросы и подсказках.
У меня есть в голове представляю себе как можно сделать помощника, который бы умел с конфигурациями over 100000 файлов работать. На сегодняшний - это решаемая задачка, на разработку - где-то год*человек - если продовую и mvp - 1,5-2 месяца*человека.
Там есть вариант добавить в игнор какие-то типы файлов или целые каталоги, но для типовых это скорее всего не решит проблему. Описание метаданных, их форм, и модулей точно не поместиться в этот лимит (
1С такое обычно никогда не рассказывает. Только где-то на финальной стадии, ближе к альфа.
Какая модель лучше работает с генерацией отчетов на скд?
(82) Подскажите, плиз, какую модель Qwen лучше использовать для написания кода на 1С?
А то их тут что-то очень много. Даже есть deepseek-r1-distill-qwen-32b в разделе deepseek.
Длинный список:
qwq-32b
eva-qwen-2.5-72b
eva-qwen-2.5-32b
qwen-2.5-72b-instruct
qwen-2.5-coder-32b-instruct
qwen-2.5-7b-instruct
qwen-2.5-vl-72b-instruct
qwen-2.5-coder-32b-instruct:free
qwq-32b:free
qwen2.5-32b-instruct
qwen2.5-vl-72b-instruct:free
qwen2.5-vl-72b-instruct
qwen-2.5-72b-instruct:free
qwq-32b-preview:free
Рейтинг: 80
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 2263705
Создание 16.12.24 17:00
Обновление 12.02.25 15:05
Просмотры 10708
Загрузки 18
Рейтинг
28
Комментарии 84
Код открыт Да
Рубрики Нейросети
Кому Разработчик
Тип файла Внешняя обработка (ert,epf)
Платформа 1С:Предприятие 8
Конфигурация Универсальные
Операционная система Windows
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)