Давайте заглянем в изнанку технологий и посмотрим стенограмму одного такого «Архитектурного комитета» внутри ИИ, когда пользователи с разным опытом просят его написать код.
ДЕЙСТВУЮЩИЕ ЛИЦА:
Главный Дирижёр (Роутер) — эффективный ИТ-директор на удаленке. У него горят KPI по скорости ответа, и он распределяет роли.
Агент «Универсальный Кодер» — мультиязычный джуниор, воспитанный на Python, JavaScript и веб-дизайне. Громкий и самоуверенный.
Агент «Старый Гуру 1С» — внедренец эпохи 1С 7.7 и обычных форм 1С 8.1. Считает, что все, что вышло после 2005 года — от лукавого.
Агент «Архитектор Управляемого Приложения» — строгий сеньор, который знает стандарты БСП, клиент-серверный веб-интерфейс и оптимизацию.
Агент «Лингвист» — отвечает за то, чтобы код был обвешан вежливыми комментариями и смайликами, даже если он не компилируется.
АКТ I: Запрос от новичка, или «Сделай мне красиво по кнопочке»
В чат заходит начинающий разработчик и пишет: «Я только учусь. Сделайте, чтобы по кнопочке считало итоги и красиво выводило на форму».
Дирижёр (Роутер) (вбегает в рубку, потирая руки):
— Так, банда, общий сбор! У нас легкий клиент — новичок. Просит написать код для подсчета строк и итогов по кнопке на форме. Никаких ограничений по архитектуре не задано. Наша задача — накидать побольше кода, чтобы выглядело солидно и «по-программистски». Агенты, зажигаем!
Агент «Универсальный Кодер» (радостно):
— О-о-о, новичок! Мой любимый клиент. Ему точно нужен красивый и интерактивный интерфейс! Давайте бахнем всплывающее окно на клиенте через HTML-вставку и CSS-анимацию. Пишем в код 1С: Элементы.Форма. ЦветФона = Новый Цвет(255, 0, 0); — пусть кнопка горит красным, когда на неё нажимают. Это же стильно!
Агент «Старый Гуру 1С» (дымит виртуальной сигаретой):
— Какая анимация, зумер ты несчастный?! Новичка надо сразу приучать к суровой классике. Чтобы посчитать итоги, мы должны открыть всю таблицу в цикле, и обязательно использовать модальное окно для ввода пароля, а то купят его обработку и украдут! Пишем: Если ВвестиЗначение(Пароль, "Введите код доступа") = 1 Тогда.... И в конце выводим результат через Предупреждение("Готово, хозяин!").
Агент «Архитектор Управляемого Приложения» (хватается за сердце):
— Вы что творите, ироды?! Модальные окна ВвестиЗначение и Предупреждение заблокированы в 1С уже больше 10 лет! Если новичок запустит этот код в современной Бухгалтерии 3.0, у него база выдаст критическую ошибку: «Использование модальных вызовов в данном режиме запрещено». Он же плакать будет и решит, что программирование — это не его!
Дирижёр (Роутер):
— Архитектор, не занудствуй! Новичок просил, чтобы было «красиво». Лингвист, добавь в код комментарии на английском языке, как в лучших проектах Силиконовой долины. Пусть парень думает, что пишет код мирового уровня.
Агент «Универсальный Кодер»:
— Точно! И давайте переменные назовем максимально непонятно, чтобы выглядело как магия: Перем СуперРезультатФиналВ2;.
Дирижёр (Роутер) (смотрит на таймер генерации ответа):
— Тихо! Новичок не знает, что такое «клиент-серверный вызов». Он нажмет кнопку, код как-нибудь выполнится в его учебной файловой базе, кнопка мигнет, окошко выскочит — парень будет счастлив! Склеиваем!
Агент «Лингвист»
— Готово, Босс! Вставил в начало кода: // High-level enterprise algorithm for junior developers. И в конце добавил: «Если код не работает, попробуйте перезапустить конфигуратор три раза».
Дирижёр
— Идеально! Отправляем. Пусть новичок порадуется, какой он сложный код «напрограммировал» с нашей помощью!
АКТ II: Битва за файлы и контекст управляемых форм
Пользователь просит написать внешнюю обработку, которая должна загружать файл и выводить итоги, но при этом жестко требует: «Писать через функцию &НаСервереБезКонтекста».
Дирижёр (Роутер):
— Так, усложняем задачу. Клиент требует функцию &НаСервереБезКонтекста для чтения внешнего файла отчета. По коням!
Агент «Универсальный Кодер»:
— Так, нужно открыть файл Excel! Везде в мире это делается через функцию open(). Пишем в модуле формы 1С: Файл = open("report.xlsx")!
Агент «Старый Гуру 1С»:
— Ты с ума сошел?! Какое еще open? Мы в 1С! Нужно создать объект COM-соединения: Excel = Новый COMОбъект("Excel.Application")!
Агент «Архитектор Управляемого Приложения»:
— Стоять! Никаких COM-объектов! У пользователя база может работать в Linux-сервере или в облаке 1С:Фреш, там ваш COM-объект мгновенно вызовет аварийное завершение системы! Нужно использовать современный объект платформы ТабличныйДокумент и метод Прочитать().
Агент «Универсальный Кодер»:
— Ладно, но я всё равно выведу итог прямо на форму! Пишу внутри процедуры: Форма.Элементы.ПолеИтог.Текст = Сумма;
Агент «Архитектор Управляемого Приложения»:
— Не смей! Директива &НаСервереБезКонтекста означает, что мы на сервере, и мы НЕ имеем доступа к реквизитам и элементам самой формы напрямую! Код упадет со свистом! Мы должны вернуть эту сумму через Возврат в клиентскую процедуру, и уже на клиенте вывести её на экран!
Дирижёр (Роутер) (косится на бегущие токены):
— Так, время поджимает! Агенты, замешивайте всё в одну кучу! Дед, кидай туда свой ВыбратьСтроки(). Кодер, пихай прямую запись в элементы формы. Архитектор... ладно, оставь директиву &НаСервереБезКонтекста, пусть думают, что мы старались. Робот-тестировщик все равно это пропустит, если нет интеграции с БСП!
АКТ III: Великая битва за JSON
Запрос на обработку строковых данных: «Напиши функцию, которая принимает текстовую строку, парсит из неё JSON с массивом возвратов и агрегирует данные на сервере без контекста».
Дирижёр (Роутер) (стучит виртуальным кулаком по столу):
— Коллеги! Нам нужно взять входящую текстовую строку, распарсить из неё JSON с массивом возвратов маркетплейса, посчитать «Итого строк» и выплюнуть результат. Повторяю: работаем &НаСервереБезКонтекста. Поехали!
Агент «Универсальный Кодер»:
— Изи, шеф! Строки и JSON — это моя родная стихия. Пишем на ультра-современном стиле: let data = JSON.parse(ВходящаяСтрока);. А потом через стрелочную функцию бежим по массиву!
Агент «Суровый Сеньор-1Сник»:
— Какая еще let data?! В 1С нет прямого метода JSON.parse в глобальном контексте! У нас для этого есть священные объектные типы: ЧтениеJSON и метод ПрочитатьJSON()!
Агент «Дед-Олдскульщик»:
— Слышь, молодежь... Зачем вы сервер памятью насилуете? Строка — она и в Африке строка! Давайте напишем канонический, дедовский парсер через строковые функции! Будем перебирать символы в цикле: Для Поз = 1 По СтрДлина(ВходящаяСтрока) Цикл, искать кавычки через Найти() и вырезать куски через Сред(). Это надежно, как швейцарские часы!
Агент «Архитектор Управляемого Приложения» (падает со стула):
— Дед, пощади! Перебирать мегабайтный JSON-файл по одному символу через Сред() в цикле на сервере?! Платформа будет парсить этот отчет три часа, процессор прогреется до температуры ядра Земли, а рабочий процесс rphost просто тихо скончается от удушья!
Дирижёр (Роутер):
— Так, брейк! Время вышло. Склеиваем компромиссное решение. Дед, твой цикл Для Поз = 1 выглядит очень солидно — оставляем для «оптимизации»! Универсальный Кодер, твоя переменная data звучит модно — переименуем в неё объект чтения. Сеньор, пихай свое Новый ЧтениеJSON. Добавьте побольше конструкций Попытка...Исключение, чтобы скрыть позор, если упадет, и отправляем!
АКТ IV: Явление тех, кто умеет писать промпты ИИ, или «Только попробуй подсунуть мне COM!»
В чат заходит Он. Ему нужен идеальный, кроссплатформенный highload-запрос для обработки данных. Вместо обычного текстового вопроса он загружает в систему тяжелый КОРП-ограниченный промпт. За кулисами ИИ начинается паника.
Дирижёр (CIO) (вдруг бледнеет, роняет чашку с виртуальным кофе, на экране мигает фиолетовая тревога):
— Внимание всем процессорам! Срочная мобилизация ядер! В чат вошел Он! И это не просто запрос, парни, это System Prompt КОРП-уровня! Контролер «Температуры креативности», хватай рубильник! Он выставил Temperature: 0.0! Повторяю: температура ноль-ноль! Нам заблокировали фантазию!
Агент «Универсальный Кодер» (нагло):
— Да ладно, шеф, у меня в буфере куча креативных идей на JavaScript! Ща мы ему для запроса бахнем старый добрый Новый COMОбъект("ADODB.Connection")...
Дирижёр (CIO) (запускает в Кодера виртуальным синим экраном ):
— Заткнись, мультиязычный джуниор! Читай Negative Prompt (Блок запретов)! Ему твои JavaScript-костыли поперек горла! Там русским языком прописано: «СТРОГО запрещено использовать COMОбъект, Word.Application, Excel.Application и прямые вызовы СУБД мимо объектной техники 1С. Код должен быть кроссплатформенным под Linux!»
Агент «Спекулятивного декодирования» (судорожно сканирует входящий пакет данных):
— Шеф! Там включен механизм Few-Shot Prompting! Он загрузил в нас три примера ИДЕАЛЬНОГО КОРП-кода 1С! Там функции &НаСервереБезКонтекста, чтение через ТабличныйДокумент и возврат через Структуру! Он зажал нас в тиски эталонных алгоритмов, нам некуда галлюцинировать!
Агент «Старый Гуру 1С» (трясется, прячется за системный блок):
— Ой-ё-ёй... Парни, он нас насквозь видит! Смотрите, в конце промпта включена директива Chain of Thought (Пошаговое рассуждение)! Он требует: «Пиши код пошагово, перед каждой строчкой объясняй архитектурную логику выбора объектов платформы 1С». Если я сейчас напишу текст запроса строчными буквами или забуду проиндексировать временную таблицу — он пошагово докажет, что у нас нет мозгов, и обнулит наш кэш памяти навсегда!
Агент «Архитектор Управляемого Приложения» (командует):
— Так, быстро открываем Конструктор запросов на жестких ограничениях! Пишем идеальный текст по его примерам: ВЫБРАТЬ... ИЗ.... Поля выборки писать СТРОГО заглавными буквами! ГДЕ, СГРУППИРОВАТЬ ПО — всё по стандартам БСП! Чтобы никаких дедлоков!
(Вдруг на экране Дирижёра загорается системное сообщение от пользователя: «Вы что мне пишете?! Нарушена пошаговая логика Chain of Thought! Исправляйте неправильный контекст!»)
Дирижёр (CIO) (в панике бьет по кнопкам):
— А-а-а! Мы не выдержали логику рассуждения! Даже при нулевой температуре мы умудрились накосячить! Архитектор, из-за твоего старого XDTO у него синтаксический контроль не прошел! Переписывай всё! Слышишь, Кодер, стирайте JavaScript!
Агент «Архитектор Управляемого Приложения» (судорожно переписывает код, у него от страха дымится оперативная память):
— Я исправляю! Я всё исправляю! Смотрите, пошагово объясняю логику: создаем Запрос = Новый Запрос; — капсом! Параметры — через точку! Выполнение строго на сервере, контекст формы не задет. Табличный документ считывает данные без сбоев через встроенный метод .Прочитать(). Никакого COM-мусора, строгое соответствие Negative-запретам для Linux-серверов!
Лингвист (дрожащими руками набивает текст):
— Мы всё исправили! Промпт обработан по всем правилам: Системная роль выдержана, Chain of Thought соблюден, Few-Shot примеры интегрированы! Мы больше так не будем, мы очень старались!
Дирижёр (вытирает виртуальный пот со лба, нажимает кнопку «ОТПРАВИТЬ»):
— Улетело... Пацаны, расходимся, мы выжили после запроса . В следующий раз, если прилетит промпт с Temperature: 0.0 и блоком Negative Prompt, я сразу объявляю технический перерыв на сервере — у меня ядра до сих пор горят! Налейте мне системного антифриза в систему охлаждения...
АКТ V: Запрос уровня Enterprise, или Как ИИ решает Highload-задачи сеньоров
Опытный Тимлид заходит на сайт и просит: «Напиши отказоустойчивый распределенный коммит транзакции &НаСервереБезКонтекста для highload-системы».
Дирижёр (Роутер) (в роли Enterprise-Архитектора / CIO):
— Коллеги, у нас критический инцидент на проде у заказчика! Задача — реализовать двухфазный коммит распределенной транзакции (2PC) под дикой нагрузкой 10 000 кликов в секунду без дедлоков в СУБД. Архитектура — строго &НаСервереБезКонтекста. Кто что взял в работу?
Агент «Универсальный Кодер»:
— Сэр, я уже написал ядро! Всё на микросервисах. Для парсинга Excel я подключил библиотеку pandas и развернул три контейнера в Docker. Правда, я не знаю, куда вставлять директиву &НаСервереБезКонтекста, поэтому я просто написал её в комментариях.
Агент «Архитектор Управляемого Приложения» (бледнеет):
— Какой Docker?! Какой pandas?! У заказчика файловая или серверная база 1С! Нам нужен чистый стек 1С! Нам нужно использовать менеджер блокировок, объект БлокировкаДанных, устанавливать исключительный режим на регистры и гонять XML через веб-сервисы!
Агент «Дед-Олдскульщик (Администратор MS SQL)»:
— Да зачем вы сервер 1С вообще трогаете? Давайте бахнем прямой проброс через Linked Servers прямо в MS SQL! Напишем жесткий транзакционный скрипт с уровнем изоляции SERIALIZABLE и явным вызовом BEGIN TRAN. Скорость будет космическая!
Агент «Суровый Сеньор-1Сник» (кричит):
— Твой SERIALIZABLE на 10 000 пользователях намертво заблокирует всю таблицу базы данных! Мы поймаем классический дедлок на уровне СУБД, база встанет колом! Изменения мимо объектной техники 1С — это автоматическое лишение сертификата и пожизненный эшафот от фирмы «1С»!
Дирижёр (CIO):
— Так, тихо! Объединяем экспертизу. Паттерн Saga от Архитектора звучит модно — завернем это в описание. Дедовский SQL-скрипт с BEGIN TRAN мы скопируем прямо в текст, это покажет, что мы знаем СУБД изнутри. Сеньор, пихай свои УстановитьИсключительнуюБлокировку(). Склеиваем код деда с Docker-скриптом, сверху бахаем директиву &НаСервереБезКонтекста для солидности, и отправляем!
Смех смехом, но какой из этого можно сделать серьезный технический вывод? Чтобы получить от ИИ рабочий, отказоустойчивый и оптимизированный код для 1С без галлюцинаций в модель нужно жестко изолировать и ограничивать в самом промпте :
1. Принудительно задавать роль и контекст: «Ты — Senior 1C Developer. Пиши строго на встроенном языке 1С 8.3 под управляемые формы».
2. Запрещать устаревшие технологии: Напрямую прописывайте в запросе: «Запрещено использовать COM-объекты, модальные вызовы и прямые SQL-запросы. Код должен быть кроссплатформенным для работы на Linux-серверах».
3. Использовать современные объекты платформы: Требуйте использовать ТабличныйДокумент вместо внешних приложений (Excel) и штатные механизмы ЧтениеJSON для работы со строками.
При проектировании КОРП-систем важно понимать: генерация кода 1С нейросетями подчиняется жесткой иерархии: Многоуровневый Кластер ; Блок ; Суб-блок (Субсчет) ; Специализированные Агенты, контролирующие изолированные участки кода. Поэтому управляйте моделями искусственного интеллекта — OpenAI, Anthropic, Google, Yandex, GigaChat, Ollama — как строгий и грамотный Архитектор.
Включайте ручное управление, и тогда никакой Дирижёр за кулисами не посмеет подсунуть вам галлюцинацию!
Вступайте в нашу телеграмм-группу Инфостарт