Что на самом деле пишут на языке 1С: задачи, отрасли, границы
Содержание
Язык 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С:Зарплата и управление персоналом 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С. Базовый уровень — «1С:Профессионал» по платформе или конфигурации: тест на компьютере. Следующий — «1С:Специалист»: практическая задача, которую решают в конфигураторе за ограниченное время. Для работы во франчайзи статус «Специалиста» часто влияет на грейд и оплату.
Код пишут в конфигураторе или в 1C:Enterprise Development Tools (EDT) — среде на базе Eclipse с поддержкой Git. Для командной разработки используют хранилище конфигурации или Git через EDT.
Сравнение с универсальными языками
| Критерий | Язык 1С | Python | Java / C# |
|---|---|---|---|
| Область | учётные и управленческие системы на платформе 1С | скрипты, данные, веб, ML | крупные сервисы, банки, корпоративные системы |
| Каркас приложения | даёт платформа: база, формы, права, отчёты | собирают из фреймворков | собирают из фреймворков |
| Типизация | динамическая | динамическая | статическая |
| ООП | нет классов и наследования, есть объекты метаданных | полное | полное |
| Скорость старта учётной задачи | высокая | низкая | низкая |
| Применимость вне 1С | почти нет | широкая | широкая |
Главное ограничение языка 1С — он не существует вне платформы. Нельзя написать на нём программу, которая запустится без 1С:Предприятия. Нет своих классов и наследования, нет сторонних библиотек в привычном смысле: расширять возможности приходится внешними компонентами или вызовом других систем.
Обратная сторона — скорость. Документ с проведением по регистрам, формой списка, правами и отчётом опытный программист 1С собирает за день. На универсальном стеке это работа на неделю для нескольких человек.