Встроенный язык 1С: какие задачи бизнеса решают с его помощью
Содержание
Язык 1С нужен, чтобы описывать поведение прикладных решений на платформе 1С:Предприятие 8.3: как проводится документ, что считает отчёт, кто какие данные видит, как программа обменивается с банком, сайтом или маркетплейсом. На нём написаны все типовые конфигурации — Бухгалтерия, ЗУП, УТ, ERP. Где применяется язык 1С: везде, где стандартных возможностей программы не хватает и нужно доработать её под конкретную компанию.
Официально он называется «встроенный язык 1С:Предприятия». Синтаксис русскоязычный, но у каждого оператора есть английский аналог: Если … Тогда и If … Then работают одинаково. Рядом с ним живёт отдельный язык запросов — похожий на SQL, им выбирают данные из базы.
Как устроен язык 1С и чем он отличается от «обычных» языков
Язык 1С не самостоятельный. Программу на нём нельзя запустить отдельно от платформы, как скрипт на Python. Код всегда лежит внутри конфигурации — в модулях объектов, форм, общих модулях — и выполняется платформой.
Отсюда главные особенности:
- 🧩 Готовые прикладные объекты. Справочник, документ, регистр накопления, регистр сведений , план счетов — это типы, которые платформа уже умеет хранить в базе, показывать в формах и проверять. Программист не пишет таблицы и формы с нуля, а описывает логику.
- 🖥️ Клиент и сервер в одном коде. Директивы
&НаКлиенте,&НаСервере,&НаСервереБезКонтекстауказывают, где выполнится процедура. От правильного выбора зависит скорость: каждый вызов сервера с клиента — это обмен по сети. - 🗃️ Запросы вместо прямого SQL. Текст запроса пишется к объектам конфигурации (
Справочник.Контрагенты,РегистрНакопления.ТоварыНаСкладах), а платформа сама переводит его в SQL для конкретной СУБД — MS SQL, PostgreSQL или файловой базы. - 🔒 Встроенная модель прав. Роли, ограничение доступа на уровне записей, привилегированный и безопасный режимы — часть платформы, а не отдельная библиотека.
Простой пример запроса из кода — найти контрагента по ИНН:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Контрагенты.Ссылка КАК Ссылка,
| Контрагенты.Наименование КАК Наименование
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.ИНН = &ИНН";
Запрос.УстановитьПараметр("ИНН", "7700000000");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Наименование);
КонецЦикла;
Код пишут в Конфигураторе или в 1C:Enterprise Development Tools (EDT). Конфигуратор привычнее для небольших доработок, EDT удобнее для командной разработки с Git.
Учёт в типовых конфигурациях: что написано на языке 1С
Бухгалтер каждый день пользуется кодом на языке 1С, даже не открывая Конфигуратор. Нажатие «Провести и закрыть» в документе запускает процедуру ОбработкаПроведения в модуле объекта. Она формирует проводки по счетам, движения по складам, записи для НДС-книг.
На встроенном языке реализованы:
- 📒 Правила проведения — какие проводки и движения делает документ. Например, реализация товаров списывает себестоимость и начисляет выручку и НДС.
- 🧮 Расчёты — закрытие месяца , распределение косвенных расходов, начисление амортизации, расчёт зарплаты и НДФЛ в ЗУП.
- ✅ Проверки заполнения — запрет провести документ без контрагента или с пустым счётом учёта.
- 📑 Печатные формы — счёт, УПД, акт, платёжка: макет рисуют в редакторе, а данные в него выводит код.
- 📤 Регламентированная отчётность — заполнение деклараций и проверка контрольных соотношений.
Для компании это значит простую вещь: учёт в 1С не «зашит намертво». Если налоговая логика меняется, фирма 1С выпускает новый релиз с исправленным кодом. Если меняется внутренняя логика компании, её можно дописать самим.
Доработка конфигурации под задачи компании
Это самая частая причина, по которой бизнес ищет программиста 1С. Типовая конфигурация закрывает учёт «как у всех», а у конкретной фирмы свои правила.
Типичные заказы на доработку:
- ➕ новый реквизит в документе — например, «Номер договора поставщика» в поступлении;
- 🚫 запрет проводить реализацию, если у клиента просрочена дебиторка больше заданной суммы;
- 🖨️ своя печатная форма — коммерческое предложение с логотипом или упаковочный лист;
- 🔄 автоматическое заполнение табличной части по данным другого документа;
- 📦 новый справочник или документ под процесс, которого нет в типовой, например учёт пробных образцов.
Расширение или правка основной конфигурации
Есть два способа внести изменения, и у них разная цена сопровождения.
| Способ | Когда подходит | Чем рискуете |
|---|---|---|
| Расширение конфигурации (с платформы 8.3.6) | Большинство доработок: реквизиты, формы, обработчики событий, отчёты | Минимум: при обновлении типовой расширение сохраняется, но его нужно проверить на совместимость |
| Снятие с поддержки и правка основной конфигурации | Глубокие изменения, которые расширением не сделать | Каждое обновление превращается в ручное сравнение и объединение, это дорого и долго |
Внешние обработки и отчёты (файлы .epf, .erf) | Печатные формы, заполнение табличных частей, разовые операции | Подключаются через раздел дополнительных отчётов и обработок, конфигурацию не трогают |
Перед любой доработкой рабочей базы сделайте копию и проверьте изменения на ней, а не на живых данных.
Правка основной конфигурации без расширения — частая причина, почему компания годами сидит на старом релизе: обновлять дорого, и бухгалтерия теряет актуальные формы отчётности.
Интеграция 1С с сайтом, банком и другими программами
Учётная система почти никогда не живёт одна. Её связывают с интернет-магазином, маркетплейсами, банк-клиентом, CRM, складской системой, кассами. Язык 1С даёт для этого несколько штатных механизмов.
| Механизм | Для чего используют |
|---|---|
HTTPСоединение и HTTPЗапрос | 1С сама обращается к внешнему REST API: курсы, статусы заказов, выгрузка остатков |
| HTTP-сервисы | 1С принимает запросы извне: сайт отправляет заказ, 1С отвечает JSON |
| Веб-сервисы (SOAP) | Обмен с системами, которые работают по WSDL |
| Стандартный интерфейс OData | Чтение и запись объектов базы без написания отдельного API |
| COM-соединение | Обмен между базами на Windows, автоматизация из внешних программ |
| Обмен через XML и формат EnterpriseData | Синхронизация между типовыми конфигурациями: например, УТ и Бухгалтерия |
| Чтение и запись файлов | Загрузка выписок, прайсов в Excel, CSV, JSON |
Пример запроса к внешнему API по HTTPS:
Соединение = Новый HTTPСоединение("api.example.ru", 443, , , , 30,
Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/v1/orders?status=new");
Запрос.Заголовки.Вставить("Accept", "application/json");
Ответ = Соединение.Получить(Запрос);
Если Ответ.КодСостояния = 200 Тогда
ТекстОтвета = Ответ.ПолучитьТелоКакСтроку();
// дальше разбор JSON через ЧтениеJSON
Иначе
Сообщить("Ошибка обмена, код " + Формат(Ответ.КодСостояния, "ЧГ=0"));
КонецЕсли;
Ключи и пароли от внешних сервисов не храните в тексте модуля. Для этого в типовых конфигурациях есть безопасное хранилище данных, а в своих доработках — хотя бы отдельный регистр сведений с ограниченным доступом.
Отчёты и аналитика на системе компоновки данных
Отчёт в 1С — это запрос плюс оформление. Основной инструмент — система компоновки данных (СКД). Программист описывает в схеме источник данных, поля, ресурсы и параметры, а пользователь потом сам меняет группировки, отборы и сортировку прямо в форме отчёта.
Что можно сделать без единой строки «ручного» кода:
- 📊 сводную таблицу «менеджер × месяц × выручка» с итогами;
- 📈 диаграмму динамики продаж или остатков;
- 🎯 условное оформление — красным выделить просроченные долги;
- 🗂️ несколько вариантов одного отчёта для разных отделов.
Код нужен, когда данные надо доработать на лету: подставить расчётное поле, собрать данные из внешнего источника, обработать результат перед выводом. Для этого в модуле отчёта есть обработчик ПриКомпоновкеРезультата.
Отдельный кейс — аналитические панели для руководителя. Их собирают в виде формы с несколькими отчётами и диаграммами или выгружают данные во внешнюю BI-систему через тот же OData или HTTP-сервис.
Если отчёт «тормозит», чаще всего виноват не язык, а запрос: выборка из регистров без отборов по периоду, соединения с большими таблицами, вызов виртуальных таблиц без параметров. Сначала смотрят текст запроса, потом железо.
Автоматизация рутины: регламентные и фоновые задания
Многое, что бухгалтер делает руками, можно отдать программе. Для этого на языке 1С пишут обработки и настраивают задания.
Регламентные задания запускаются по расписанию на сервере:
- 🌙 ночная загрузка курсов валют и банковских выписок;
- 📬 рассылка отчётов руководителю по понедельникам;
- 🧹 очистка устаревших служебных данных;
- 🔁 обмен с сайтом каждые 15 минут.
Фоновые задания запускаются из кода, чтобы долгая операция не блокировала интерфейс. Пользователь нажал «Сформировать», а расчёт идёт в отдельном потоке на сервере.
Обработки заменяют серию ручных действий одной кнопкой: перезаполнить счета учёта в сотне документов, создать акты по всем договорам на абонентское обслуживание, загрузить номенклатуру из файла поставщика.
В клиент-серверной базе регламентные задания выполняет сервер 1С, и их можно заблокировать в настройках информационной базы. В файловой базе они работают, только пока кто-то из пользователей запустил программу. Если обмен «молчит» ночью — проверьте это первым делом.
Массовая обработка документов в рабочей базе меняет движения сразу у многих объектов. Запускайте её сначала на копии и только после проверки — на рабочей базе.
Права доступа и защита данных
Права в 1С описывают средствами конфигурации и языка. Это три уровня.
- 👥 Роли. Роль — набор разрешений на объекты: читать, добавлять, изменять, проводить, удалять. Пользователю назначают одну или несколько ролей. В типовых конфигурациях роли собраны в группы доступа и профили, и бухгалтер настраивает их в разделе
Администрирование, не открывая Конфигуратор. - 🔍 Ограничение доступа на уровне записей (RLS). Условие внутри роли, похожее на фрагмент запроса. Например, менеджер видит только документы своего подразделения, а кассир — только свою организацию. Условие проверяет сама платформа при любом чтении данных.
- 🛡️ Привилегированный и безопасный режимы. Код в привилегированном режиме выполняется без проверки прав — так делают служебные операции. Безопасный режим, наоборот, ограничивает внешние обработки: им запрещают доступ к файлам, COM-объектам и внешним ресурсам.
Типичные задачи программиста в этой области:
- 🔐 сделать роль «только просмотр отчётов» для собственника;
- 🏢 разграничить данные нескольких организаций в одной базе;
- 📝 добавить журнал: кто и когда изменил цену или реквизиты контрагента;
- 🧱 закрыть доступ к зарплате для всех, кроме расчётчика.
Журнал регистрации платформа ведёт и без доработок: он показывает входы пользователей, запись и удаление объектов. Код дописывают, когда нужна своя история изменений конкретных полей.
Мобильные приложения, веб-клиент и сервисы на платформе 1С
Одна конфигурация может работать в нескольких клиентах. Код при этом пишется один раз, а различается только то, что делается на клиенте.
| Вариант | Как работает | Пример задачи |
|---|---|---|
| Тонкий клиент | Приложение Windows, Linux или macOS, подключение к базе | Рабочее место бухгалтера |
| Веб-клиент | Работа через браузер после публикации базы на веб-сервере (Apache или IIS) | Доступ из дома без установки 1С |
| Мобильный клиент | Приложение на телефоне подключается к опубликованной базе | Руководитель смотрит отчёты и согласует заявки |
| Мобильная платформа | Отдельное мобильное приложение со своей базой, синхронизация с основной | Торговый агент принимает заказы без интернета, кладовщик сканирует штрихкоды |
| HTTP-сервисы как бэкенд | 1С отдаёт данные внешнему сайту или приложению на другом языке | Личный кабинет клиента с остатками и счетами |
Мобильные приложения на платформе 1С пишут на том же встроенном языке. Разработчику не нужно учить Kotlin или Swift, чтобы сделать приложение для торговых агентов: справочники, документы и обмен с центральной базой описываются привычными средствами.
Что язык 1С делать не умеет
Честная граница применения:
- ❌ писать программы, которые работают без платформы 1С;
- ❌ делать игры, драйверы, системные утилиты;
- ❌ полноценно заменять фронтенд-фреймворк для публичного сайта с нестандартным дизайном — для этого 1С используют как бэкенд.
Если задача выходит за эти рамки, 1С подключают к внешнему коду через HTTP, COM или внешние компоненты.
Частые вопросы о языке 1С
Нужно ли знать язык 1С бухгалтеру?
Можно ли писать на языке 1С по-английски?
Чем язык 1С отличается от языка запросов 1С?
Запрос из кода на встроенном языке.