Разработка и Конфигурация · 10 мин
Язык программирования 1С: для чего используется и как он устроен
Что такое встроенный язык 1С, для каких задач он применяется: доработка конфигураций, отчёты, обмены данными, интеграции. Синтаксис, примеры и советы новичкам.
Язык программирования 1С — это встроенный язык платформы «1С:Предприятие», на котором описывается бизнес-логика прикладных решений: проведение документов, расчёт зарплаты, формирование отчётов, обмен данными с другими системами. Он не существует отдельно от платформы: код выполняется только внутри среды 1С — на сервере, в толстом или тонком клиенте, в веб-клиенте.
Главная особенность языка — предметная направленность. В нём нет задач общего назначения вроде работы с операционной системой или графикой; зато есть встроенные объекты для документов, справочников, регистров, проводок и запросов к базе данных. Разработчик оперирует понятиями учёта, а не низкоуровневыми конструкциями.
Вторая особенность — двуязычный синтаксис. Код можно писать на русском языке, и в большинстве конфигураций так и делается: Если Условие Тогда ... КонецЕсли;. Английский вариант синтаксиса тоже поддерживается, но на практике используется редко. Это снижает порог входа для специалистов без классического программистского образования.
Для каких задач применяется язык 1С
Основная область применения — доработка типовых конфигураций под нужды конкретной компании. Типовая «1С:Бухгалтерия» или «1С:Управление торговлей» покрывает стандартные процессы, но почти в каждом внедрении требуются изменения: нестандартный расчёт скидок, дополнительные проверки при проведении документа, свои печатные формы.
Вторая большая группа задач — отчёты и обработки. С помощью системы компоновки данных и языка запросов разработчик строит аналитические отчёты, а встроенный язык использует для постобработки результатов, вывода в табличный документ, программного формирования файлов.
Третья группа — обмены и интеграции: выгрузка заказов на сайт, загрузка банковских выписок, синхронизация справочников между базами, работа с веб-сервисами и HTTP-запросами. Для этого в языке есть объекты для чтения и записи XML, JSON, текстовых файлов, а также HTTPСоединение.
Как устроен язык: основные конструкции
По синтаксису язык напоминает паскалевидные языки: есть условия, циклы, процедуры и функции, переменные с нестрогой типизацией. Тип значения определяется в момент присваивания, поэтому одна и та же переменная может последовательно хранить число, строку или ссылку на объект базы.
Код размещается в модулях: модулях объектов, форм, общих модулях, модуле приложения. Каждый модуль имеет контекст выполнения — клиент или сервер, — и это принципиально важно: обращение к базе данных возможно только на сервере, а интерактивные диалоги с пользователем — только на клиенте.
Функция РассчитатьСкидку(СуммаПокупки) Экспорт
Если СуммаПокупки >= 100000 Тогда
Возврат СуммаПокупки * 0.10;
ИначеЕсли СуммаПокупки >= 50000 Тогда
Возврат СуммаПокупки * 0.05;
Иначе
Возврат 0;
КонецЕсли;
КонецФункции
Пример выше показывает типичный фрагмент: функция с экспортным доступом, ветвление по условиям, возврат числового значения. Никакой работы с памятью, указателями или потоками — платформа берёт это на себя.
Язык запросов — вторая половина разработки
Отдельно стоит язык запросов 1С — декларативный язык, похожий на SQL, но работающий с объектами конфигурации, а не с физическими таблицами. Выборка данных из документов, регистров и справочников почти всегда выполняется запросом, а не перебором записей в цикле.
Типичная ошибка начинающих — получать все данные циклом и фильтровать их в коде. Это работает медленно и нагружает сервер. Правильный подход: сформулировать запрос с условиями, соединениями и группировками, а встроенный язык использовать только для обработки уже выбранных данных.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Продажи.Номенклатура,
| СУММА(Продажи.Сумма) КАК Сумма
|ИЗ
| РегистрНакопления.Продажи.Обороты(&Начало, &Конец) КАК Продажи
|СГРУППИРОВАТЬ ПО
| Продажи.Номенклатура";
Запрос.УстановитьПараметр("Начало", НачалоМесяца(ТекущаяДатаСеанса()));
Запрос.УстановитьПараметр("Конец", КонецМесяца(ТекущаяДатаСеанса()));
Результат = Запрос.Выполнить().Выгрузить();
Где выполняется код: клиент, сервер, внешние соединения
В файловом варианте базы весь код фактически выполняется на компьютере пользователя. В клиент-серверном варианте логика делится: клиент отвечает за интерфейс, сервер — за работу с данными. Директивы компиляции &НаКлиенте, &НаСервере, &НаСервереБезКонтекста определяют, где будет исполняться процедура.
Частый источник ошибок — попытка вызвать серверную функцию из клиентского кода без объявления её серверной и экспортной, или наоборот — показать пользователю диалог из серверного контекста. Платформа выдаст ошибку компиляции или выполнения, и её нужно воспринимать как подсказку о неверной архитектуре, а не как случайный сбой.
Расширения: безопасный способ доработки
Современный подход к доработке типовых решений — расширения конфигурации. Вместо изменения кода поставщика создаётся отдельный слой, в котором переопределяются процедуры, добавляются объекты и формы. При обновлении типовой конфигурации расширение сохраняется и продолжает работать.
Ограничения у расширений есть: нельзя изменять состав измерений регистров, типы реквизитов и часть системной логики. Если доработка затрагивает ядро учёта — например, добавляет новое измерение в регистр бухгалтерии, — придётся менять саму конфигурацию с снятием её с полной поддержки, что усложняет дальнейшие обновления.
Как выбрать способ доработки
Кому стоит изучать язык 1С и с чего начать
Язык 1С подходит бухгалтерам, экономистам и аналитикам, которые хотят автоматизировать свою работу, а также программистам, переходящим в сферу учётных систем. Порог входа ниже, чем у языков общего назначения: русскоязычный синтаксис, готовая предметная модель, встроенная среда разработки (конфигуратор) с отладчиком.
Практичный путь обучения: установить учебную версию платформы, разобраться с объектами метаданных (справочники, документы, регистры), затем освоить запросы и только потом — тонкости клиент-серверного взаимодействия и компоновки данных. Попытка учить язык отдельно от объектов конфигурации редко даёт результат: ценность языка именно в связке с моделью учёта.
- 1Установите платформу и создайте пустую конфигурацию в конфигураторе
- 2Создайте простой справочник и документ, напишите обработчик проведения
- 3Освойте конструктор запросов и выборку данных
- 4Научитесь выводить результаты в отчёт через СКД
- 5Изучите директивы компиляции и клиент-серверное взаимодействие
- 6Попробуйте доработать учебную задачу через расширение конфигурации
Ограничения и альтернативы
Язык 1С не подходит для задач вне платформы: на нём не пишут драйверы, игры, мобильные приложения или сайты. Если задача требует высокопроизводительных вычислений, сложной обработки изображений или машинного обучения, её выносят во внешние компоненты или отдельные сервисы, а 1С используют как учётное ядро.
Внутри экосистемы альтернативой коду иногда выступают встроенные механизмы: бизнес-процессы, планы обмена, настройки СКД. Прежде чем писать программную реализацию, стоит проверить, не решается ли задача штатными средствами — это сокращает объём поддержки.
Что важно запомнить
Язык 1С — предметно-ориентированный инструмент внутри платформы для описания учётной логики, отчётов и интеграций. Эффективная разработка строится на связке: объекты метаданных + язык запросов + встроенный язык, а доработки типовых решений безопаснее делать через расширения.
Частые вопросы
Нужно ли высшее техническое образование, чтобы программировать на 1С?
Нет. Русскоязычный синтаксис и предметная направленность позволяют освоить язык специалистам из учётных профессий. Важнее понимание учётных процессов, чем знание алгоритмов и структур данных.
Можно ли писать на 1С код на английском языке?
Да, платформа поддерживает английский вариант синтаксиса, и в одном модуле можно смешивать оба. На практике в российских проектах почти всегда используется русский вариант, а английский встречается в международных разработках.
Чем язык запросов 1С отличается от SQL?
Запросы 1С обращаются к объектам конфигурации (документам, регистрам), а не к физическим таблицам СУБД, и поддерживают специфические возможности: виртуальные таблицы итогов, разворачивание периодов, иерархические итоги. Платформа сама транслирует запрос в SQL конкретной СУБД.
Подойдёт ли 1С для написания сайта или мобильного приложения?
Для сайтов — нет, но платформа умеет публиковать HTTP- и веб-сервисы, через которые сайт обменивается данными с базой. Мобильная платформа 1С существует отдельно и позволяет создавать приложения для учётных задач, но это специфическая ниша.
Что выбрать для первой доработки: изменение конфигурации или расширение?
Начинайте с расширения: оно не затрагивает типовой код и переживает обновления. К изменению самой конфигурации прибегайте только когда задача принципиально не решается расширением, и фиксируйте все изменённые места для будущих обновлений.
Где выполнять отладку кода в 1С?
В конфигураторе есть встроенный отладчик: точки останова, пошаговое выполнение, просмотр значений переменных и таблиц значений. Для серверного кода в клиент-серверном варианте может потребоваться включить режим отладки на сервере 1С.