Разработка и Конфигурация · 13 мин
Как выглядит программирование в 1С: язык, среда и реальные задачи
Как выглядит программирование в 1С: конфигуратор, встроенный язык, модули, запросы и отладка. Разбор реальных задач, примеры кода и частые ошибки новичков.
Программирование в 1С — это работа во встроенной среде разработки, которая называется конфигуратором, на встроенном языке, синтаксис которого напоминает смесь BASIC и Pascal и допускает написание операторов как на русском, так и на английском языке. В отличие от классических языков вроде Python или Java, здесь разработчик почти не занимается низкоуровневыми задачами: платформа сама управляет базой данных, интерфейсом и правами доступа, а программист описывает бизнес-логику — проведение документов, расчёт итогов, формирование отчётов.
Типичный рабочий день 1С-разработчика выглядит так: открыть конфигуратор, найти нужный объект метаданных (документ, справочник, регистр), открыть его модуль и написать обработчик события — например, что должно произойти при записи документа. Затем код проверяется в режиме отладки: программа запускается в пользовательском режиме, а конфигуратор показывает, какие строки выполняются и какие значения принимают переменные.
Главная особенность платформы — метаданные. Структура базы данных описывается не SQL-скриптами, а деревом объектов в конфигураторе. Добавили документ «Заказ клиента» с табличной частью — платформа сама создала таблицы в СУБД, форму ввода и базовые операции. Программист дописывает только нестандартную логику.
Среда разработки: конфигуратор и его основные окна
Вся разработка ведётся в приложении «Конфигуратор», которое входит в поставку платформы 1С:Предприятие. После открытия информационной базы в конфигураторе разработчик видит дерево конфигурации — иерархический список всех объектов: общие модули, справочники, документы, регистры, отчёты, обработки. Двойной щелчок по объекту открывает его свойства, а через контекстное меню доступны модули и формы.
Ключевые окна, с которыми работает программист: редактор модуля (текст кода с подсветкой синтаксиса), палитра свойств (параметры выбранного объекта), окно конфигурации и панель результатов отладки. Редактор кода поддерживает автоподстановку, шаблоны текста, контекстную подсказку по синтаксису и переход к описанию процедур по клавише F12.
Параллельно с конфигуратором обычно открыт режим «1С:Предприятие» — это пользовательский режим, где проверяется результат. Типичный цикл: изменил код в конфигураторе → обновил конфигурацию базы данных (клавиша F7) → перезапустил сеанс → проверил поведение в пользовательском режиме.
На каком языке пишут в 1С
Встроенный язык 1С — высокоуровневый предметно-ориентированный язык. Его отличительная черта — двуязычный синтаксис: одни и те же операторы можно писать по-русски («Если… Тогда… КонецЕсли») или по-английски («If… Then… EndIf»). В российских компаниях преобладает русский вариант. Язык регистронезависим и не требует точек с запятой в конце каждой строки, хотя они используются.
Типичный фрагмент кода — обработчик события, который проверяет заполнение документа перед записью, выглядит так:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если Товары.Количество() = 0 Тогда
Сообщить("Не заполнена табличная часть ""Товары""");
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
Из примера видно характерный стиль: программист обращается к реквизитам объекта напрямую по имени (Товары), использует встроенные коллекции и предопределённые параметры событий (Отказ). Нет ни подключения библиотек, ни описания классов — контекст объекта уже задан платформой.
Типизация динамическая: переменная может сначала хранить число, а затем строку. Основные типы — Число, Строка, Дата, Булево, а также ссылочные типы (СправочникСсылка, ДокументСсылка) и объектные типы для работы с данными. Для коллекций используются Массив, Структура, Соответствие, ТаблицаЗначений.
Модули: где физически находится код
Код в 1С не лежит в отдельных файлах проекта — он распределён по модулям, привязанным к объектам конфигурации. Понимание того, какой модуль когда выполняется, — базовый навык разработчика.
Основные виды модулей: модуль объекта (события документа или справочника — ПередЗаписью, ПриПроведении), модуль формы (логика экранной формы — ПриОткрытии, обработчики кнопок), модуль менеджера (серверные процедуры работы с объектом в целом), общие модули (библиотеки переиспользуемых процедур и функций) и модуль приложения (события запуска системы).
В управляемых формах код дополнительно разделяется директивами компиляции: &НаКлиенте, &НаСервере, &НаСервереБезКонтекста. Это отражает клиент-серверную архитектуру: часть логики выполняется на компьютере пользователя, часть — на сервере, где доступны данные. Неправильное размещение кода — частая причина ошибок и лишней нагрузки.
Запросы: как читают данные из базы
Для выборки данных в 1С используется собственный язык запросов, похожий на SQL, но работающий с объектами метаданных, а не с физическими таблицами. Разработчик пишет «ВЫБРАТЬ … ИЗ Документ.РеализацияТоваров», а платформа транслирует это в SQL конкретной СУБД.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Реализация.Контрагент КАК Контрагент,
| СУММА(Реализация.Сумма) КАК Сумма
|ИЗ
| Документ.РеализацияТоваров КАК Реализация
|ГДЕ
| Реализация.Дата МЕЖДУ &Начало И &Конец
|СГРУППИРОВАТЬ ПО
| Реализация.Контрагент";
Запрос.УстановитьПараметр("Начало", НачалоМесяца(ТекущаяДатаСеанса()));
Запрос.УстановитьПараметр("Конец", КонецМесяца(ТекущаяДатаСеанса()));
Результат = Запрос.Выполнить().Выгрузить();
Писать запросы вручную необязательно: в конфигураторе есть конструктор запроса с графическим построением — выбор таблиц, полей, условий, группировок. Начинающие разработчики обычно строят запрос в конструкторе, а затем дорабатывают текст вручную.
Важное ограничение: язык запросов 1С предназначен только для чтения и расчёта данных. Изменение данных выполняется объектной моделью — через методы Записать() объектов или наборы записей регистров. Прямая правка таблиц средствами СУБД обходит бизнес-логику и приводит к рассогласованию итогов.
Отладка: как проверяют написанный код
Отладчик встроен в конфигуратор и работает поверх живого сеанса. Разработчик ставит точку останова на строке кода, запускает отладку (F5), выполняет действие в пользовательском режиме — и выполнение останавливается на нужной строке. Дальше доступны пошаговое выполнение (F11 — с заходом в процедуры, F10 — через них), просмотр значений переменных и табло выражений.
Контрольные точки, которые стоит проверять при отладке любой доработки:
Как проверить результат
Переменные содержат ожидаемые типы и значения, ссылки заполнены
Переменные Неопределено или содержат пустые ссылки — значит, данные не найдены или параметр не передан
Выборка возвращает строки, суммы сходятся с данными документов
Пустой результат при заведомо существующих данных — проверьте параметры и условия отбора
После проведения записи в регистрах появились и итоги изменились
Документ провёлся без ошибок, но движений нет — обработчик проведения не формирует записи
Код работает под пользователем с ограниченными правами
Под полными правами работает, под рядовым пользователем — ошибка доступа
Для диагностики в рабочих базах, где нельзя останавливать выполнение, используют журнал регистрации и вывод сообщений через Сообщить() или запись в журнал методом ЗаписьЖурналаРегистрации(). Это позволяет отследить, какая ветка кода выполнилась и с какими данными.
Чем реально занимается 1С-программист
Круг повседневных задач шире, чем просто написание кода. Значительная часть работы — понимание учётных процессов и аккуратное встраивание доработок в типовую конфигурацию так, чтобы она оставалась обновляемой.
- доработка типовых конфигураций (1С:Бухгалтерия, Управление торговлей, ERP) под процессы компании: новые реквизиты, проверки, печатные формы;
- разработка отчётов на системе компоновки данных (СКД) — выборки с настройками, которые пользователь меняет без программиста;
- обмены данными: интеграция с сайтами, CRM, банками, маркетплейсами через HTTP-запросы, файлы, веб-сервисы;
- написание внешних обработок и расширений — доработок, не меняющих основную конфигурацию;
- исправление ошибок учёта: поиск причин расхождений итогов, восстановление последовательностей проведения;
- обновление конфигураций и перенос доработок на новые релизы.
Как вносить доработку
Подходит для собственных (нетиповых) конфигураций. В типовых затрудняет обновление: каждый релиз придётся сопоставлять вручную.
Доработка хранится отдельным слоем, типовая конфигурация остаётся на поддержке и обновляется штатно. Ограничение: не все объекты и сценарии доступны для изменения через расширение.
Подходит для разовых операций, загрузок, печатных форм. Не меняет конфигурацию вообще, но не может изменить поведение типовых объектов.
Как начать писать на 1С: порядок освоения
Порог входа в 1С-разработку ниже, чем в большинство языков: не нужно настраивать окружение, веб-сервер и ORM. Достаточно установить платформу и учебную версию конфигурации. Разумная последовательность освоения выглядит так:
- 1Установите платформу 1С:Предприятие (доступна учебная версия) и создайте пустую информационную базу
- 2Изучите дерево конфигурации: создайте справочник, документ и регистр, посмотрите, какие формы и таблицы платформа построила автоматически
- 3Напишите первый обработчик — например, проверку заполнения документа в событии ПередЗаписью — и проверьте его в пользовательском режиме
- 4Освойте конструктор запросов: постройте отчёт по созданным документам с группировкой и отбором
- 5Научитесь пользоваться отладчиком: точки останова, пошаговое выполнение, табло выражений
- 6Разберите устройство типовой конфигурации на примере одного документа: модули, движения, подписки на события
Дальнейший рост — это изучение системы компоновки данных, механизмов обмена, расширений и стандартов разработки фирмы «1С». Полезно читать чужой код типовых конфигураций: он показывает принятые в экосистеме приёмы и именование.
Что важно запомнить
Программирование в 1С — это работа в конфигураторе на встроенном языке с русскоязычным синтаксисом: разработчик пишет обработчики событий в модулях объектов, запросы на SQL-подобном языке и отлаживает код встроенным отладчиком. Структуру данных и интерфейс платформа строит сама по метаданным, а программист добавляет бизнес-логику. Любые доработки проверяют на копии базы, а для типовых конфигураций предпочитают расширения прямым изменениям.
Частые вопросы о программировании в 1С
Нужно ли знать другой язык программирования перед изучением 1С?
Нет, встроенный язык 1С часто становится первым языком разработчика. Базовое понимание переменных, условий и циклов осваивается прямо в процессе. Знание SQL помогает при работе с запросами, но конструктор запросов позволяет начать без него. Если позже понадобятся интеграции, пригодятся основы HTTP и форматов JSON/XML.
Можно ли писать код 1С на английском языке?
Да, синтаксис полностью двуязычен: все операторы имеют английские аналоги, и в одном модуле допустимо смешивать оба варианта, хотя это считается плохим стилем. Имена переменных и процедур разработчик выбирает сам — в типовых конфигурациях принят русский язык.
Чем расширение отличается от доработки конфигурации?
Расширение — это отдельный слой изменений, который подключается к типовой конфигурации без её модификации. Конфигурация остаётся на полной поддержке и обновляется штатно, а расширение применяется поверх. Прямая доработка меняет саму конфигурацию, и каждое обновление требует ручного сопоставления изменений.
Почему код в форме не видит данные из базы?
Скорее всего, процедура выполняется на клиенте (директива &НаКлиенте), где прямой доступ к данным запрещён. Нужно вынести работу с данными в серверную процедуру (&НаСервере или серверный общий модуль) и вызывать её из клиентской. Это следствие трёхзвенной архитектуры платформы.
Можно ли изменить данные напрямую в SQL-базе 1С?
Технически таблицы доступны, но делать этого нельзя: платформа хранит служебные итоги, версии объектов и служебные таблицы, и прямое изменение нарушит целостность. Все правки выполняются через объектную модель — методы записи документов, справочников и наборов записей регистров, либо через специально написанные обработки.
Сколько времени нужно, чтобы начать писать простые доработки?
При регулярных занятиях базовые навыки — создание объектов, простые обработчики, запросы, отладка — формируются за несколько недель практики. Уверенная работа с типовыми конфигурациями требует дополнительно понимания учётных механизмов и обычно занимает несколько месяцев реальных задач.