1С: запросы, обработки и ТЗ — ИИ-помощник нейросети Аливия для программистов, консультантов и бухгалтеров, которые ставят задачи по 1С. Он напишет текст запроса, код обработки или формы, составит ТЗ на доработку, объяснит ошибку и найдёт медленные места в запросе. Укажите конфигурацию и версию (УТ, УНФ, ЗУП, Бухгалтерия), объекты метаданных и что нужно сделать.
Работает онлайнРусский и другие языкиТест бесплатно, без регистрацииБез VPNДоступ 24/7Голосовой ввод и файлы
Зарегистрируйтесь и подтвердите почту — начислим ещё 10 000 символов на 7 дней.ЗарегистрироватьсяОнлайн
Программистам · ИИ-инструмент нейросети Аливия
Конструктор кода 1С
Выберите конфигурацию и задачу — бот напишет запрос, обработку или ТЗ программисту 1С.
Ещё настройки
Запрос подставится в поле чата — его можно поправить перед отправкой.
Вот запрос для получения остатков товаров на складе с ценами из вида цен «Розничная» в конфигурации «Управление торговлей», ред. 11. Запрос включает все необходимые условия и параметры.
Запрос = Новый Запрос;
Запрос.Текст = "
ВЫБРАТЬ
ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
СУММ(ТоварыНаСкладахОстатки.ВНаличииОстаток) КАК ВНаличииОстаток,
МАКСИМУМ(Цены.НачалоПериода) КАК Цена
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата, Склад = &Склад) КАК ТоварыНаСкладахОстатки
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК Цены
ПО ТоварыНаСкладахОстатки.Номенклатура = Цены.Номенклатура
И Цены.ВидЦены = &ВидЦены
ГДЕ
ТоварыНаСкладахОстатки.ВНаличииОстаток > 0
СГРУППИРОВАТЬ ПО
ТоварыНаСкладахОстатки.Номенклатура
ИМЕЮЩИЕ
ЕСТЬ NULL(Цена);
";
Запрос.УстановитьПараметр("Дата", &Дата);
Запрос.УстановитьПараметр("Склад", &Склад);
Запрос.УстановитьПараметр("ВидЦены", "Розничная"); // уточнить
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если ЗначениеЗаполнено(Выборка.ВНаличииОстаток) Тогда
// Обработка результата
КонецЕсли;
КонецЦикла;Пояснения:
- Запрос выбирает номенклатуру и их остатки на складе, используя соединение с таблицей цен.
- Остаток фильтруется на больше нуля, а также по виду цен.
- Используется агрегат
СУММдля суммирования остатков иМАКСИМУМдля получения максимальной цены. - Установлены необходимые параметры для выполнения запроса.
- Обход результата осуществляется с проверкой на заполненность значения остатка.
Не забудьте протестировать код на копии базы.
Для реализации вашего запроса на расширении конфигурации «Управление нашей фирмой», ред. 3, необходимо создать обработчик, который будет заполнять колонку «Склад» во всех строках табличной части «Запасы» при выборе склада в шапке документа «Заказ-наряд».
Вот пример кода:
// Обработчик, который срабатывает после выбора склада
&После("ИмяОбработчика") // [ПРОВЕРИТЬ: имя в конфигурации]
Процедура ОбработкаВыбораСклада(Элемент)
// Получаем текущий документ
ЗаказНаряд = ЭтотОбъект;
// Проверяем, установлен ли склад
Если ЗначениеЗаполнено(ЗаказНаряд.Склад) Тогда
// Запускаем серверную процедуру для заполнения склада в строках
ЗаполнитьСкладВСтроках(ЗаказНаряд);
КонецЕсли;
КонецПроцедуры
// Серверная процедура для заполнения склада в строках табличной части
&НаСервере
Процедура ЗаполнитьСкладВСтроках(ЗаказНаряд)
// Перебираем все строки табличной части "Запасы"
Для Каждого Строка Из ЗаказНаряд.Запасы Цикл
// Проверяем, заполнено ли значение склада в строке
Если Не ЗначениеЗаполнено(Строка.Склад) Тогда
// Заполняем склад из шапки документа
Строка.Склад = ЗаказНаряд.Склад;
КонецЕсли;
КонецЦикла;
КонецПроцедурыПояснения к коду:
- Обработка выбора склада:
- Используется аннотация
&После("ИмяОбработчика"), чтобы указать, что этот код сработает после выполнения стандартного обработчика выбора склада. Необходимо уточнить имя обработчика, который вызывается при выборе склада в шапке документа.
- Используется аннотация
- Проверка заполненности склада:
- Перед тем, как заполнять строки табличной части, проверяем, заполнено ли значение склада в шапке документа. Если да, то вызываем серверную процедуру для заполнения.
- Серверная процедура
ЗаполнитьСкладВСтроках:- Эта процедура выполняется на сервере и перебирает все строки табличной части «Запасы».
- Внутри цикла проверяем, заполнено ли значение склада в текущей строке. Если не заполнено, то заполняем его значением из шапки документа.
Важно:
- Перед тестированием кода рекомендуется создать копию базы данных, чтобы избежать потери данных.
- Убедитесь, что все названия реквизитов (например,
Склад,Запасы) указаны правильно и соответствуют вашей конфигурации.
Ошибка, с которой вы столкнулись, указывает на то, что объекты или реквизиты, к которым вы обращаетесь, не существуют или не доступны в данной конфигурации. В данном случае ошибка говорит о том, что для объекта Номенклатура не найдено поле ЦенаПродажи.
Причины ошибки:
- Поле
ЦенаПродажине существует в объектеНоменклатурав конфигурации «Бухгалтерия предприятия» ред. 3.0. - Возможно, поле называется иначе или не добавлено в метаданные.
Исправление:
Для правильного заполнения цены необходимо выяснить, как называется нужное поле. Предположим, что нужное поле называется Цена. Обратите внимание, что данное имя является предложением, и его необходимо проверить в метаданных.
Исправленный фрагмент кода:
Процедура ЗаполнитьНаСервере() Для Каждого Стр Из Объект.Товары Цикл Стр.Цена = Стр.Номенклатура.Цена; // уточнить правильное название поля КонецЦикла; КонецПроцедуры
Доработка:
Если вы хотите добавить обработчик, чтобы выполнить проверку или изменить поведение, вы можете использовать аннотацию. Например:
&После("ЗаполнитьНаСервере") // проверяем, что дальше делать
Процедура ДополнительнаяОбработка()
// Здесь другая логика
КонецПроцедурыНе забудьте протестировать изменения на копии базы данных, чтобы избежать потери данных или некорректной работы основной конфигурации.
Техническое задание для программиста 1С
1. Цель
Создать поисковую карточку контрагента для службы экономической безопасности (СЭБ), которая позволит быстро и удобно получать информацию о договоре, неоплаченных счетах, просрочках и истории проверок по ИНН или названию контрагента.
2. Как сейчас
В настоящее время сотрудники СЭБ собирают необходимые данные вручную из трёх различных отчетов, что занимает около 20 минут на одного контрагента. Процесс трудоемкий и требует значительных временных затрат.
3. Что доработать
- Объекты метаданных:
- Справочник.Контрагенты
- Справочник.ДоговорыКонтрагентов
- Документ.СчетНаОплату
- РегистрСведений.ПроверкиКонтрагентов
- Формы:
- Создать новую форму для отображения карточки контрагента с полями для ввода ИНН или названия.
- Отчёты:
- Разработать единый отчет, который будет выводить все необходимые данные.
- Права:
- Обеспечить доступ к новой форме и отчету для 4 сотрудников СЭБ.
4. Алгоритм по шагам
- Разработать форму для ввода ИНН или названия контрагента.
- Реализовать механизм поиска по указанным критериям.
- Объединить данные из объектов метаданных:
- Получить договоры из Справочник.ДоговорыКонтрагентов.
- Получить неоплаченные счета из Документ.СчетНаОплату.
- Получить данные о просрочках и проверки из РегистрСведений.ПроверкиКонтрагентов.
- Отобразить результаты на форме в удобном для восприятия виде.
5. Пример «было — стало»
- Было: Сотрудник СЭБ собирает информацию из трёх различных отчетов:
- Отчет по договорам нет в запросе
- Отчет по неоплаченным счетам нет в запросе
- Отчет по проверкам контрагентов нет в запросе
- Стало: Сотрудник вводит ИНН или название контрагента в поисковую карточку и получает:
- Все договоры
- Неоплаченные счета
- Информацию о просрочках
- Историю проверок в одном месте за считанные минуты.
6. Критерии приёмки
- Форма поиска работает корректно и позволяет искать по ИНН и названию контрагента.
- Отчет выводит все необходимые данные без ошибок.
- Время, необходимое для получения информации, не превышает 2 минут для одного контрагента.
- Доступ к функции ограничен только для 4 сотрудников СЭБ.
- Все данные отображаются корректно и в структурированном виде.
7. Недостающие данные
[ЗАПОЛНИТЬ: что] - необходимо уточнить, какие именно поля должны быть включены в результаты отчета и какие условия для фильтрации данных.
Этот код представляет собой процедуру для пересчета премий сотрудников в конфигурации «Зарплата и управление персоналом», ред. 3.
Объяснение кода:
- Процедура
ПересчитатьПремии(Отказ):- Начало процедуры, которая будет пересчитывать премии для сотрудников.
- Создание запроса:
- Создается новый объект
Запрос, который будет использоваться для получения информации о зарплате сотрудников.
- Создается новый объект
- Цикл
Для Каждого Стр Из Начисления:- Итерируется по каждой строке в коллекции
Начисления, которая, вероятно, содержит информацию о начислениях для сотрудников.
- Итерируется по каждой строке в коллекции
- Запрос к регистру:
- Внутри цикла формируется SQL-запрос для получения актуального оклада сотрудника из регистра сведений
ОкладыСотрудниковпо дате и идентификатору сотрудника. - Параметры
ДатаиСотрудникустанавливаются для фильтрации данных.
- Внутри цикла формируется SQL-запрос для получения актуального оклада сотрудника из регистра сведений
- Выполнение запроса:
- Запрос выполняется, и результат помещается в
Выборка.
- Запрос выполняется, и результат помещается в
- Проверка наличия результата:
- Если найдена строка с окладом (то есть
Выборка.Следующий()возвращает истину), то:- В поле
Результаттекущей строкиСтррассчитывается премия как 20% от оклада.
- В поле
- Если найдена строка с окладом (то есть
Изменения в базе после запуска:
- В базе данных произойдет обновление значений поля
Результатв каждом элементе коллекцииНачислениядля сотрудников, у которых есть оклад на указанную дату. Если оклад не найден, значениеРезультатне изменится.
Опасности в коде:
- Запись без проверки:
- Код не проверяет, была ли предыдущая запись в поле
Результат, что может привести к неправильным данным, если процедура будет вызвана несколько раз подряд.
- Код не проверяет, была ли предыдущая запись в поле
- Удаление:
- В текущем коде нет операций удаления, но стоит быть внимательным, если в дальнейшем будут добавлены такие операции.
- Запросы в цикле:
- Запрос выполняется внутри цикла для каждого сотрудника, что может значительно увеличить время выполнения процедуры и нагрузку на базу данных, особенно при большом количестве сотрудников.
Эти моменты стоит учитывать при тестировании и использовании этого кода в реальных условиях.
Вот запрос на языке запросов 1С:Предприятие 8 для конфигурации «Комплексная автоматизация», ред. 2, который отвечает на вашу задачу:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
Менеджер КАК Менеджер,
МЕСЯЦ(Документ.Дата) КАК Месяц,
СУММ(РегистрНакопления.ВыручкаИСебестоимостьПродаж.Выручка) КАК Выручка,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Документ.РеализацияТоваровУслуг) КАК КоличествоДокументов
ИЗ
РегистрНакопления.ВыручкаИСебестоимостьПродаж
ГДЕ
Документ.РеализацияТоваровУслуг.Дата МЕЖДУ &НачалоПериода И &КонецПериода
И Документ.РеализацияТоваровУслуг.Статус = 'Проведён'
СГРУППИРОВАТЬ ПО
Менеджер, МЕСЯЦ(Документ.Дата)
ИМЕЮЩИЕ
СУММ(РегистрНакопления.ВыручкаИСебестоимостьПродаж.Выручка) > 0";
Запрос.УстановитьПараметр("НачалоПериода", &НачалоПериода);
Запрос.УстановитьПараметр("КонецПериода", &КонецПериода);
Запрос.УстановитьПараметр("Дата", &Дата);
// Выполнение запроса и создание выборки.
Выборка = Запрос.Выполнить().Выбрать();
// Обход результата выборки.
Пока Выборка.Следующий() Цикл
Если ЗначениеЗаполнено(Выборка.Выручка) Тогда
// Обработка данных: [ПРОВЕРИТЬ: действия с результатами]
КонецЕсли;
КонецЦикла;Пояснения к коду:
- Создание запроса: Создаётся новый объект
Запрос. - Текст запроса:
- Выполняется выборка менеджера, месяца и агрегатов (выручка и количество документов) из регистра накопления.
- Отбор по дате и статусу проведённых документов.
- Группировка по менеджеру и месяцу.
- Условие на фильтрацию по сумме выручки.
- Установка параметров: Параметры запроса устанавливаются с помощью
Запрос.УстановитьПараметр. - Выполнение запроса: Запрос выполняется, и создаётся выборка.
- Обход выборки: Используется цикл для обхода результатов выборки. Проверяется, заполнено ли значение выручки.
Не забудьте протестировать код на копии базы перед применением. Если есть вопросы или нужны уточнения по объектам, дайте знать!
Ответы получены 15.10.2026 в этом чате и приведены без правок. Выделено то, чего не было в запросе.
Что умеет нейросеть для 1С и как она работает
Язык запросов 1С — это встроенный в платформу «1С:Предприятие 8» язык для чтения данных из справочников, документов и регистров; по синтаксису он похож на SQL, но использует русские ключевые слова и объекты метаданных. Инструмент пишет такие запросы, код обработок и форм на встроенном языке, технические задания на доработку и объясняет ошибки. Ответ приходит с готовым текстом кода и комментариями, что и где менять.
Конструктор запроса под чатом собирает исходные данные: конфигурацию, версию, задачу и объекты метаданных. Каркас запроса в браузере строится из полей таблицы, отборов и периода и даёт шаблон с параметрами, в котором остаётся дописать условия. Нейросеть в чате доводит каркас до рабочего запроса, обработки или ТЗ.
Какие задачи по 1С можно поручить
Чем точнее описаны конфигурация и объекты, тем меньше правок понадобится. Нейросеть не видит вашу базу, поэтому имена реквизитов и регистров берёт из запроса или из типовых конфигураций.
| Задача | Что прислать | Что получите |
|---|---|---|
| Запрос к данным | Таблицы (справочник, документ, регистр), нужные поля, отборы, период | Текст запроса с параметрами и код его выполнения |
| Внешняя обработка | Что должна делать, на каких объектах, кто запускает | Код модуля объекта и формы, описание реквизитов |
| Отчёт на СКД | Показатели, группировки, отборы, пример желаемой таблицы | Запрос набора данных и настройки ресурсов и группировок |
| ТЗ программисту | Проблему своими словами, конфигурацию, кто будет пользоваться | Структурированное ТЗ с критериями приёмки |
| Разбор ошибки | Полный текст ошибки, модуль и строку, что делали перед ней | Причину, исправление и как проверить |
| Вопрос по типовой | Конфигурацию и версию: УТ, УНФ, ЗУП, Бухгалтерия, ERP | Объяснение, где настройка и как работает механизм |
Как собрать запрос 1С с помощью каркаса
- Выберите в каркасе в браузере источник: справочник, документ, регистр сведений или регистр накопления.
- Для регистра выберите виртуальную таблицу: остатки, обороты, остатки и обороты или срез последних.
- Отметьте поля и задайте отборы — они попадут в параметры виртуальной таблицы, а не в секцию ГДЕ.
- Укажите период или дату среза — каркас добавит параметры &НачалоПериода, &КонецПериода или &НаДату.
- Скопируйте шаблон в чат и опишите, что нужно дописать: соединения, группировки, условия, сортировку.
- Получите итоговый текст запроса и код его выполнения и проверьте его в консоли запросов на копии базы.
Так выглядит результат для условного регистра остатков товаров. Имена регистра и ресурсов в вашей конфигурации могут отличаться — их нейросеть возьмёт из вашего описания.
ВЫБРАТЬ
Остатки.Номенклатура КАК Номенклатура,
Остатки.КоличествоОстаток КАК Количество
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки(&НаДату, Склад = &Склад) КАК Остатки
УПОРЯДОЧИТЬ ПО
НоменклатураГотовый запрос: «Конфигурация — Управление торговлей 11, платформа 8.3. Напиши запрос: остатки товаров на складе &Склад на дату &НаДату по группе номенклатуры &Группа, с ценой из регистра сведений цен на ту же дату через СрезПоследних. Поля: номенклатура, количество, цена, сумма. Отборы — в параметрах виртуальных таблиц. Покажи код выполнения запроса с проверкой на пустой результат».
Каким правилам 1С следует нейросеть
У фирмы «1С» есть система стандартов и методик разработки конфигураций, и часть правил прямо касается запросов. Нейросеть пишет код с учётом этих рекомендаций, а при проверке чужого кода отмечает нарушения.
- Оформление: ключевые слова языка запросов пишутся заглавными буквами, перед псевдонимом поля обязательно КАК, запрос не пишут в одну строку (стандарт 437).
- Без запросов в цикле: однотипные данные рекомендуется получать одним запросом, объединяя условия через В, ОБЪЕДИНИТЬ ВСЕ или пакет запросов (стандарт 436).
- Отборы виртуальных таблиц: условия на виртуальную таблицу передаются в её параметры, а не в секцию ГДЕ (стандарт 657 «Обращения к виртуальным таблицам»).
- Порядок строк: если результат показывают пользователю или от порядка зависит алгоритм, в запросе указывают УПОРЯДОЧИТЬ ПО — иначе порядок может меняться при смене СУБД или её версии (стандарт 412).
- Пустой результат: проверяют методом Пустой(), а не выборкой первой строки (стандарт 438).
- Полное соединение: ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ в общем случае не рекомендуется из-за производительности на PostgreSQL (стандарт 435).
Виртуальные таблицы регистров: какую выбрать
Большинство отчётов и проверок в 1С строится на виртуальных таблицах регистров. Ошибка в выборе таблицы — частая причина медленных запросов и неверных цифр, поэтому нейросеть уточняет вид регистра.
- Остатки — остатки на дату. По методическим материалам 1С таблица остатков всегда использует таблицу итогов и при необходимости досчитывает движения.
- Обороты — приход и расход за период. У регистра остатков виртуальная таблица оборотов всегда работает по таблице движений.
- Остатки и обороты — начальный остаток, приход, расход и конечный остаток в одном запросе, удобно для ведомостей.
- Оборотный регистр — для него существует только одна виртуальная таблица — оборотов, остатки по нему не считаются.
- Срез последних — для периодических регистров сведений: например, цена или курс на дату документа.
Как написать ТЗ программисту 1С
Техническое задание нужно, когда задачу ставит бухгалтер, руководитель или служба безопасности, а делать будет программист. Хорошее ТЗ отвечает на вопросы «зачем», «где», «как должно работать» и «как проверить». Нейросеть превращает описание своими словами в такую структуру.
- Цель: какую проблему решает доработка и кто ей будет пользоваться.
- Окружение: конфигурация, её версия и режим — типовая на поддержке или доработанная.
- Объекты: документы, справочники, регистры, формы, которые затрагивает задача.
- Сценарий: пошагово, что делает пользователь и что делает система.
- Права: каким ролям доступна новая функция.
- Критерии приёмки: конкретные проверки — «при выборе подразделения колонка Склад заполняется основным складом».
Пример из запросов в чат: «В документе ЗаказНаряды реализовать заполнение колонки Склад». Нейросеть уточнит, откуда брать склад, что делать при пустом значении и нужно ли перезаполнять уже введённые строки, — и только потом соберёт ТЗ или код.
Доработка типовой конфигурации: расширение вместо правки
Для типовых конфигураций нейросеть по умолчанию предлагает делать доработки в расширении. Такой подход описывает сама фирма «1С»: изменять типовую конфигурацию не нужно, все изменения выполняются в расширении, а конфигурация остаётся на полной поддержке поставщика. Это упрощает обновления: доработку не приходится переносить вручную после каждого релиза.
Не запускайте сгенерированную обработку сразу на рабочей базе. Нейросеть не видит вашу конфигурацию: имена реквизитов, регистров и ролей могут отличаться от типовых, а массовая запись документов необратима без резервной копии. Сначала — копия базы, синтаксический контроль в конфигураторе и тест на нескольких объектах.
Как проверить код перед внедрением
- Выполните синтаксический контроль модуля в конфигураторе — он покажет опечатки и несуществующие методы.
- Прогоните запрос в консоли запросов на копии базы и сверьте результат с отчётом, которому доверяете.
- Проверьте запрос на большом периоде: если он медленный, попросите нейросеть найти соединения через точку и отборы в ГДЕ.
- Запустите обработку под пользователем с обычными правами, а не только под администратором.
- Если появилась ошибка, пришлите её текст целиком — в чат или в разбор ошибок в коде.
Чем 1С отличается от других языков на Аливии
Для обычных баз данных подходит генератор SQL-запросов: синтаксис похож, но в 1С вместо таблиц СУБД — объекты метаданных, виртуальные таблицы регистров и параметры через амперсанд. Если нужно связать 1С с внешним сервисом через HTTP или файл обмена, вторую сторону удобно написать на другом языке, а логику перенести через перевод кода между языками.
Аливия работает без регистрации и без VPN из России, понимает русский и принимает файлы: скриншот ошибки, выгрузку модуля в TXT, таблицу в Excel. На бесплатном доступе действует дневной лимит запросов, на платных тарифах он больше.
Запросы и обработки 1С: частые вопросы
Как написать запрос в 1С?
Чем язык запросов 1С отличается от SQL?
Почему нельзя выполнять запрос в цикле?
Где задавать отбор для виртуальной таблицы — в параметрах или в ГДЕ?
Можно ли написать внешнюю обработку с помощью нейросети?
Как составить ТЗ на доработку 1С?
Как дорабатывать типовую конфигурацию без снятия с поддержки?
Знает ли нейросеть типовые конфигурации УТ, ЗУП, УНФ?
Как разобрать ошибку 1С?
Можно ли проверить готовый запрос на ошибки и скорость?
Итог
Инструмент пишет запросы 1С с параметрами, код обработок и форм, ТЗ на доработку и разбирает ошибки в типовых конфигурациях. Каркас в браузере собирает шаблон запроса по таблице, полям, отборам и периоду, а нейросеть доводит его до рабочего кода с учётом стандартов разработки 1С. Перед внедрением проверьте код на копии базы и сверьте имена объектов с вашей конфигурацией.