Что на самом деле пишут на языке 1С: задачи, отрасли, границы

· 10 мин

Содержание

Язык 1С используется для одного: описывать бизнес-логику учётных и управленческих систем на платформе 1С:Предприятие 8.3. На нём пишут проведение документов, расчёт зарплаты, правила резервирования товара, обмены с сайтами и банками, отчёты для руководителя. Игры, драйверы и мобильные приложения общего назначения на нём не пишут.

Если сравнить с универсальными языками: на Python или Java вы сначала строите каркас (базу, формы, права, отчёты), а потом пишете логику. В 1С каркас даёт платформа, а язык нужен для того, что отличает одну компанию от другой. Поэтому в бизнесе язык 1С — это инструмент доработки типовых конфигураций, а в разработке — способ быстро собрать отраслевое решение.

Где исполняется язык 1С и из чего состоит решение

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

Основные «кирпичи», с которыми работает программист:

  • 📁 Справочники — номенклатура, контрагенты, сотрудники.
  • 📄 Документы — реализация, поступление, начисление зарплаты.
  • 📊 Регистры — накопления (остатки и обороты), сведений (цены, курсы), бухгалтерии (проводки), расчёта (начисления с периодами действия).
  • 🧾 Планы счетов, планы видов характеристик, планы видов расчёта — справочники особого рода для учёта.
  • 🔄 Бизнес-процессы и задачи — согласования и маршруты.
  • 🌐 HTTP-сервисы и веб-сервисы — точки входа для внешних систем.

Код выполняется в двух местах: на клиенте и на сервере. Где именно — задают директивы компиляции &НаКлиенте, &НаСервере, &НаСервереБезКонтекста. Работа с базой данных идёт только на сервере, и опытный разработчик старается делать как можно меньше вызовов между клиентом и сервером.

Кроме самого языка, в платформе есть язык запросов — диалект SQL с русскими ключевыми словами (ВЫБРАТЬ, ИЗ, ГДЕ, СГРУППИРОВАТЬ ПО). Через него читают данные, а не перебирают записи в цикле. Без запросов практической разработки на 1С не бывает.

Синтаксис есть и на английском: Procedure, If … Then, Query. Платформа понимает оба варианта, но в типовых конфигурациях весь код русскоязычный, и в командах принято писать так же.

Три способа менять поведение системы

СпособЧто этоКогда выбирают
Изменение конфигурацииПравка кода и объектов прямо в основной конфигурацииСвоя разработка с нуля или глубоко переделанная типовая
Расширение (.cfe)Надстройка поверх типовой, с версии платформы 8.3.6Доработка БП, УТ, ЗУП без снятия с поддержки
Внешняя обработка или отчёт (.epf, .erf)Отдельный файл, подключается в режиме ПредприятияПечатные формы, загрузки из Excel, разовые выгрузки

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

Бухгалтерия и налоги: язык 1С в учётных конфигурациях

Самая массовая сфера — бухгалтерский и налоговый учёт. 1С:Бухгалтерия предприятия 3.0 целиком написана на встроенном языке: от формирования проводок при проведении документа до закрытия месяца и заполнения деклараций.

Что здесь пишут программисты при доработках:

  • 🧮 свои правила проводок для нетипичных операций (например, отдельные субсчета под проекты);
  • 🖨️ печатные формы — актов, счетов, накладных в формате заказчика;
  • 📥 загрузку первички из Excel или файлов поставщика;
  • ✅ проверки перед проведением: не дать провести реализацию без договора или с пустой статьёй затрат.

Проведение документа устроено одинаково во всей платформе. В модуле объекта есть обработчик ОбработкаПроведения, в котором код заполняет наборы движений регистров. Для бухгалтерии это движения регистра бухгалтерии — те самые проводки Дт/Кт, которые потом видны в оборотно-сальдовой ведомости.

Правки проведения в типовой БП меняют проводки задним числом при перепроведении периода. Любую такую доработку сначала проверяют на копии базы.

Торговля и склад: учёт остатков и резервов

Второй большой блок — 1С:Управление торговлей 11 и решения для розницы. Здесь язык 1С описывает движение товара: приход, перемещение, резерв, отгрузку, списание.

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

Пример запроса остатков по складу. Имя регистра условное, в каждой конфигурации оно своё:

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

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
	Сообщить(СтрШаблон("%1: %2", Выборка.Номенклатура, Формат(Выборка.Количество, "ЧГ=0")));
КонецЦикла;

Типичные торговые доработки:

  1. Своя схема скидок и наценок под маркетинговые акции.
  2. Контроль отгрузки при долге клиента выше лимита.
  3. Выгрузка остатков и цен на сайт или маркетплейс по расписанию.
  4. Подбор товара по штрихкоду со своего терминала сбора данных.

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

Зарплата и кадры: расчёт с периодами действия

1С:Зарплата и управление персоналом 3.1 показывает сильную сторону платформы — регистры расчёта. Это механизм, которого нет «из коробки» в универсальных языках.

Регистр расчёта хранит не просто сумму, а период действия начисления. Отсюда умеет платформа:

  • 📅 вытеснение — больничный за 3 дня вытесняет оклад за эти же дни;
  • 🔁 перерасчёт — исправили приказ задним числом, и система сама находит зависимые начисления;
  • 📈 базовые периоды — расчёт среднего заработка по начислениям за прошлые месяцы.

На языке 1С в ЗУП дописывают формулы новых видов начислений, свои кадровые документы, выгрузки в банк по зарплатному проекту, интеграции со СКУД для учёта рабочего времени.

Многие формулы в ЗУП 3.1 задаются в карточке вида начисления без программирования, через показатели. К коду переходят, когда формулы не хватает: например, когда премия зависит от данных из внешней CRM.

ERP и производство: планирование ресурсов

1С:ERP Управление предприятием 2 и 1С:Комплексная автоматизация — самые крупные конфигурации на платформе. В ERP язык 1С описывает производство: спецификации изделий, маршруты, графики загрузки оборудования, распределение затрат на продукцию.

Здесь работа программиста заметно отличается от доработок бухгалтерии:

АспектНебольшая база БПВнедрение ERP
Пользователи3–15сотни
Режим работычасто файловыйтолько клиент-сервер с СУБД
Главная заботакорректные проводкипроизводительность и блокировки
Командаодин программистаналитики, разработчики, тестировщики

В больших базах решают вопросы, которых нет в маленьких: управляемые блокировки, длинные транзакции, оптимизация запросов по индексам СУБД. На этом уровне разработчик 1С должен понимать, как его запрос превращается в SQL на стороне PostgreSQL или MS SQL Server.

В основе всех типовых конфигураций лежит Библиотека стандартных подсистем (БСП). Это набор общих механизмов: права доступа , печать, присоединённые файлы, обмен данными, обновление версий. Знание БСП экономит недели: многие задачи уже решены, их нужно найти и вызвать.

Интеграции и свои приложения на языке 1С

Язык 1С давно перестал быть языком «только для бухгалтерии». На нём строят интеграционные шлюзы и самостоятельные корпоративные системы: учёт заявок, CRM, документооборот, системы для отраслей вроде медицины или ЖКХ.

Средства интеграции, которые есть в платформе:

  • 🌐 HTTP-сервисы — свой REST API, который вызывают сайт или мобильное приложение;
  • 🧩 веб-сервисы — SOAP для старых корпоративных систем;
  • 📡 стандартный интерфейс OData — доступ к данным без написания кода, его включают в настройках публикации;
  • 🔌 HTTP-клиент — обращение к чужим API: банк, курсы валют, службы доставки;
  • 📄 JSON и XML — объекты ЧтениеJSON, ЗаписьJSON, ЧтениеXML, ЗаписьXML;
  • 🗂️ COM-соединение — подключение к базе 1С из внешней программы под Windows.

Обращение к внешнему API выглядит так:

Соединение = Новый HTTPСоединение("api.example.ru", 443, , , , 30, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/v1/rates");
Ответ = Соединение.Получить(Запрос);

Если Ответ.КодСостояния = 200 Тогда
	Чтение = Новый ЧтениеJSON;
	Чтение.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
	Данные = ПрочитатьJSON(Чтение);
	Чтение.Закрыть();
Иначе
	ВызватьИсключение СтрШаблон("Сервис вернул код %1", Формат(Ответ.КодСостояния, "ЧГ=0"));
КонецЕсли;

Для обмена между базами 1С (например, УТ → БП) используют планы обмена и правила конвертации. В типовых конфигурациях эти обмены уже настроены и включаются в разделе Администрирование → Синхронизация данных.

Отдельная ветка — мобильная платформа 1С. На том же языке собирают приложения для Android и iOS: торговый агент, кладовщик, курьер. Приложение работает автономно и синхронизируется с основной базой.

Отчёты и аналитика: СКД вместо ручных таблиц

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

Что входит в аналитику на платформе:

  • 📊 управленческие отчёты по продажам, марже, дебиторке с расшифровкой до документа;
  • 🗺️ сводные таблицы и диаграммы прямо в отчёте;
  • 🖥️ монитор руководителя — набор показателей на одной форме;
  • 🧠 механизм анализа данных и прогнозирования — поиск ассоциаций, кластеризация, дерево решений по данным базы.

Для тяжёлой аналитики на миллионах строк данные чаще выгружают во внешнюю BI-систему или хранилище. Тут язык 1С снова работает как интеграция: регламентное задание собирает срез и отправляет его через HTTP или в промежуточную базу.

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

Как выучить язык 1С и чем он отличается от других языков

Путь в профессию

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

Типичная траектория:

  1. Синтаксис языка, типы данных, коллекции (Массив, Структура, Соответствие, ТаблицаЗначений).
  2. Объекты метаданных и проведение документов по регистрам.
  3. Язык запросов и виртуальные таблицы.
  4. Управляемые формы и клиент-серверное взаимодействие.
  5. СКД, обмены, БСП.
  6. Производительность: блокировки, план запроса, профилирование.

Для практики хватает учебной версии платформы — она бесплатная, но ограничивает число записей и не годится для рабочего учёта.

Квалификацию подтверждают экзаменами фирмы 1С. Базовый уровень — «1С:Профессионал» по платформе или конфигурации: тест на компьютере. Следующий — «1С:Специалист»: практическая задача, которую решают в конфигураторе за ограниченное время. Для работы во франчайзи статус «Специалиста» часто влияет на грейд и оплату.

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

Сравнение с универсальными языками

КритерийЯзык 1СPythonJava / C#
Областьучётные и управленческие системы на платформе 1Сскрипты, данные, веб, MLкрупные сервисы, банки, корпоративные системы
Каркас приложениядаёт платформа: база, формы, права, отчётысобирают из фреймворковсобирают из фреймворков
Типизациядинамическаядинамическаястатическая
ООПнет классов и наследования, есть объекты метаданныхполноеполное
Скорость старта учётной задачивысокаянизкаянизкая
Применимость вне 1Спочти нетширокаяширокая

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

Обратная сторона — скорость. Документ с проведением по регистрам, формой списка, правами и отчётом опытный программист 1С собирает за день. На универсальном стеке это работа на неделю для нескольких человек.

Какой у вас интерес к языку 1С?

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

Язык 1С — это настоящий язык программирования?
Да. В нём есть переменные, условия, циклы, процедуры, функции, обработка исключений. Он предметно-ориентированный: работает только внутри платформы 1С:Предприятие.
Можно ли писать на языке 1С на английском?
Можно. Платформа понимает английский вариант ключевых слов и имён встроенных объектов. В типовых конфигурациях код русскоязычный, поэтому на практике пишут по-русски.
На каких операционных системах работает код 1С?
Серверная часть работает под Windows и Linux, клиент — под Windows, Linux и macOS, плюс веб-клиент в браузере. Код один и тот же, если не используются платформенно-зависимые вещи вроде COM.
Нужно ли знать бухгалтерию, чтобы программировать на 1С?
Для доработок БП и ЗУП — да, хотя бы на уровне проводок, остатков и налогов. Для интеграций и отраслевых решений без учёта денег можно обойтись базовыми понятиями.
Можно ли подключить к 1С код на другом языке?
Можно через внешние компоненты (на C++ по технологии Native API) или через вызов внешних сервисов по HTTP. Прямо выполнить код Python или Java внутри модуля 1С нельзя.