К статье
Практический материал

Разработка и Конфигурация · 10 мин

1С: на чём пишут — языки и инструменты разработки

На каком языке пишут в 1С: встроенный язык платформы, запросы, внешние компоненты на C++ и интеграции. Как выбрать инструмент под задачу доработки.

Главный язык, на котором пишут в 1С, — это встроенный язык платформы «1С:Предприятие». Его часто называют «язык 1С» или «встроенный язык»: синтаксис доступен на русском и английском, код пишется прямо в конфигураторе и исполняется платформой без отдельной компиляции в машинный код. Именно на нём описывается вся бизнес-логика типовых и самописных конфигураций — проведение документов, расчёт зарплаты, формирование отчётов.

Кроме встроенного языка, в реальных проектах используются и другие инструменты: язык запросов 1С для выборки данных, язык выражений компоновки данных в отчётах СКД, а для задач, выходящих за рамки платформы, — внешние компоненты на C++ или C# и интеграционные сервисы на любом языке через HTTP и веб-сервисы. Понимание того, какой инструмент под какую задачу подходит, — ключ к грамотной доработке без лишних затрат.

Встроенный язык платформы — основа разработки в 1С

Встроенный язык 1С — высокоуровневый предметно-ориентированный язык. В нём нет ручной работы с памятью, указателей и низкоуровневых конструкций: разработчик оперирует объектами предметной области — документами, справочниками, регистрами, перечислениями. Это снижает порог входа и ускоряет разработку учётных систем.

Особенность языка — возможность писать код как на русском, так и на английском синтаксисе, причём смешивать их в одном модуле нельзя: вариант синтаксиса задаётся в свойствах конфигурации. В типовых российских конфигурациях используется русский. Пример простейшего кода:

Процедура ПриПроведении(Отказ, РежимПроведения)

Для Каждого СтрокаТовара Из Товары Цикл

Если СтрокаТовара.Количество <= 0 Тогда

Отказ = Истина;

Сообщить("Количество должно быть больше нуля");

КонецЕсли;

КонецЦикла;

КонецПроцедуры

Код размещается в модулях: модулях объектов, форм, общих модулях, модулях менеджеров. Платформа разделяет исполнение на клиенте и на сервере — директивы &НаКлиенте и &НаСервере определяют контекст выполнения. Неправильное размещение кода — частая причина ошибок производительности и недоступности функционала в веб-клиенте.

Язык запросов 1С — как выбирают данные

Для чтения данных из базы используется собственный язык запросов, похожий на SQL, но работающий с объектами конфигурации, а не с физическими таблицами СУБД. Платформа сама транслирует запрос в SQL для конкретной базы данных — MS SQL Server, PostgreSQL, Oracle или IBM Db2.

Запросы пишут в консоли запросов при отладке, встраивают в код через объект Запрос или используют в схемах компоновки данных. Типичная ошибка новичков — перебирать выборку в цикле и внутри цикла делать новые запросы («запрос в цикле»), что резко замедляет работу. Правильный подход — один запрос с соединениями таблиц или временными таблицами.

bsl
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| СУММА(Товары.Количество) КАК Количество
|ИЗ
| Документ.РеализацияТоваров.Товары КАК Товары
|ГДЕ
| Товары.Ссылка.Дата >= &НачалоПериода
|СГРУППИРОВАТЬ ПО
| Товары.Номенклатура";
Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(ТекущаяДатаСеанса()));
Результат = Запрос.Выполнить().Выгрузить();

СКД и язык выражений — на чём делают отчёты

Система компоновки данных (СКД) — декларативный механизм построения отчётов. Разработчик описывает набор данных (обычно запросом), ресурсы, группировки и настройки, а платформа сама формирует итоговый запрос и выводит результат. Программный код при этом минимален или отсутствует вовсе.

Внутри СКД есть собственный язык выражений для вычисляемых полей и пользовательских полей. Его синтаксис напоминает встроенный язык, но набор функций ограничен. Для сложных расчётов выражения можно выносить в общие модули через конструкцию ВычислитьВыражение.

Маршрут решения

Как выбрать инструмент под задачу

Нужно изменить логику проведения документа или обработкуИспользуйте встроенный язык в модулях объекта или общих модулях
Нужно быстро получить данные для отчёта или анализаНапишите запрос на языке запросов, при необходимости оберните в СКД
Нужен сложный отчёт с настройками для пользователяИспользуйте СКД вместо программного формирования табличного документа
Нужна функция, недоступная платформе (специфическое оборудование, криптография)Разработайте внешнюю компоненту по технологии Native API на C++
Нужно обмениваться данными с внешней системойИспользуйте HTTP-сервисы, веб-сервисы или файловый обмен — код интеграции на стороне внешней системы пишется на любом языке

Внешние компоненты и расширения возможностей

Когда встроенного языка не хватает — например, для работы с нестандартным оборудованием, специализированными алгоритмами или библиотеками — разрабатывают внешние компоненты. Современный способ — технология Native API: компонента пишется на C++ и собирается под все нужные платформы (Windows, Linux, для разных разрядностей).

Компонента подключается к конфигурации как макет с архивом, и её методы вызываются из встроенного языка как обычные функции. Устаревшая технология COM используется реже, в основном в старых решениях под Windows.

Отдельное направление — расширения конфигурации. Это не язык, а механизм доработки типовых конфигураций без снятия их с поддержки: код пишется на том же встроенном языке, но хранится отдельно и не ломается при обновлении типового решения.

Типичные ошибки
01
Доработка типовой конфигурации напрямую вместо расширения — при обновлении изменения теряются или обновление становится невозможным
02
Запрос в цикле вместо одного запроса с соединениями — резкое падение производительности на больших объёмах данных
03
Исполнение тяжёлого кода на клиенте — медленная работа и ошибки в веб-клиенте
04
Попытка реализовать сложный отчёт программным выводом в табличный документ вместо СКД — высокая трудоёмкость и невозможность гибких настроек

Интеграции: на чём пишут обмены с 1С

1С редко работает изолированно. Для обмена с сайтами, CRM, складскими системами и банками платформа предоставляет HTTP-сервисы, SOAP веб-сервисы, работу с файлами JSON и XML, а также механизмы EnterpriseData и COM-соединения между базами.

Со стороны внешней системы код пишется на любом языке: сайт на PHP или Python обращается к HTTP-сервисам 1С, мобильное приложение — к опубликованному REST-интерфейсу. Внутри 1С обработка запросов и формирование ответов реализуется на встроенном языке в модулях HTTP-сервисов.

При проектировании интеграции важно учитывать безопасность: публикуемые сервисы требуют аутентификации, ограничения прав и защиты от некорректных данных. Открытый без авторизации HTTP-сервис — прямой путь к утечке данных о контрагентах, ценах и остатках.

Где пишут код: конфигуратор и EDT

Классический инструмент разработчика — конфигуратор, входящий в поставку платформы. Он включает редактор кода с подсветкой и контекстной подсказкой, отладчик, конструкторы запросов и СКД, механизмы сравнения и объединения конфигураций.

Альтернатива — 1C:Enterprise Development Tools (EDT), среда на базе Eclipse. Она ориентирована на командную разработку: встроенная работа с Git, проверка кода, хранение конфигурации в виде файлов проекта. Для крупных проектов и распределённых команд EDT удобнее, для небольших доработок чаще используют конфигуратор.

Сравнение инструментов разработки

Конфигуратор

Подходит для быстрых доработок и небольших проектов; встроен в платформу, но слабо поддерживает командную работу и контроль версий

1C:EDT

Подходит для командной разработки и крупных проектов; Git из коробки и хранение в файлах, но требует отдельной установки и привыкания

Конфигуратор + хранилище

Классический командный вариант без EDT; работает, но уступает Git по гибкости ветвления и слияния

Как проверить результат доработки

После изменения кода обязательна проверка на копии базы. Минимальный набор: синтаксическая проверка модулей в конфигураторе, отладка ключевого сценария, тестирование под пользователем с реальными правами (а не под полными правами разработчика), проверка в том клиенте, которым пользуются сотрудники — тонком или веб-клиенте.

Признак корректной доработки: документы проводятся без ошибок, отчёты формируются за приемлемое время, в журнале регистрации нет новых ошибок, пользователи с ограниченными правами не получают сообщений о нарушении доступа.

Контрольные точки

Как проверить результат

Синтаксическая проверка модулей
Норма

Ошибок и предупреждений нет

Тревожный признак

Ошибки компиляции модулей или недоступные вызовы

Проведение документов после доработки
Норма

Документы проводятся, движения корректны

Тревожный признак

Ошибки проведения или неверные остатки в отчётах

Работа под ограниченными правами
Норма

Функции доступны штатным пользователям

Тревожный признак

Сообщения о нарушении прав доступа

Журнал регистрации после теста
Норма

Нет новых ошибок

Тревожный признак

Ошибки выполнения фоновых заданий или обработчиков

Частые вопросы

Можно ли писать для 1С на Python или Java?

Напрямую внутри платформы — нет, бизнес-логика пишется только на встроенном языке. Но внешние системы на Python, Java или любом другом языке могут обмениваться данными с 1С через HTTP-сервисы, веб-сервисы или файлы, и это стандартная практика интеграций.

Нужно ли знать SQL для работы с 1С?

Строго обязательного знания SQL нет: платформа сама транслирует запросы 1С в SQL конкретной СУБД. Однако понимание принципов SQL помогает писать эффективные запросы и разбираться в проблемах производительности, особенно при анализе планов запросов на стороне СУБД.

Чем расширение отличается от доработки конфигурации?

Расширение хранится отдельно от основной конфигурации и не требует снятия её с поддержки, поэтому типовое обновление проходит штатно. Прямая доработка изменяет конфигурацию поставщика, усложняет обновления и повышает риск потери изменений. По возможности всегда выбирайте расширение.

На каком языке писать код — русском или английском?

Оба варианта равнозначны, выбор задаётся в свойствах конфигурации. В российских типовых решениях используется русский синтаксис. Если вы дорабатываете типовую конфигурацию, придерживайтесь её варианта, чтобы код оставался читаемым для других разработчиков.

Что выбрать для старта: конфигуратор или EDT?

Для изучения и небольших доработок начните с конфигуратора — он проще и входит в платформу. Переходить на EDT имеет смысл, когда появляется командная разработка, потребность в Git и развитом контроле качества кода.

Можно ли вынести сложные вычисления из 1С во внешнюю программу?

Да, через внешние компоненты (Native API на C++) или через вызов внешнего сервиса по HTTP. Так поступают, когда нужны специализированные библиотеки или оборудование. Учитывайте, что внешняя зависимость усложняет развёртывание и поддержку решения.

Итог

Что важно запомнить

Разработка в 1С ведётся на встроенном языке платформы в конфигураторе или EDT, данные выбираются языком запросов, отчёты строятся на СКД, а для нестандартных задач применяются внешние компоненты на C++ и интеграции через HTTP-сервисы. Доработки типовых конфигураций выполняйте через расширения и обязательно проверяйте результат на копии базы.