Вайб-кодинг в 1С: Как заставить ИИ БЕСПЛАТНО писать новый код с помощью MCP-серверов

В прошлый раз мы рассматривали основы «вайб-кодинга» в Visual Studio Code с расширением Roo Code, ограничиваясь рефакторингом. Пришло время перейти на новый уровень: генерация нового кода с нуля.
Главная проблема бесплатных нейросетей (да и платных тоже) — они плохо знают синтаксис 1С и, конечно, совсем не знают структуру конкретных конфигураций. Решить это помогают MCP-сервера.
Настройка окружения: Секрет «умного» контекста.
Для работы мы опять будем использовать VS Code с расширением Roo Code. Ключевое отличие в этот раз — использование Model Context Protocol (MCP). Это мост, который передает нейросети знания о вашей базе.
Переходим в настройки Roo Code, на третью сверху закладку "MCP Servers"

1. Настройка Project MCP: В настройках Roo Code можно задавать разные наборы серверов для разных проектов, что очень удобно. Нам нужен пункт "Edit Project MCP". Откроется файл, куда нужно в формате json указать конфигурацию MCP.
Для разработки я использую два типа серверов:
Metadata MCP: Передает структуру метаданных (например, УПП или УТ 10). Благодаря ему модель «видит» реальные имена документов и справочников.
Я использовал бесплатный MCP сервер из этой публикации .
Работает как часы. За счёт свойства x-collection-name можно разделять разные конфигурации в одном MCP. Автору полнейший респект!
Вот мой форк для подключения к VScode.
Syntax MCP: Подсказывает актуальный синтаксис языка 1С. Это критично для бесплатных моделей или старых версий платформы (например, 8.2), чтобы ИИ не путал функции.
Я использовал бесплатный MCP сервер отсюда https://github.com/Antonio1C/1c-syntax-helper-mcp
Вот мой форк (я уже не помню, что я там дорабатывал, возможно SSE, но для примера в статье я использую свои форки)
{
"mcpServers": {
"my-1c-mcp-server": {
"url": "http://192.168.1.13:8012/sse",
"timeout": 60,
"headers": {
"x-collection-name": "1cservice_rag"
},
"disabled": false,
"alwaysAllow": [
"get_document_info",
"search_1c_documentation"
]
},
"1c-syntax-helper": {
"url": "http://192.168.1.13:8002/mcp",
"timeout": 60,
"disabled": false,
"alwaysAllow": [
"get_syntax_info",
"find_1c_help"
]
}
}
}
MCP находятся в контейнерах, поэтом поднимать их достаточно просто и быстро. Ну и поддержки они никакой не требуют.
2. Выбор провайдера: Вместо OpenRouter в этот раз используется сервис Cerebras с моделью GLM 4.7. Его главное преимущество — огромные лимиты (до 1 млн токенов), что позволяет вести длинные диалоги без пауз (или почти без пауз) БЕСПЛАТНО.
Практическая задача: Обогащение Excel-файла.
Я взял реальный кейс (немного переиначив его под типовую УТ10): есть файл Excel с номерами и датами заказов покупателей. Нужно написать код, который найдет эти заказы в базе 1С и добавит в файл данные об ответственном, контрагенте, телефоне (из регистра сведений контактная информация) и датах отгрузки/оплаты.
Как составить промпт?
Чтобы модель не «галлюцинировала», промт был разделен на три части (из них вторая необязательная и нужна для простоты демонстрации):
• Бизнес-задача: Четкое описание колонок Excel и того, что нужно добавить. По сути, это то, что пришло в Jira от пользователя )
• Технические ограничения: Просьба писать код «простынёй» без лишних функций, чтобы его можно было сразу вставить в консоль кода 1С и выполнить - это для того, чтобы сразу проверить результат (хотя воспоминание из будущего - агенты могут генерить уже и полностью обработки с формами).
• Принудительный контекст: Команда обязательно использовать данные из подключенных MCP-серверов для поиска метаданных и проверки синтаксиса.
У меня есть файл excel в котором три колонки , первая строка названия колонок, нужно обрабатывать со второй.
Во второй колонке номер документа Заказ клиента , например ТК000000007 а в третей дата в виде 03.02.2007 14:00:00 нужно написать код который добавить колонки в файл и сохранит его добавив к имени "_1" выведет в колонки номер документа Заказ , Дата документа, Ответственного, Контрагента, Телефон контрагента , Дату отгрузки, Дату оплаты.
Не нужно форматирования, никаких шрифтов и выделений и пиши все без функций, просто код так чтобы я мог вставить текст в консоль кода и выполнить, чтобы код был одной простынёй. Обязательно используй MCP.
Для понимания структуры конфигурации, реквизитов объектов обязательно используй my-1c-mcp-server а для понимания синтаксиса языка 1С используй 1c-syntax-helper . Напиши код в файле ОбогатитьExcel.bsl . Телефон контрагента бери из регистра "Контактная информация ", документ ищи по дате и номеру.
Прошу обратить внимание, что в промпте указан документ "Заказ клиента", но такого документа нет в нашей конфигурации (он называется "заказ покупателя"). Однако, забегая вперёд, модель найдёт нужный документ и напишет код правильно. Это ключевая заслуга MCP. Нам не нужно писать километровый промпт с названием всех наших метаданных, даже если они нетиповые).
Сегодня был на вебинаре, там консультант рассказывала и показывала кейс, как она за 5 часов решила задачу написания отчёта для клиента которую оценили в 19 часов. (без опыта программирования без MCP и агентов, просто через браузерый чат с клодом) Но у неё было ТЗ которое она составила. Это ТЗ было суперподробным (я таких вообще не помню на своём веку), с указанием имён метаданных, срезов последних и т.п.
Увиденное натолкнуло меня на мысль:
Голая модель может заменить программиста ( но потребуется очень хороший консультант)
Модель с MCP заменит их всех
Запускаем промпт
Модель сразу начинает шуршать по нашим MCP, открывая для себя удивительный мир 1С
На самом деле рассматриваемая модель весьма неплохо знает 1С, поэтому обращения все по существу и в основном по структуре нашей конфигурации. Но некоторые модели (не буду показывать пальцем, но оставил в видео в качестве юмора) первый раз слышат о нашем стеке и могут уйти учиться 1С надолго )))

Периодически возникают ошибки из-за частых запросов (у нас всё-таки бесплатный провайдер). Но делать ничего не надо, Roocode сам подождёт и продолжит. Можно пока налить себе кофе или чай.
Первый раз нас спрашивают разрешения на те или иные действия, но, я думаю, вы легко разберётесь, как настроить автосоглашательство, если захотите )

В конце модель пишет отчёт о проделанной работе и выводит результат.
Результаты: ИИ против Человека
// Назначение: Обогащение Excel файлы данными из 1С по заказам покупателей
// Параметры (использовать константы внутри кода)
// ПутьКФайлу - путь к $724;исходному Excel файлу
// Возвращаемое: файл с суффиксом _1, содержащий обогащенные данные
// Примечание: Код выполняется без использования функций, простынёй
// Операции с БД: Чтение документов ЗаказПокупателя и регистра КонтактнаяИнформация
// Интеграция: Работа с Excel файлами
// initialization
ТабДокВходящий = Новый ТабличныйДокумент;
ПутьКФайлу = "C:\1C_VSCode\NewCodeMCP\Заказы.xls";
ТабДокВходящий.Прочитать(ПутьКФайлу, СпособЧтенияЗначенийТабличногоДокумента.Значение);
// input_validation
КоличествоСтрок = ТабДокВходящий.ВысотаТаблицы;
КоличествоКолонок = ТабДокВходящий.ШиринаТаблицы;
Если КоличествоСтрок < 2 Тогда
Сообщить("Файл пуст или содержит только заголовки");
Возврат;
КонецЕсли;
// data_processing
ТабДокИсходящий = Новый ТабличныйДокумент;
ЗаголовкиИсходный = Новый Массив;
ЗаголовкиИсходный.Добавить("Номер документа");
ЗаголовкиИсходный.Добавить("Дата документа");
ЗаголовкиИсходный.Добавить("Номер заказа из файла");
// creating_header
ТабДокИсходящий.Область(1, 1, 1, 7).Текст = "Номер документа";
ТабДокИсходящий.Область(1, 2, 1, 7).Текст = "Дата документа";
ТабДокИсходящий.Область(1, 3, 1, 7).Текст = "Ответственный";
ТабДокИсходящий.Область(1, 4, 1, 7).Текст = "Контрагент";
ТабДокИсходящий.Область(1, 5, 1, 7).Текст = "Телефон контрагента";
ТабДокИсходящий.Область(1, 6, 1, 7).Текст = "Дата отгрузки";
ТабДокИсходящий.Область(1, 7, 1, 7).Текст = "Дата оплаты";
НомерСтрокиВыход = 2;
// getting_phone_type
ЗапросТелефон = Новый Запрос;
ЗапросТелефон.Текст =
"ВЫБРАТЬ
| КонтактнаяИнформация.Представление КАК Телефон
|ИЗ
| РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
|ГДЕ
| КонтактнаяИнформация.Объект = &Контрагент
| И КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)";
// loop_processing
Для НомерСтроки = 2 По КоличествоСтрок Цикл
// reading_excel_data
ЯчейкаНомер = ТабДокВходящий.Область(НомерСтроки, 2, НомерСтроки, 2).Текст;
ЯчейкаДата = ТабДокВходящий.Область(НомерСтроки, 3, НомерСтроки, 3).Текст;
// parsing_date
ДатаИзФайла = ЯчейкаДата;
//#Ошибка ДатаИзФайла = ЗначениеИзСтроки(ЯчейкаДата);
// finding_document
ДокументЗаказ = Документы.ЗаказПокупателя.НайтиПоНомеру(ЯчейкаНомер, ДатаИзФайла);
// default_values
НомерДокумента = "";
ДатаДокумента = "";
Ответственный = "";
Контрагент = "";
Телефон = "";
ДатаОтгрузки = "";
ДатаОплаты = "";
// filling_document_data
Если ДокументЗаказ <> Неопределено Тогда
НомерДокумента = ДокументЗаказ.Номер;
ДатаДокумента = ДокументЗаказ.Дата;
// getting_responsible
Если ЗначениеЗаполнено(ДокументЗаказ.Ответственный) Тогда
Ответственный = ДокументЗаказ.Ответственный.Наименование;
КонецЕсли;
// getting_contractor
Если ЗначениеЗаполнено(ДокументЗаказ.Контрагент) Тогда
Контрагент = ДокументЗаказ.Контрагент.Наименование;
// database_query - getting_phone
ЗапросТелефон.УстановитьПараметр("Контрагент", ДокументЗаказ.Контрагент);
ВыборкаТелефон = ЗапросТелефон.Выполнить().Выбрать();
Если ВыборкаТелефон.Следующий() Тогда
Телефон = ВыборкаТелефон.Телефон;
КонецЕсли;
КонецЕсли;
// getting_shipment_date
Если ЗначениеЗаполнено(ДокументЗаказ.ДатаОтгрузки) Тогда
ДатаОтгрузки = ДокументЗаказ.ДатаОтгрузки;
КонецЕсли;
// getting_payment_date
Если ЗначениеЗаполнено(ДокументЗаказ.ДатаОплаты) Тогда
ДатаОплаты = ДокументЗаказ.ДатаОплаты;
КонецЕсли;
КонецЕсли;
// writing_output_data
ТабДокИсходящий.Область(НомерСтрокиВыход, 1, НомерСтрокиВыход, 7).Текст = НомерДокумента;
ТабДокИсходящий.Область(НомерСтрокиВыход, 2, НомерСтрокиВыход, 7).Текст = Формат(ДатаДокумента, "ДЛФ=DT");
ТабДокИсходящий.Область(НомерСтрокиВыход, 3, НомерСтрокиВыход, 7).Текст = Ответственный;
ТабДокИсходящий.Область(НомерСтрокиВыход, 4, НомерСтрокиВыход, 7).Текст = Контрагент;
ТабДокИсходящий.Область(НомерСтрокиВыход, 5, НомерСтрокиВыход, 7).Текст = Телефон;
ТабДокИсходящий.Область(НомерСтрокиВыход, 6, НомерСтрокиВыход, 7).Текст = Формат(ДатаОтгрузки, "ДЛФ=DT");
ТабДокИсходящий.Область(НомерСтрокиВыход, 7, НомерСтрокиВыход, 7).Текст = Формат(ДатаОплаты, "ДЛФ=DT");
НомерСтрокиВыход = НомерСтрокиВыход + 1;
КонецЦикла;
// database_write - saving_file
ПозицияТочки = СтрНайти(ПутьКФайлу, ".", Истина);
//#Ошибка ПозицияТочки = СтрНайти(ПутьКФайлу, ".", ПоискКонца);
ИмяБезРасширения = Лев(ПутьКФайлу, ПозицияТочки - 1);
ПутьВыходной = ИмяБезРасширения + "1.xls";
ТабДокИсходящий.Записать(ПутьВыходной, ТипФайлаТабличногоДокумента.XLS);
Сообщить("Файл успешно создан: " + ПутьВыходной);
Я, кстати, не планировал писать статью, когда записывал видео и не сохранил код.
Но один известный ИИ мне по скринам из видео восстановил код. Внимательный читатель комментариев догадается какой именно ИИ. По той же причине некоторые скриншоты плохого качества.
Несмотря на то, что использовалась бесплатная модель Z-ai, результат впечатляет:
• Понимание конфигурации: Модель сама поняла, что в «УТ 10» документ называется «Заказ покупателя», а не «Заказ клиента» (как было в промпте).
• Скорость: Код был написан и отлажен за 15 минут. По оценке автора, человеку на эту же задачу потребовался бы минимум 1 час.
• Качество: В процессе возникло всего 2 мелкие ошибки (например, несуществующая переменная ПоискКонца), которые могут быть исправлены за пару минут ручными правками или уточняющим вопросом к модели.
Итог: Модель справилась на твердую четверку. Даже бесплатные инструменты при правильной настройке контекста через MCP позволяют автоматизировать рутину в 1С не хуже, чем многие платные аналоги.
И в конце немного про другие модели в той же задаче
Бесплатный deepseek справился со второй попытки

Платный Sonnet 4.5 допустил одну опечатку и намудрил с шапкой.
Он, кстати, использовал com объекты.

🚀 Что дальше
В следующей статье расскажу про:
-
Claude Code в 1С с MCP
-
Оптимизация огромного легаси кода.
🎥 Видео-версия
Спасибо за внимание.
Предыдущие статьи:
Вайб-кодинг в 1С: как рефакторить код бесплатно с помощью VS Code и Roo Code
Следующие статьи:
Вайб-кодинг в 1С: Подключаем локальные MCP-сервера к любой нейросети через MCP SuperAssistant
Вайб-кодинг в 1С: Создаём MCP для 1С 7.7 за вечер и пишем обмен с бухгалтерий 8
Вайбкодинг в 1С: Codex Desktop + GPT-5.4 пишет обработку САМ (Скайнет?)
Вайб-кодинг в 1С: Настраиваем эффективный workflow разработки внешних обработок через CLI и Git
Вступайте в нашу телеграмм-группу Инфостарт
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
Нейросети Системный администратор Разработчик Аналитик Бухгалтер Пользователь Руководитель проекта 1С 8.3 1С:Документооборот 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Россия Платные (руб)
Подключите ИИ к 1С и решайте рабочие задачи обычными словами. От работы с данными до доработки конфигурации через расширения, всё в привычном чате с ИИ-помощником. Теперь с поддержкой DeepSeek Harness, Kimi Code и Kimi Work, доступных в России без VPN.
15990 руб.
30.07.2026 19349 40 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 21442 104 32
Инструментарий разработчика Нейросети Платные (руб)
Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданным 1С, справке синтакс-помощника и проверки синтаксиса.
15250 руб.
25.08.2025 76742 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 3412 10 9
Инструментарий разработчика Нейросети Системный администратор Разработчик Руководитель проекта 1С 8.3 Платные (руб)
Обработка заменяет ФИО, организации, ИНН, ИИН, БИН, ОГРН, КПП, БИК, счета и IBAN, паспорта, СНИЛС, адреса, телефоны, почту и суммы на правдоподобные выдуманные перед отправкой данных в ChatGPT, Claude или YandexGPT, а потом расшифровывает ответ модели обратно, подставляя настоящие имена и настоящие числа. Возвращаются и те итоги, которые модель посчитала сама: суммы масштабируются одним коэффициентом, поэтому пропорции и доли переживают обезличивание. Словарь замен хранится в самой базе и подхватывается автоматически, даже если обработку закрывали. Реквизиты России и Казахстана, любая конфигурация от 8.3.24, без единой зависимости.
14640 руб.
07.08.2026 2139 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 1403 1 0
Инструментарий разработчика Нейросети Разработчик 1С 8.3 Бесплатно (free)
Сделал внешнюю обработку и небольшой MCP-сервер, через которые ИИ-агент выполняет запросы, выражения и код прямо в открытом сеансе 1С и смотрит метаданные конфигурации. В конфигурацию ничего не встраивается и ничего не публикуется: команды ходят файлами через каталог на вашем компьютере. Серверный код агента по умолчанию откатывается, а запись в базу вы разрешаете сами, тумблером на форме обработки.
29.10.2026 4754 nt_app 12
Нейросети Разработчик 1С:Предприятие 8 Россия Бесплатно (free)
За 2026 год MCP-инструменты для 1С прошли путь от «покажи метаданные» до «напиши код, загрузи в базу и проверь на живых данных». Собрали значимые публикации Инфостарта за год, описывающие MCP-серверы для подключения баз 1С к ИИ-агентам, и сравнили их по трём осям: зрелость, способ технической реализации подключения и требует ли инструмент изменения конфигурации базы 1С.
28.10.2026 8735 pfihr 12
С оригинальной репы - ОК но под kilocode не смог настроить. С вашего форка - зависает намертво.
Контейнер стартует,
netstat -ano | findstr ":8002" и netstat -ano | findstr ":9200" - все ОК.
Еще пробовал с вашим форком в docker-compose.yml для сервиса mcp-server поставить порты "8000:8000" - но тогда падает на ошибке.
Не знаете в чем может проблема?
ТабДокВходящий = Новый ТабличныйДокумент;
ПутьКФайлу = "C:\1C_VSCode\NewCodeMCP\Заказы.xls";
ТабДокВходящий.Прочитать(ПутьКФайлу, СпособЧтенияЗначенийТабличногоДокумента.Значение);
// input_validation
КоличествоСтрок = ТабДокВходящий.ВысотаТаблицы;
КоличествоКолонок = ТабДокВходящий.ШиринаТаблицы;теперь так, да? - интересненько ....
Промт взял у вас - убрал совсем лишнее для Алисы.
вот результат за 2 секунды:
// Подключение необходимых библиотек
ПодключитьВнешнююКомпоненту("1C:Excel");
// Создаем объект Excel
Excel = Новый Excel;
// Открываем файл
Файл = Excel.ОткрытьФайл("C:\Путь\К\Вашему\Файлу.xlsx");
// Получаем активный лист
Лист = Файл.Листы.Получить(1);
// Добавляем новые колонки
Лист.Ячейки(1,1).Значение = "Номер документа";
Лист.Ячейки(1,2).Значение = "Дата документа";
Лист.Ячейки(1,3).Значение = "Ответственный";
Лист.Ячейки(1,4).Значение = "Контрагент";
Лист.Ячейки(1,5).Значение = "Телефон контрагента";
Лист.Ячейки(1,6).Значение = "Дата отгрузки";
Лист.Ячейки(1,7).Значение = "Дата оплаты";
// Инициализируем переменные
НомерДокумента = "";
ДатаДокумента = "";
Ответственный = "";
Контрагент = "";
ТелефонКонтрагента = "";
ДатаОтгрузки = "";
ДатаОплаты = "";
// Проходим по строкам начиная со второй
Для Строка = 2 По Лист.Строки.Количество() Цикл
// Получаем данные из файла
НомерДокумента = Лист.Ячейки(Строка,2).Значение;
ДатаДокумента = Лист.Ячейки(Строка,3).Значение;
// Получаем информацию из регистра
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ | КонтактныеЛица.Телефон |ИЗ | РегистрСведений.КонтактнаяИнформация КАК КонтактныеЛица |ГДЕ | КонтактныеЛица.Контрагент = &Контрагент";
Контрагент = Лист.Ячейки(Строка,4).Значение;
Запрос.УстановитьПараметр("Контрагент", Контрагент);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
ТелефонКонтрагента = "Не найдено";
Иначе
ТелефонКонтрагента = Результат.Выбрать().Телефон;
КонецЕсли;
// Определяем даты отгрузки и оплаты
ДатаОтгрузки = ДатаДокумента;
ДатаОплаты = ДатаДокумента;
// Записываем данные в новые колонки
Лист.Ячейки(Строка,5).Значение = ТелефонКонтрагента;
Лист.Ячейки(Строка,6).Значение = ДатаОтгрузки;
Лист.Ячейки(Строка,7).Значение = ДатаОплаты;
КонецЦикла;
// Сохраняем файл с новым именем
Файл.СохранитьКак("C:\Путь\К\Вашему\Файлу_1.xlsx"); Показать
Да, только есть один минус. Код полностью не рабочий
Начиная от выдуманного Excel = Новый Excel; Затем вообще нет поиска документа. Запрос тоже не рабочий
// Объявляем переменные
ИмяФайла = "C:\Отчеты\Исходный_файл.xlsx"; // укажите полный путь к файлу
// открываем книгу Excel
КнигаExcel = Новый COMОбъект("Excel.Application");
КнигаExcel.Visible = Ложь;
РабочаяКнига = КнигаExcel.Workbooks.Open(ИмяФайла);
РабочийЛист = РабочаяКнига.ActiveSheet;
// Получаем диапазон строки заголовков
СтрокаЗаголовков = РабочийЛист.Range("A1:C1").Value();
// Определяем количество записей
КоличествоЗаписей = РабочийЛист.UsedRange.Rows.Count - 1; // минус заголовочная строка
// Создаем дополнительные колонки справа от существующего диапазона
РабочийЛист.Cells(1, 4).Value = "Номер документа";
РабочийЛист.Cells(1, 5).Value = "Дата документа";
РабочийЛист.Cells(1, 6).Value = "Ответственный";
// Цикл заполнения новых колонок
Для i = 2 По КоличествоЗаписей + 1 Цикл
НомерДокументаЗаказчика = Строка(РабочийЛист.Cells(i, 2));
ДатаДокумента = Формат(РабочийЛист.Cells(i, 3),"ДАТА=ДД.ММ.ГГГГ ЧЧ:ММ:СС");
// Значение поля ответственный берем произвольным примером (нужно адаптировать)
Ответственный = "Иванов И.И.";
// Заполняем новыми значениями ячейки
РабочийЛист.Cells(i, 4).Value = НомерДокументаЗаказчика;
РабочийЛист.Cells(i, 5).Value = ДатаДокумента;
РабочийЛист.Cells(i, 6).Value = Ответственный;
КонецЦикла;
// Сохраняем файл под новым именем
НовыйИмяФайла = Строка(ИмяФайла) + "_1";
РабочаяКнига.SaveAs(НовыйИмяФайла);
// Закрываем рабочую книгу и приложение Excel
РабочаяКнига.Close();
КнигаExcel.Quit();
Сообщить("Обработка успешно завершена."); ПоказатьСтарик, спасибо за наводку. Пишите, пож-та, в конструктивном ключе - то есть про богов и кто там во что верит - это все лирика...
// Файл: ОбогатитьExcel.bsl
Процедура ОбогатитьExcel(ПутьКФайлу)
// Читаем исходный Excel
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.Прочитать(ПутьКФайлу);
// Получаем область с данными (начиная со 2‑й строки)
ВысотаТаблицы = ТабличныйДокумент.ВысотаТаблицы;
ШиринаТаблицы = ТабличныйДокумент.ШиринаТаблицы;
// Добавляем новые колонки (с 4‑й по 7‑ю)
Для НомерКолонки = 4 По 7 Цикл
Область = ТабличныйДокумент.Область(1, НомерКолонки);
Если НомерКолонки = 4 Тогда
Область.Текст = "Ответственный";
ИначеЕсли НомерКолонки = 5 Тогда
Область.Текст = "Контрагент";
ИначеЕсли НомерКолонки = 6 Тогда
Область.Текст = "Телефон контрагента";
ИначеЕсли НомерКолонки = 7 Тогда
Область.Текст = "Дата отгрузки";
КонецЕсли;
КонецЦикла;
// Проходим по строкам данных (со 2‑й строки)
Для ТекущаяСтрока = 2 По ВысотаТаблицы Цикл
// Получаем номер заказа и дату из исходных колонок
НомерЗаказа = ТабличныйДокумент.Область(ТекущаяСтрока, 2).Текст; // колонка 2 — «Заказ клиента»
ДатаСтрокой = ТабличныйДокумент.Область(ТекущаяСтрока, 3).Текст; // колонка 3 — дата
// Преобразуем строку даты в дату 1С
ДатаДокумента = Дата(ДатаСтрокой);
// Ищем документ по номеру и дате
ДокументЗаказ = Документы.ЗаказКлиента.НайтиПоНомеру(НомерЗаказа, ДатаДокумента);
Если Не ЗначениеЗаполнено(ДокументЗаказ) Тогда
Продолжить; // если документ не найден — пропускаем строку
КонецЕсли;
// Заполняем новые колонки
// Ответственный
ТабличныйДокумент.Область(ТекущаяСтрока, 4).Текст = ДокументЗаказ.Ответственный.Наименование;
// Контрагент
ТабличныйДокумент.Область(ТекущаяСтрока, 5).Текст = ДокументЗаказ.Контрагент.Наименование;
// Телефон контрагента (из регистра «Контактная информация»)
Запрос = Новый Запрос;
Запрос.Текст = "
ВЫБРАТЬ
КонтактнаяИнформация.Значение
ИЗ
РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
КонтактнаяИнформация.Объект = &Контрагент
И КонтактнаяИнформация.Вид = &ВидТелефона";
Запрос.УстановитьПараметр("Контрагент", ДокументЗаказ.Контрагент);
Запрос.УстановитьПараметр("ВидТелефона", Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
ТабличныйДокумент.Область(ТекущаяСтрока, 6).Текст = Выборка.Значение;
Иначе
ТабличныйДокумент.Область(ТекущаяСтрока, 6).Текст = "";
КонецЕсли;
// Дата отгрузки
ТабличныйДокумент.Область(ТекущаяСтрока, 7).Текст = Формат(ДокументЗаказ.ДатаОтгрузки, "ДФ=dd.MM.yyyy");
// Дата оплаты (дополнительно, колонка 8)
Если ШиринаТаблицы < 8 Тогда
Область = ТабличныйДокумент.Область(1, 8);
Область.Текст = "Дата оплаты";
КонецЕсли;
ТабличныйДокумент.Область(ТекущаяСтрока, 8).Текст = Формат(ДокументЗаказ.ДатаОплаты, "ДФ=dd.MM.yyyy");
КонецЦикла;
// Сохраняем файл с суффиксом "_1"
НовыйПуть = СтрЗаменить(ПутьКФайлу, ".xlsx", "_1.xlsx");
ТабличныйДокумент.Записать(НовыйПуть, ТипФайлаТабличногоДокумента.XLSX);
Сообщить("Файл сохранён: " + НовыйПуть);
КонецПроцедуры
// Вызов процедуры (пример)
// ОбогатитьExcel("C:\Путь\К\Вашему\Файлу.xlsx");
Показать // Телефон контрагента (из табличной части «КонтактнаяИнформация» контрагента)
Телефон = "";
Для Каждого СтрокаКИ Из ДокументЗаказ.Контрагент.КонтактнаяИнформация Цикл
Если СтрокаКИ.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента Тогда
Телефон = СтрокаКИ.Значение;
Прервать;
КонецЕсли;
КонецЦикла;
ТабличныйДокумент.Область(ТекущаяСтрока, 6).Текст = Телефон; ПоказатьВот неделю назад у 1С:Напарник отвалилась видно эта RAG база и он выдал мне такое (на картинке). так что .... про "наше" меньше радоваться, чтобы обучать модель нужны сервера на сотни миллионов баксов, такое могут позволить себе только США и Китай в основном. а запустить сервер с ИИ для пользователей может любой, нужно не особо дорогое оборудование.
Видео не открывается вообще. Куда вы загрузили его? Оставьте ссылку под видео хотя бы, потому что ничего не работает.
"ВЫБРАТЬ ПЕРВЫЕ 1
| Док.Номер КАК Номер,
| Док.Дата КАК Дата,
| Док.Ответственный.Наименование КАК Ответственный,
| Док.Контрагент КАК КонтрагентСсылка,
| Док.Контрагент.Наименование КАК Контрагент,
| Док.ДатаОтгрузки КАК ДатаОтгрузки
|ИЗ
| Документ.ЗаказПокупателя КАК Док
|ГДЕ
| Док.Номер = &Номер
| И Док.Дата = &Дата";
Показать1. Документ.ЗаказПокупателя вместо ЗаказКлиента — так называется документ в конфигурации
2. ДатаОплаты и ДатаОтгрузки — оба реквизита в шапке документа, отдельный запрос к ТЧ не нужен, всё берётся одним
запросом 3. КИ.Тип = ЗНАЧЕНИЕ(...Телефон) — измерение Тип напрямую на регистре КонтактнаяИнформация (а не КИ.Вид.Тип)
Перед запуском нужно указать путь к Excel-файлу в строке 4.
как итог 44% сессии сожрано на простую задачу. Может запилю сравнение расхода токенов с MCP и без
2. С MCP вам не нужно тащить с собой все файлы проекта, у вас просто есть эндпоинт в сети. вы вообще можете пилить одну внешнюю обработку с нуля. Или можете писать код в браузере бесплатно, только модель будет знать ваши метаданные (об этом следующая статья)
3. А вообще вопрос вы задаете правильный. Никакого "так делать правильно" не существует. всё меняется каждый день.
Расширение для ERP 2.5 с 135 тыс строк кода только в одном модуле. Cursor переваривает играючи. Roo, потратив деньги/токены в конце сдаётся и даже промежуточного результата не выдаёт.
GIGA IDE CE 2025.1 тоже не может работать с такими большими проектами, сам мне об этом в чате сказал.
Попробую бесплатные, но у меня платные MCP от ИС. Судя по описанию, почти одинаковые.
Roo часто просто не мог открыть большой файл, чтобы внести в него изменения, которые он сгенерировал.
ps. ssd диски по весу сейчас дороже золота. MCP под каждый проект и под каждый IDE обойдётся аналогично. эх...
А если один MCP работает с одной IDE, а другой с другой, то нужно ещё больше места.
Есть ещё MCP "1c-checker", оно на каждый проект своё.
Понятно, что попробовав раз вайбкодинг, не хочется возвращаться на ручное кодирование. Но на всё нужны ресурсы. )
А мне интересны MCP, которое может поделиться с AI информацией, какие процедуры и модули в каких файлах проекта хранятся. И чтобы, например, ИИ не изобретал велосипед, если в БСП есть общедоступная функция. И чтобы вставить свой код в гигантский модуль, ИИ знал бы номер строки, куда это можно вставить.
Нашел кто предлагает такое, но вот если Serena MCP не решит подобный вопрос или ещё кто, придётся купить. )
Но сейчас в поисках другого IDE. VS Code с любыми плагинами что на линуксе, что на винде в произвольное время зависает и просит переоткрыть окно.
Нашел, вот OpenIDE + Continie не зависает и даже модели AI не зависают с ответом и не ругаются на частые запросы.
OpenIDE до настройки, просто после открытия папки с Розницей 3 и без плагина ИИ чего-то индексировала с пол часа.
mcp_server.py. Для roo code после правки работает такой json:
{
"mcpServers": {
"my-1c-mcp-server": {
"url": "http://localhost:8001/mcp-auto",
"type": "streamable-http",
"timeout": 60,
"headers": {
"x-collection-name": "1c_rag_UNF"
},
"disabled": false,
"alwaysAllow": [
"get_document_info",
"search_1c_documentation"
]
}
}
}
Для cline соответственно "type": "streamableHttp"
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 2605838
Создание 06.02.26 12:00
Обновление 13.03.26 19:21
Просмотры 30003
Загрузки 0
Рейтинг
57
Комментарии 84
Код открыт Да
Рубрики Нейросети Рефакторинг и качество кода
Кому Разработчик
Тип файла Нет файла
Платформа Не имеет значения
Конфигурация Универсальные
Операционная система Не имеет значения
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)