В этой статье
Да, ChatGPT может быть полезен программисту 1С как быстрый коллега для черновика, объяснения ошибки и проверки хода мысли. Он помогает разложить задачу по шагам, предложить вариант кода или запроса, найти подозрительное место в небольшом фрагменте. Синтаксис, типы объектов и бизнес-логику нужно проверить в своей конфигурации.
У 1С есть собственный встроенный язык и отдельный язык запросов. Запрос описывает источники данных, поля, соединения и группировки, а его корректность проверяется в Designer — то есть в конфигураторе 1С, а не в окне чата. Документация 1C:Enterprise и руководство по языку запросов полезнее использовать для финальной сверки, чем считать ответ ChatGPT нормативной документацией.
Какие задачи можно отдавать ChatGPT программисту 1С
На практике нейросеть лучше всего работает на задачах с ограниченным входом и понятным результатом:
- написать черновик серверной функции или процедуры;
- объяснить конструкцию встроенного языка 1С;
- составить учебный запрос к регистру накопления;
- разобрать сообщение об ошибке по фрагменту модуля;
- предложить более читаемую структуру уже написанного кода;
- перечислить граничные случаи, которые стоит покрыть тестами;
- сравнить два варианта реализации и назвать их компромиссы.
Слово «черновик» здесь важно. ChatGPT не знает, какие реквизиты есть в вашем справочнике, как называются виртуальные таблицы в конкретной конфигурации, где выполняется процедура — на клиенте или на сервере — и какое поведение ожидает заказчик. Если не передать этот контекст, модель заполнит пробелы наиболее правдоподобными именами. Компиляция иногда быстро показывает ошибку, а иногда неверное предположение доживает до функционального теста.
Поэтому хороший запрос к ChatGPT содержит не только глагол «напиши», но и контекст, входные данные и ожидаемый результат. Такой подход совпадает с общей рекомендацией OpenAI: формулировать задачу точно, а затем уточнять запрос после проверки промежуточного ответа. Рекомендации по созданию промптов для ChatGPT.
Пример: функция для справочника «Номенклатура»
Предположим, нужна серверная функция общего модуля. Она получает ссылку на элемент справочника «Номенклатура» и возвращает его артикул. Плохая постановка выглядит так:
Напиши функцию 1С, которая получает номенклатуру и возвращает артикул.
В ней не сказано, какая версия платформы используется, какого типа параметр, доступен ли реквизит на сервере и что делать с пустой ссылкой или незаполненным артикулом. Модель может угадать удачный вариант, но проверить будет нечего: исходные условия неполные.
Рабочая заготовка запроса может быть такой:
Используется 1С:Предприятие 8.3, управляемое приложение.
Нужна серверная экспортная функция общего модуля, который доступен на сервере.
Входной параметр Номенклатура имеет тип СправочникСсылка.Номенклатура.
Нужно вернуть строковый реквизит Артикул элемента справочника.
Если передана пустая ссылка, вернуть пустую строку.
Если элемент не найден или Артикул не заполнен, также вернуть пустую строку.
Покажи код на встроенном языке 1С и отдельно объясни,
почему функция может выполняться на сервере. Не придумывай другие
реквизиты справочника. Добавь список мест, которые нужно проверить
в конфигураторе перед использованием.
Ответ стоит читать по частям. Сначала проверить сигнатуру: действительно ли параметр имеет тип СправочникСсылка.Номенклатура, а функция возвращает строку. Затем посмотреть обращение к реквизиту и обработку пустой ссылки. Наконец, убедиться, что общий модуль и вызывающий код находятся в подходящем контексте. Даже если код выглядит убедительно, это ещё не доказательство, что в вашей конфигурации существует реквизит Артикул именно с таким типом и доступом.
ChatGPT умеет оформлять код отдельным блоком, откуда его удобно копировать и редактировать; конкретные возможности такого оформления зависят от интерфейса и условий аккаунта. Описание кодовых блоков в ChatGPT. Но удобное копирование не превращает фрагмент в протестированный модуль.
После этого перенесите код в тестовую копию конфигурации. Проверьте модуль встроенной проверкой синтаксиса, вызовите функцию на существующей тестовой номенклатуре, на пустой ссылке и на элементе с пустым артикулом. Если платформа выдаст ошибку, верните в чат не весь проект, а обезличенный минимальный фрагмент, текст ошибки и ожидаемое поведение. Так диалог становится циклом: постановка → черновик → проверка в 1С → уточнение.
Если для регулярной работы нужен платный доступ, варианты ChatGPT на 30 дней можно посмотреть на карточке Amber Market; перед оплатой проверьте доступность, вариант, цену и условия услуги.
Как составлять запрос к регистру накопления
Вторая типичная задача — запрос к регистру накопления. Здесь особенно опасно писать только «сделай запрос по продажам»: нужно указать сам регистр, поля, период, отборы и форму результата.
Например, постановка может выглядеть так:
Используется 1С:Предприятие 8.3.
Нужен учебный запрос к регистру накопления Продажи.
Поля результата: Номенклатура и СуммаОборот.
Нужно получить оборот за период с 01.01.2026 по 31.01.2026
по одной организации. Организация передаётся параметром &Организация.
Сгруппировать результат по Номенклатуре.
Покажи текст запроса, параметры и кратко объясни,
какие имена нужно заменить под мою конфигурацию.
Не считай запрос проверенным: перечисли шаги проверки
в конструкторе запросов и на обезличенной тестовой базе.
Здесь модель получает каркас задачи: источник, измерение группировки, период, параметр и ожидаемые поля. Но имена Продажи, СуммаОборот, Организация и состав виртуальной таблицы могут отличаться от вашей конфигурации. Даже одинаковое название регистра не гарантирует одинаковую структуру: важны измерения, ресурсы, реквизиты и режим формирования итогов.
Проверяйте такой ответ в конструкторе запросов. Сначала подставьте параметры и убедитесь, что источник данных существует. Затем проверьте имена полей, типы параметров и границы периода. После выполнения сравните несколько строк с данными тестовой базы вручную. Отдельно проверьте пустой результат и период, в котором нет движений. Учебный запрос из этого примера не запускался в реальной конфигурации, поэтому воспринимать его нужно как шаблон постановки, а не как готовую универсальную выборку.
Отладка: что передать вместе с ошибкой
Для отладки ChatGPT полезнее всего давать минимальный воспроизводимый фрагмент. В запросе укажите:
- версию платформы и контекст выполнения — клиент, сервер, общий модуль или форма;
- небольшой фрагмент модуля вокруг проблемной строки;
- точный текст ошибки и номер строки;
- входные значения в обезличенном виде;
- ожидаемое и фактическое поведение;
- уже сделанные проверки.
Пример постановки:
1С:Предприятие 8.3, управляемое приложение, процедура выполняется на сервере.
Ниже минимальный фрагмент общего модуля без названий клиентов и документов:
<фрагмент кода>
Платформа сообщает: «Значение не является значением объектного типа»
на строке 12. Я ожидал получить сумму документа, но ошибка возникает
только для одного из тестовых вариантов входа.
Объясни вероятную причину по шагам. Предложи минимальную правку,
не переписывая процедуру целиком. Затем перечисли случаи регрессии,
которые нужно проверить после изменения.
Хороший ответ здесь должен не просто заменить строку, а связать ошибку с типом значения и маршрутом данных: где ссылка превращается в объект, где может прийти Неопределено, какой вызов выполняется в серверном контексте. Если модель предлагает несколько причин, проверяйте их по очереди, начиная с той, которая подтверждается трассировкой или отладчиком.
Отдельно попросите сделать рефакторинг, если код уже работает, но плохо читается. Полезные ограничения: сохранить публичный интерфейс процедуры, не менять алгоритм расчёта, не добавлять новые обращения к базе, показать разницу и объяснить влияние на производительность. Иначе «улучшение» может незаметно изменить бизнес-логику или количество запросов.
Что нельзя отправлять в чат
Не вставляйте в ChatGPT реальные персональные данные, коммерческие регистры, пароли, токены, ключи, данные клиентов и полный дамп информационной базы. Для разбора достаточно обезличить значения и оставить схему проблемы:
- заменить названия организаций и клиентов на
ТестоваяОрганизация; - оставить только нужные поля и несколько искусственных строк;
- удалить реквизиты, не относящиеся к ошибке;
- заменить секреты на
<TOKEN_REMOVED>; - сохранить типы, связи и граничные случаи.
Безопасность не отменяет точность. Слишком агрессивное обезличивание может скрыть причину, если ошибка зависит от типа реквизита или связи между объектами. Оставляйте техническую структуру, но убирайте содержимое, по которому можно восстановить реальные данные.
Минимальный рабочий процесс
Для большинства задач достаточно такой последовательности:
- Сформулировать ожидаемый результат одним предложением.
- Указать версию платформы, конфигурационный контекст, типы входов и имена нужных метаданных.
- Попросить ChatGPT сначала назвать допущения и показать черновик.
- Проверить синтаксис, типы и контекст выполнения в конфигураторе.
- Запустить код или запрос в тестовой копии базы на обезличенных данных.
- Передать в следующий запрос точную ошибку и минимальный исправляемый фрагмент.
- После правки проверить не только успешный сценарий, но и пустые значения, границы периода, права доступа и повторный вызов.
Так ChatGPT становится частью инженерного цикла, а не источником непроверенных вставок. Он экономит время на первом варианте и объяснении, но ответственность за совместимость с конкретной конфигурацией остаётся у разработчика 1С.
Источники
- Prompt engineering best practices for ChatGPTOpenAI Help Center
- Working with writing blocks and code blocks in ChatGPTOpenAI Help Center
- 1C:Enterprise 8.3 Developer Guide1C:Enterprise Developer Network
- Query language1C:Enterprise Developer Network
- Подписки ChatGPTAmberMarket