Разработка и Конфигурация · 10 мин
1С: на чём пишут — языки и инструменты разработки
На каком языке пишут в 1С: встроенный язык платформы, запросы, внешние компоненты на C++ и интеграции. Как выбрать инструмент под задачу доработки.
Главный язык, на котором пишут в 1С, — это встроенный язык платформы «1С:Предприятие». Его часто называют «язык 1С» или «встроенный язык»: синтаксис доступен на русском и английском, код пишется прямо в конфигураторе и исполняется платформой без отдельной компиляции в машинный код. Именно на нём описывается вся бизнес-логика типовых и самописных конфигураций — проведение документов, расчёт зарплаты, формирование отчётов.
Кроме встроенного языка, в реальных проектах используются и другие инструменты: язык запросов 1С для выборки данных, язык выражений компоновки данных в отчётах СКД, а для задач, выходящих за рамки платформы, — внешние компоненты на C++ или C# и интеграционные сервисы на любом языке через HTTP и веб-сервисы. Понимание того, какой инструмент под какую задачу подходит, — ключ к грамотной доработке без лишних затрат.
Встроенный язык платформы — основа разработки в 1С
Встроенный язык 1С — высокоуровневый предметно-ориентированный язык. В нём нет ручной работы с памятью, указателей и низкоуровневых конструкций: разработчик оперирует объектами предметной области — документами, справочниками, регистрами, перечислениями. Это снижает порог входа и ускоряет разработку учётных систем.
Особенность языка — возможность писать код как на русском, так и на английском синтаксисе, причём смешивать их в одном модуле нельзя: вариант синтаксиса задаётся в свойствах конфигурации. В типовых российских конфигурациях используется русский. Пример простейшего кода:
Процедура ПриПроведении(Отказ, РежимПроведения)
Для Каждого СтрокаТовара Из Товары Цикл
Если СтрокаТовара.Количество <= 0 Тогда
Отказ = Истина;
Сообщить("Количество должно быть больше нуля");
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Код размещается в модулях: модулях объектов, форм, общих модулях, модулях менеджеров. Платформа разделяет исполнение на клиенте и на сервере — директивы &НаКлиенте и &НаСервере определяют контекст выполнения. Неправильное размещение кода — частая причина ошибок производительности и недоступности функционала в веб-клиенте.
Язык запросов 1С — как выбирают данные
Для чтения данных из базы используется собственный язык запросов, похожий на SQL, но работающий с объектами конфигурации, а не с физическими таблицами СУБД. Платформа сама транслирует запрос в SQL для конкретной базы данных — MS SQL Server, PostgreSQL, Oracle или IBM Db2.
Запросы пишут в консоли запросов при отладке, встраивают в код через объект Запрос или используют в схемах компоновки данных. Типичная ошибка новичков — перебирать выборку в цикле и внутри цикла делать новые запросы («запрос в цикле»), что резко замедляет работу. Правильный подход — один запрос с соединениями таблиц или временными таблицами.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| СУММА(Товары.Количество) КАК Количество
|ИЗ
| Документ.РеализацияТоваров.Товары КАК Товары
|ГДЕ
| Товары.Ссылка.Дата >= &НачалоПериода
|СГРУППИРОВАТЬ ПО
| Товары.Номенклатура";
Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(ТекущаяДатаСеанса()));
Результат = Запрос.Выполнить().Выгрузить();СКД и язык выражений — на чём делают отчёты
Система компоновки данных (СКД) — декларативный механизм построения отчётов. Разработчик описывает набор данных (обычно запросом), ресурсы, группировки и настройки, а платформа сама формирует итоговый запрос и выводит результат. Программный код при этом минимален или отсутствует вовсе.
Внутри СКД есть собственный язык выражений для вычисляемых полей и пользовательских полей. Его синтаксис напоминает встроенный язык, но набор функций ограничен. Для сложных расчётов выражения можно выносить в общие модули через конструкцию ВычислитьВыражение.
Как выбрать инструмент под задачу
Внешние компоненты и расширения возможностей
Когда встроенного языка не хватает — например, для работы с нестандартным оборудованием, специализированными алгоритмами или библиотеками — разрабатывают внешние компоненты. Современный способ — технология Native API: компонента пишется на C++ и собирается под все нужные платформы (Windows, Linux, для разных разрядностей).
Компонента подключается к конфигурации как макет с архивом, и её методы вызываются из встроенного языка как обычные функции. Устаревшая технология COM используется реже, в основном в старых решениях под Windows.
Отдельное направление — расширения конфигурации. Это не язык, а механизм доработки типовых конфигураций без снятия их с поддержки: код пишется на том же встроенном языке, но хранится отдельно и не ломается при обновлении типового решения.
Интеграции: на чём пишут обмены с 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 удобнее, для небольших доработок чаще используют конфигуратор.
Сравнение инструментов разработки
Подходит для быстрых доработок и небольших проектов; встроен в платформу, но слабо поддерживает командную работу и контроль версий
Подходит для командной разработки и крупных проектов; 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-сервисы. Доработки типовых конфигураций выполняйте через расширения и обязательно проверяйте результат на копии базы.