Система 1С:Предприятие давно перестала быть просто бухгалтерским ПО — сегодня это мощная платформа для автоматизации бизнес-процессов любого масштаба. Но чтобы адаптировать её под специфические задачи компании, требуется программирование. А вот здесь у новичков часто возникает вопрос: на чем вообще пишут код для 1С?

Ответ не так однозначен, как может показаться. Да, у платформы есть собственный встроенный язык, но современные разработчики активно используют и внешние инструменты — от специализированных редакторов до полноценных IDE. В этой статье мы разберём все актуальные способы программирования в экосистеме 1С: от классического подхода до передовых практик с применением Git, Docker и даже Python.

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

1. Встроенный язык 1С: основа всего

Начнём с базы: встроенный язык программирования 1С (часто называемый просто "язык 1С" или "1С:Язык"). Это проприетарный язык, разработанный специально для платформы 1С:Предприятие. Он используется для:

  • 📝 написания обработок и отчётов
  • 🔧 модификации типовых конфигураций (Бухгалтерия, ЗУП, УТ и др.)
  • 🤖 автоматизации бизнес-процессов
  • 🔄 интеграции с другими системами через HTTPЗапрос, COMОбъект и т.д.

Синтаксис языка напоминает Pascal или Basic, но с уникальными конструкциями для работы с объектами 1С. Например, обращение к справочнику выглядит так:

Справочник = Справочники.Номенклатура;

Элемент = Справочник.НайтиПоНаименованию("Ноутбук");

Главное преимущество встроенного языка — полная интеграция с платформой. Вы можете:

  • 🔹 напрямую работать с метаданными конфигурации
  • 🔹 использовать встроенные объекты (Документ, Справочник, РегистрСведений)
  • 🔹 отлаживать код прямо в конфигураторе с пошаговым выполнением
⚠️ Внимание: Встроенный язык не подходит для задач, требующих высокой производительности вычислений (например, сложные математические расчёты). В таких случаях лучше использовать внешние компоненты на C++ или C#.
📊 Какой опыт работы с 1С у вас?
Меньше года
1-3 года
3-5 лет
Более 5 лет
Я только начинаю

2. Конфигуратор 1С: основной инструмент разработчика

Конфигуратор — это среда разработки, поставляемая вместе с платформой 1С:Предприятие. Именно здесь происходит:

  • 📁 редактирование структуры базы данных (справочники, документы, регистры)
  • 💻 написание и отладка кода на встроенном языке
  • 🔍 анализ производительности запросов
  • 📊 создание форм и отчётов

Интерфейс конфигуратора разделён на несколько ключевых областей:

ОбластьНазначение
Дерево метаданныхИерархический список всех объектов конфигурации (справочники, документы, отчёты и т.д.)
Панель свойствНастройка параметров выбранного объекта (например, длины поля или типа данных)
Редактор модулейНаписание и редактирование программного кода
Окно сообщенийВывод отладочной информации и ошибок
Инспектор переменныхПросмотр значений переменных во время отладки

Конфигуратор позволяет работать в двух основных режимах:

  1. Режим "1С:Предприятие" — для тестирования изменений в пользовательском интерфейсе.
  2. Режим "Конфигуратор" — для редактирования структуры и кода.

Для ускорения работы используйте горячие клавиши:

  • 🔘 F5 — запуск отладки
  • 🔘 F7 — пошаговое выполнение кода
  • 🔘 Ctrl+Shift+F — глобальный поиск по текстам модулей
  • 🔘 Alt+F12 — открытие списка процедур и функций текущего модуля
⚠️ Внимание: При работе в конфигураторе всегда делайте резервные копии перед массовыми изменениями. Ошибка в коде может привести к невозможности открытия базы! Используйте команду Файл → Сохранить данные конфигурации в файл... для создания бекапа.

3. Внешние редакторы кода: когда конфигуратора недостаточно

Хотя конфигуратор покрывает большинство задач, многие разработчики предпочитают использовать внешние редакторы кода для:

  • 🔄 работы с системой контроля версий (Git, SVN)
  • 📁 одновременного редактирования нескольких файлов
  • 🔍 продвинутого поиска и замены по регулярным выражениям
  • 🎨 кастомизации интерфейса (тем, шрифтов, плагинов)

Самые популярные инструменты среди 1С-разработчиков:

РедакторПреимуществаНедостатки
VS Code + расширение 1C Syntax Бесплатный, кросс-платформенный, поддержка Git, множество плагинов Требует настройки, нет встроенной отладки
Sublime Text + 1C (BSL) Language Высокая скорость работы, удобный поиск по файлам Платная лицензия, ограниченная поддержка 1С-синтаксиса
Notepad++ с подсветкой синтаксиса Лёгкий, не требует установки, подходит для быстрых правок Минимальный функционал для 1С, нет интеграции с платформой
1C:EDT (Eclipse Development Tools) Официальный инструмент от 1С, поддержка командной работы, интеграция с Git Тяжёлый, сложный для новичков, платный

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

  1. Через меню Файл → Сохранить тексты модулей во внешние файлы...
  2. Используя утилиту 1C:Enterprise Development Tools (EDT).
  3. С помощью сторонних инструментов вроде OneScript или Vanessa-ADD.
💡

Для удобной работы в VS Code установите расширения 1C Syntax (для подсветки кода) и BSL Language Server (для автодополнения и проверки ошибок).

4. Системы контроля версий: Git для 1С

До недавнего времени контроль версий в мире 1С ассоциировался разве что с 1C:Хранилище конфигураций — встроенным решением от разработчика платформы. Однако с ростом сложности проектов и переходом на командную разработку Git стал неотъемлемой частью процесса.

Основные преимущества использования Git для 1С:

  • 🔄 возможность отката к любой версии кода
  • 👥 параллельная работа нескольких разработчиков
  • 📊 визуализация истории изменений
  • 🔗 интеграция с системами сборки (Jenkins, GitLab CI)

Но здесь есть нюансы: стандартный формат хранения конфигурации 1С (.cf, .epf) не предназначен для текстового сравнения. Поэтому используют:

  • 📁 Выгрузку текстов модулей в отдельные файлы (.bsl, .os)
  • 📁 Формат DT (Design Time) — структурированное представление метаданных в JSON
  • 📁 Утилиты конвертации вроде v8unpack или 1C:EDT

Пример типичного рабочего процесса с Git:

  1. Экспортируем тексты модулей из конфигуратора в папку проекта.
  2. Редактируем файлы во внешнем редакторе (VS Code, Sublime Text).
  3. Коммитим изменения в репозиторий.
  4. После согласования импортируем изменения обратно в конфигуратор.
⚠️ Внимание: При работе с Git в 1С никогда не коммитьте бинарные файлы конфигурации (.cf, .epf, .erf). Они не предназначены для слияния и приведут к конфликтам. Используйте только текстовые форматы!

Создать репозиторий на GitHub/GitLab|Экспортировать тексты модулей в папку проекта|Настроить .gitignore (исключить .cf, .epf)|Установить расширение для синтаксиса BSL|Создать ветку для новой функциональности-->

5. Автоматизация и тестирование: OneScript и Vanessa-ADD

Для комплексного тестирования и автоматизации рутинных задач в экосистеме 1С появились специализированные инструменты:

OneScript — это открытый язык программирования, совместимый с синтаксисом 1С, но выполняемый вне платформы. Он позволяет:

  • 🧪 писать автоматизированные тесты
  • 🔄 обрабатывать данные без запуска 1С
  • 📊 генерировать отчёты в фоновом режиме
  • 🔧 создавать утилиты для администрирования баз

Пример скрипта на OneScript для выгрузки данных в Excel:

ПодключитьБиблиотеку("OneScript.Excel");

Таблица = Новый ТаблицаЗначений;

Таблица.Колонки.Добавить("Товар");

Таблица.Колонки.Добавить("Цена");

Для Каждого Товар Из Справочники.Номенклатура Цикл

Строки = Таблица.Добавить();

Строки.Товар = Товар.Наименование;

Строки.Цена = Товар.Цена;

КонецЦикла;

Excel = Новый ExcelДокумент;

Excel.ВывестиТаблицу(Таблица);

Excel.СохранитьКак("Цены.xlsx");

Vanessa-ADD — это фреймворк для автоматизированного тестирования 1С-приложений. С его помощью можно:

  • 📝 создавать тестовые сценарии на языке 1С
  • 🔍 проверять корректность работы форм и отчётов
  • 📊 генерировать отчёты о покрытии тестами
  • 🔄 интегрироваться с системами CI/CD

Пример теста в Vanessa-ADD:

Процедура ПроверитьСозданиеДокумента()

// Arrange

ТестовыйКлиент = Новый КлиентVanessaADD();

ТестовыйКлиент.ПодключитьсяКБазе("File=D:\Bases\Test");

// Act

Документ = ТестовыйКлиент.СоздатьДокумент("ЗаказПокупателя");

Документ.Контрагент = ТестовыйКлиент.НайтиСправочникЗначение("Контрагенты", "ООО Ромашка");

Документ.Записать();

// Assert

Если Документ.Проведен() Тогда

Vanessa.ДобавитьОшибку("Документ не должен проводиться автоматически!");

КонецЕсли;

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

Зачем нужны тесты в 1С?

Автоматизированные тесты позволяют:

1. Уменьшить количество багов при доработках.

2. Ускорить регрессионное тестирование после обновлений платформы.

3. Документировать ожидаемое поведение системы.

4. Безопасно рефакторить устаревший код.

6. Интеграция с другими языками: Python, C#, JavaScript

В некоторых случаях возможностей встроенного языка 1С недостаточно. Тогда на помощь приходят внешние компоненты и интеграция с другими языками программирования.

Самые востребованные сценарии:

  • 🐍 Python — для анализа данных (Pandas), машинного обучения (scikit-learn), работы с API.
  • 🖥️ C# — для высоконагруженных вычислений или создания десктопных утилит.
  • 🌐 JavaScript — для взаимодействия с веб-сервисами или разработки фронтенда.

Пример вызова Python-скрипта из 1С:

ПутьКPython = "C:\Python39\python.exe";

ПутьКСкрипту = "C:\Scripts\process_data.py";

Команда = """" + ПутьКPython + """ """ + ПутьКСкрипту + """ """" + Параметры + """";

Результат = ВыполнитьКомандуСистемы(Команда);

// Обработка результата

Если НЕ ЗначениеЗаполнено(Результат) Тогда

Сообщить("Ошибка выполнения скрипта!");

Иначе

Данные = Новый Структура();

Данные.Вставить("Результат", Результат);

КонецЕсли;

Для интеграции с C# часто используют COM-объекты или HTTP-сервисы. Пример создания COM-объекта в 1С:

Попытка

COMОбъект = Новый COMОбъект("MyCustomLibrary.Calculator");

Результат = COMОбъект.Sum(10, 20);

Сообщить("Результат: " + Результат);

Исключение

Сообщить("Ошибка при создании COM-объекта: " + ОписаниеОшибки());

КонецПопытки;

Для работы с JavaScript актуальны два подхода:

  1. Встраивание скриптов в HTML-формы 1С (например, для кастомизации интерфейса).
  2. Вызов внешних JS-библиотек через HTTPЗапрос или Node.js.
⚠️ Внимание: При интеграции с внешними языками учитывайте ограничения платформы 1С. Например, в тонком клиенте и веб-клиенте недоступны некоторые функции работы с файловой системой, что может усложнить взаимодействие с внешними скриптами.

7. Современные подходы: Docker, CI/CD, облачные решения

С развитием DevOps-практик в мире 1С появились инструменты для автоматизации развёртывания и непрерывной интеграции:

Docker позволяет создавать изолированные контейнеры с предустановленной платформой 1С. Это удобно для:

  • 🐳 быстрого развёртывания тестовых сред
  • 🔄 обеспечения одинаковой среды для всех разработчиков
  • 📦 упаковки решений для клиентов

Пример Dockerfile для 1С:

FROM ubuntu:20.04

Установка зависимостей

RUN apt-get update && apt-get install -y \

wine \

ttf-mscorefonts-installer \

&& rm -rf /var/lib/apt/lists/*

Копирование дистрибутива 1С

COPY 1Cv8.x86_64.tar.gz /opt/

RUN tar -xzf /opt/1Cv8.x86_64.tar.gz -C /opt/

Настройка окружения

ENV WINEPREFIX=/opt/1Cv8/wineprefix

ENV WINEARCH=win64

Запуск платформы

CMD wine /opt/1Cv8/8.3.20.1503/bin/1cv8.exe

CI/CD (Continuous Integration/Continuous Delivery) в 1С реализуется через:

  • 🔄 GitLab CI или GitHub Actions для автоматической сборки
  • 📦 Jenkins для развёртывания на тестовые и боевые серверы
  • 🧪 SonarQube для анализа качества кода

Облачные решения (например, 1C:Fresh или 1C:Gile) позволяют:

  • ☁️ разрабатывать и тестировать конфигурации прямо в браузере
  • 👥 организовывать совместную работу над проектом
  • 🔒 автоматически создавать резервные копии
💡

Использование Docker и CI/CD в 1С сокращает время на развёртывание новых версий и уменьшает количество ошибок при обновлениях.

8. Какой инструмент выбрать: рекомендации для разных задач

Выбор инструмента зависит от сложности задачи, опыта команды и требований к проекту. Вот наши рекомендации:

ЗадачаРекомендуемый инструментАльтернатива
Простая доработка типовой конфигурации Встроенный язык + Конфигуратор VS Code с плагином 1C Syntax
Командная разработка 1C:EDT + Git VS Code + OneScript + Git
Автоматизированное тестирование Vanessa-ADD OneScript + собственные скрипты
Интеграция с внешними системами HTTP-сервисы + Python/C# COM-объекты (для Windows)
Высоконагруженные вычисления Внешние компоненты на C#/C++ Оптимизация запросов в 1С

Для новичков оптимальный старт:

  1. Освойте встроенный язык и конфигуратор.
  2. Научитесь работать с запросами и отчётами.
  3. Изучите основы Git для контроля версий.
  4. Попробуйте VS Code для удобного редактирования кода.

Для опытных разработчиков актуальны:

  • 🔹 1C:EDT для сложных проектов
  • 🔹 Vanessa-ADD для тестирования
  • 🔹 Docker для изолированных сред
  • 🔹 CI/CD для автоматизации сборок

Не бойтесь экспериментировать! Например, комбинация VS Code + Git + OneScript может оказаться продуктивнее, чем классический конфигуратор, особенно если вы привыкли к современным инструментам разработки.

💡

Если вы только начинаете, начните с простых задач в конфигураторе, а затем постепенно осваивайте внешние инструменты. Не пытайтесь сразу использовать всё и сразу — это приведёт к путанице.

FAQ: Частые вопросы о программировании в 1С

Можно ли программировать в 1С без знания встроенного языка?

Технически да, но это сильно ограничит ваши возможности. Внешние инструменты (Python, C#) могут помочь с интеграцией или вычислениями, но основная логика бизнес-процессов всё равно пишется на встроенном языке. Без его знания вы не сможете:

  • 🔹 модифицировать типовые конфигурации
  • 🔹 создавать новые документы или справочники
  • 🔹 писать обработки и отчёты

Рекомендуем начать именно со встроенного языка, а затем расширять инструментарий.

Какой редактор кода лучше для 1С: VS Code или 1C:EDT?

Это зависит от задачи:

  • 🔹 VS Code подойдёт, если вам нужна лёгкость, бесплатность и интеграция с Git. Он отлично справляется с редактированием кода, но не имеет встроенных средств для работы с метаданными.
  • 🔹 1C:EDT — официальный инструмент от 1С, который поддерживает полный цикл разработки, включая редактирование метаданных, отладку и работу с хранилищем. Однако он тяжёлый и платный.

Для большинства задач VS Code будет достаточным, а 1C:EDT оправдан для крупных командных проектов.

Нужно ли использовать Git для 1С, если я работаю один?

Даже в одиночной разработке Git принесёт пользу:

  • 🔹 Вы сможете откатываться к предыдущим версиям кода, если что-то пойдёт не так.
  • 🔹 Удобно отслеживать изменения между версиями.
  • 🔹 Можно экспериментировать в отдельных ветках, не боясь сломать основную версию.
  • 🔹 Легче переносить код между разными проектами.

Минимальная настройка Git для 1С занимает не более часа, но сэкономит вам десятки часов в будущем.

Можно ли писать мобильные приложения для 1С?

Да, но с оговорками. Платформа 1С поддерживает:

  • 📱 Мобильное приложение "1С:Предприятие" — работает на Android и iOS, но имеет ограниченный функционал по сравнению с десктопной версией.
  • 🌐 Веб-клиент — адаптивный интерфейс, который можно открывать в браузере мобильного устройства.

Для создания полноценных нативных мобильных приложений с интеграцией с 1С обычно используют:

  • 🔹 REST API платформы 1С (пublikacija na веб-сервере)
  • 🔹 Внешние бэкенды на Python/Node.js, которые взаимодействуют с 1С через HTTPЗапрос или COMОбъект.

Пример: вы можете написать мобильное приложение на Flutter или React Native, которое будет общаться с 1С через REST-сервис.

Как обмениваться данными между 1С и другими системами?

Существует несколько способов:

  1. Файловый обмен (например, через XML, JSON, Excel). Просто, но требует ручного контроля.
  2. HTTP-сервисы (REST/SOAP). Современный и гибкий способ, поддерживаемый платформой 1С начиная с версии 8.3.6.
  3. Прямое подключение к базе через ODBC или OLE DB. Быстро, но небезопасно.
  4. Обмен через промежуточную базу (например, PostgreSQL или MS SQL). Надёжно, но требует дополнительной инфраструктуры.
  5. Использование message broker (RabbitMQ, Kafka). Оптимально для высоконагруженных систем.

Пример кода для отправки HTTP-запроса из 1С:

Запрос = Новый HTTPЗапрос("https://api.example.com/data");

Запрос.УстановитьТелоИзСтроки(JSONЗаписать(ДанныеДляОтправки));

Ответ = Новый HTTPСоединение("api.example.com", 443,,, Новый ЗащищенноеСоединениеOpenSSL());

Ответ.ОтправитьДляОбработки(Запрос);

Результат = Ответ.ПолучитьТелоКакСтроку();