К статье
Практический материал

Разработка и Конфигурация · 13 мин

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

Как выглядит программирование в 1С: конфигуратор, встроенный язык, модули, запросы и отладка. Разбор реальных задач, примеры кода и частые ошибки новичков.

Программирование в 1С — это работа во встроенной среде разработки, которая называется конфигуратором, на встроенном языке, синтаксис которого напоминает смесь BASIC и Pascal и допускает написание операторов как на русском, так и на английском языке. В отличие от классических языков вроде Python или Java, здесь разработчик почти не занимается низкоуровневыми задачами: платформа сама управляет базой данных, интерфейсом и правами доступа, а программист описывает бизнес-логику — проведение документов, расчёт итогов, формирование отчётов.

Типичный рабочий день 1С-разработчика выглядит так: открыть конфигуратор, найти нужный объект метаданных (документ, справочник, регистр), открыть его модуль и написать обработчик события — например, что должно произойти при записи документа. Затем код проверяется в режиме отладки: программа запускается в пользовательском режиме, а конфигуратор показывает, какие строки выполняются и какие значения принимают переменные.

Главная особенность платформы — метаданные. Структура базы данных описывается не SQL-скриптами, а деревом объектов в конфигураторе. Добавили документ «Заказ клиента» с табличной частью — платформа сама создала таблицы в СУБД, форму ввода и базовые операции. Программист дописывает только нестандартную логику.

Среда разработки: конфигуратор и его основные окна

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

Ключевые окна, с которыми работает программист: редактор модуля (текст кода с подсветкой синтаксиса), палитра свойств (параметры выбранного объекта), окно конфигурации и панель результатов отладки. Редактор кода поддерживает автоподстановку, шаблоны текста, контекстную подсказку по синтаксису и переход к описанию процедур по клавише F12.

Параллельно с конфигуратором обычно открыт режим «1С:Предприятие» — это пользовательский режим, где проверяется результат. Типичный цикл: изменил код в конфигураторе → обновил конфигурацию базы данных (клавиша F7) → перезапустил сеанс → проверил поведение в пользовательском режиме.

На каком языке пишут в 1С

Встроенный язык 1С — высокоуровневый предметно-ориентированный язык. Его отличительная черта — двуязычный синтаксис: одни и те же операторы можно писать по-русски («Если… Тогда… КонецЕсли») или по-английски («If… Then… EndIf»). В российских компаниях преобладает русский вариант. Язык регистронезависим и не требует точек с запятой в конце каждой строки, хотя они используются.

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

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

Если Товары.Количество() = 0 Тогда

Сообщить("Не заполнена табличная часть ""Товары""");

Отказ = Истина;

КонецЕсли;

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

Из примера видно характерный стиль: программист обращается к реквизитам объекта напрямую по имени (Товары), использует встроенные коллекции и предопределённые параметры событий (Отказ). Нет ни подключения библиотек, ни описания классов — контекст объекта уже задан платформой.

Типизация динамическая: переменная может сначала хранить число, а затем строку. Основные типы — Число, Строка, Дата, Булево, а также ссылочные типы (СправочникСсылка, ДокументСсылка) и объектные типы для работы с данными. Для коллекций используются Массив, Структура, Соответствие, ТаблицаЗначений.

Модули: где физически находится код

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

Основные виды модулей: модуль объекта (события документа или справочника — ПередЗаписью, ПриПроведении), модуль формы (логика экранной формы — ПриОткрытии, обработчики кнопок), модуль менеджера (серверные процедуры работы с объектом в целом), общие модули (библиотеки переиспользуемых процедур и функций) и модуль приложения (события запуска системы).

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

Типичные ошибки
01
Размещение запросов к базе в клиентских процедурах формы — платформа выдаёт ошибку вызова серверных методов или код работает с лишними серверными вызовами
02
Дублирование одной и той же логики в модуле формы и модуле объекта — при изменении правится одно место, второе забывается, и поведение разъезжается
03
Использование общих модулей без флага «Сервер» для процедур, которые работают с данными, — вызовы из серверного контекста завершаются ошибкой

Запросы: как читают данные из базы

Для выборки данных в 1С используется собственный язык запросов, похожий на SQL, но работающий с объектами метаданных, а не с физическими таблицами. Разработчик пишет «ВЫБРАТЬ … ИЗ Документ.РеализацияТоваров», а платформа транслирует это в SQL конкретной СУБД.

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| Реализация.Контрагент КАК Контрагент,

| СУММА(Реализация.Сумма) КАК Сумма

|ИЗ

| Документ.РеализацияТоваров КАК Реализация

|ГДЕ

| Реализация.Дата МЕЖДУ &Начало И &Конец

|СГРУППИРОВАТЬ ПО

| Реализация.Контрагент";

Запрос.УстановитьПараметр("Начало", НачалоМесяца(ТекущаяДатаСеанса()));

Запрос.УстановитьПараметр("Конец", КонецМесяца(ТекущаяДатаСеанса()));

Результат = Запрос.Выполнить().Выгрузить();

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

Важное ограничение: язык запросов 1С предназначен только для чтения и расчёта данных. Изменение данных выполняется объектной моделью — через методы Записать() объектов или наборы записей регистров. Прямая правка таблиц средствами СУБД обходит бизнес-логику и приводит к рассогласованию итогов.

Отладка: как проверяют написанный код

Отладчик встроен в конфигуратор и работает поверх живого сеанса. Разработчик ставит точку останова на строке кода, запускает отладку (F5), выполняет действие в пользовательском режиме — и выполнение останавливается на нужной строке. Дальше доступны пошаговое выполнение (F11 — с заходом в процедуры, F10 — через них), просмотр значений переменных и табло выражений.

Контрольные точки, которые стоит проверять при отладке любой доработки:

Контрольные точки

Как проверить результат

Значения переменных в точке останова
Норма

Переменные содержат ожидаемые типы и значения, ссылки заполнены

Тревожный признак

Переменные Неопределено или содержат пустые ссылки — значит, данные не найдены или параметр не передан

Результат запроса
Норма

Выборка возвращает строки, суммы сходятся с данными документов

Тревожный признак

Пустой результат при заведомо существующих данных — проверьте параметры и условия отбора

Движения документа по регистрам
Норма

После проведения записи в регистрах появились и итоги изменились

Тревожный признак

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

Поведение под разными пользователями
Норма

Код работает под пользователем с ограниченными правами

Тревожный признак

Под полными правами работает, под рядовым пользователем — ошибка доступа

Для диагностики в рабочих базах, где нельзя останавливать выполнение, используют журнал регистрации и вывод сообщений через Сообщить() или запись в журнал методом ЗаписьЖурналаРегистрации(). Это позволяет отследить, какая ветка кода выполнилась и с какими данными.

Чем реально занимается 1С-программист

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

  • доработка типовых конфигураций (1С:Бухгалтерия, Управление торговлей, ERP) под процессы компании: новые реквизиты, проверки, печатные формы;
  • разработка отчётов на системе компоновки данных (СКД) — выборки с настройками, которые пользователь меняет без программиста;
  • обмены данными: интеграция с сайтами, CRM, банками, маркетплейсами через HTTP-запросы, файлы, веб-сервисы;
  • написание внешних обработок и расширений — доработок, не меняющих основную конфигурацию;
  • исправление ошибок учёта: поиск причин расхождений итогов, восстановление последовательностей проведения;
  • обновление конфигураций и перенос доработок на новые релизы.

Как вносить доработку

Прямое изменение конфигурации

Подходит для собственных (нетиповых) конфигураций. В типовых затрудняет обновление: каждый релиз придётся сопоставлять вручную.

Расширение конфигурации

Доработка хранится отдельным слоем, типовая конфигурация остаётся на поддержке и обновляется штатно. Ограничение: не все объекты и сценарии доступны для изменения через расширение.

Внешняя обработка или отчёт

Подходит для разовых операций, загрузок, печатных форм. Не меняет конфигурацию вообще, но не может изменить поведение типовых объектов.

Как начать писать на 1С: порядок освоения

Порог входа в 1С-разработку ниже, чем в большинство языков: не нужно настраивать окружение, веб-сервер и ORM. Достаточно установить платформу и учебную версию конфигурации. Разумная последовательность освоения выглядит так:

Порядок действий
  1. 1
    Установите платформу 1С:Предприятие (доступна учебная версия) и создайте пустую информационную базу
  2. 2
    Изучите дерево конфигурации: создайте справочник, документ и регистр, посмотрите, какие формы и таблицы платформа построила автоматически
  3. 3
    Напишите первый обработчик — например, проверку заполнения документа в событии ПередЗаписью — и проверьте его в пользовательском режиме
  4. 4
    Освойте конструктор запросов: постройте отчёт по созданным документам с группировкой и отбором
  5. 5
    Научитесь пользоваться отладчиком: точки останова, пошаговое выполнение, табло выражений
  6. 6
    Разберите устройство типовой конфигурации на примере одного документа: модули, движения, подписки на события

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

Итог

Что важно запомнить

Программирование в 1С — это работа в конфигураторе на встроенном языке с русскоязычным синтаксисом: разработчик пишет обработчики событий в модулях объектов, запросы на SQL-подобном языке и отлаживает код встроенным отладчиком. Структуру данных и интерфейс платформа строит сама по метаданным, а программист добавляет бизнес-логику. Любые доработки проверяют на копии базы, а для типовых конфигураций предпочитают расширения прямым изменениям.

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

Нужно ли знать другой язык программирования перед изучением 1С?

Нет, встроенный язык 1С часто становится первым языком разработчика. Базовое понимание переменных, условий и циклов осваивается прямо в процессе. Знание SQL помогает при работе с запросами, но конструктор запросов позволяет начать без него. Если позже понадобятся интеграции, пригодятся основы HTTP и форматов JSON/XML.

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

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

Чем расширение отличается от доработки конфигурации?

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

Почему код в форме не видит данные из базы?

Скорее всего, процедура выполняется на клиенте (директива &НаКлиенте), где прямой доступ к данным запрещён. Нужно вынести работу с данными в серверную процедуру (&НаСервере или серверный общий модуль) и вызывать её из клиентской. Это следствие трёхзвенной архитектуры платформы.

Можно ли изменить данные напрямую в SQL-базе 1С?

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

Сколько времени нужно, чтобы начать писать простые доработки?

При регулярных занятиях базовые навыки — создание объектов, простые обработчики, запросы, отладка — формируются за несколько недель практики. Уверенная работа с типовыми конфигурациями требует дополнительно понимания учётных механизмов и обычно занимает несколько месяцев реальных задач.