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

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

Как программировать в 1С: с чего начать и как устроена разработка

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

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

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

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

Что нужно установить и как устроена среда разработки

Минимальный набор — платформа 1С:Предприятие 8.3 и информационная база. Для обучения подойдёт учебная версия платформы: она бесплатна, но имеет ограничения (не работает с COM-соединениями, ограничен объём данных, нельзя использовать пароли на уровне ОС). Для файловой базы сервер не нужен — платформа работает с файлом напрямую, что удобно на старте.

Конфигуратор открывается из окна запуска кнопкой «Конфигуратор». Главные инструменты внутри: дерево конфигурации (меню «Конфигурация → Открыть конфигурацию»), редактор модулей с подсветкой синтаксиса и контекстной подсказкой, конструкторы (запросов, форм, движений документа) и синтакс-помощник — встроенный справочник по языку, который вызывается по Ctrl+F1.

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

Как устроен встроенный язык и где писать код

Язык 1С нечувствителен к регистру, операторы заканчиваются точкой с запятой, комментарии начинаются с двойного слэша. Простейшая процедура в общем модуле выглядит так:

Процедура РассчитатьСкидку(СуммаДокумента) Экспорт

Если СуммаДокумента > 100000 Тогда

Скидка = СуммаДокумента * 0.1;

Иначе

Скидка = 0;

КонецЕсли;

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

Ключевое понятие — контекст исполнения. Код в модуле формы выполняется на клиенте (или в тонком клиенте), код в модуле объекта — на сервере при записи объекта, общие модули с флагом «Сервер» выполняются только на сервере. Директивы компиляции &НаКлиенте, &НаСервере, &НаСервереБезКонтекста явно указывают, где работает процедура формы. Ошибка «переменная не определена» часто означает, что код попытался выполниться не в том контексте.

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

Объекты метаданных: что создавать и зачем

Разработка в 1С начинается не с кода, а с проектирования структуры данных. Справочники хранят нормативно-справочную информацию (номенклатура, контрагенты), документы фиксируют события (поступление, продажа, оплата), регистры накопления и сведений — итоги и аналитику по этим событиям. Документ при проведении формирует движения — записи в регистрах, на основании которых строятся отчёты.

Для первого учебного проекта достаточно трёх объектов: справочник «Товары», документ «ПродажаТовара» с табличной частью и регистр накопления «ОстаткиТоваров» с видом «Остатки». В модуле объекта документа в обработчике ОбработкаПроведения вы пишете код, который формирует движения по регистру. Конструктор движений (кнопка в модуле документа) сгенерирует заготовку этого кода автоматически.

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

Язык запросов: как выбирать данные без циклов

Запросы в 1С похожи на SQL с русскими ключевыми словами: ВЫБРАТЬ ... ИЗ ... ГДЕ ... СГРУППИРОВАТЬ ПО. Запрос всегда предпочтительнее обхода данных в цикле: один запрос к виртуальной таблице остатков выполнится за миллисекунды, тогда как перебор тысяч документов с пересчётом «в уме» займёт секунды и заблокирует работу пользователей.

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

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

"ВЫБРАТЬ

| Остатки.Товар КАК Товар,

| Остатки.КоличествоОстаток КАК Остаток

|ИЗ

| РегистрНакопления.ОстаткиТоваров.Остатки(&Период, ) КАК Остатки

|ГДЕ

| Остатки.КоличествоОстаток < 0";

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

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

Параметры запроса передаются только через УстановитьПараметр — никогда не собирайте текст запроса конкатенацией строк с пользовательскими данными. Это и защита от ошибок, и защита от подмены условий. Конструктор запроса (правый клик в модуле → «Конструктор запроса») позволяет собрать текст мышкой и сразу увидеть, какие поля доступны у таблицы.

Формы, отладка и проверка результата

Формы в управляемом интерфейсе описываются декларативно: вы добавляете реквизиты формы и элементы (поля, таблицы, кнопки), а платформа сама рисует интерфейс под разные клиенты. Команды формы привязываются к процедурам с директивой &НаКлиенте; если команде нужны данные с сервера, она вызывает серверную процедуру того же модуля формы.

Отладчик включается через «Отладка → Подключение» и работает с точками останова (F9), пошаговым выполнением (F10/F11) и табло (Shift+F9) для просмотра значений выражений. Для серверного кода в файловой базе отладка работает автоматически; в клиент-серверном варианте нужно включить отладку на сервере (ключ -debug в параметрах службы агента).

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

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

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

Документ проводится без ошибок
Норма

Сообщение об успешном проведении, движения появились в регистре

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

Ошибка в модуле проведения или движения пустые

Остатки по регистру
Норма

Виртуальная таблица Остатки показывает ожидаемые количества

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

Отрицательные остатки там, где они запрещены, или нулевые итоги

Повторное проведение
Норма

Движения перезаписываются без дублирования

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

Остатки удваиваются — движения не очищались перед записью

Расширения и доработка типовых конфигураций

Если задача — изменить типовую конфигурацию (1С:Бухгалтерия, Управление торговлей), правильный путь — расширение конфигурации, а не прямое редактирование. Расширение накладывается поверх типовой конфигурации, не нарушая её поддержку: обновления на новые релизы продолжают ставиться штатно, а ваши доработки сохраняются отдельным слоем.

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

Сравнение вариантов доработки

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

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

Прямая доработка конфигурации

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

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

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

Типичные ошибки начинающих разработчиков

Первая группа ошибок — архитектурные: хранение итогов в реквизитах вместо регистров, отказ от запросов в пользу циклов, размещение бизнес-логики в модуле формы вместо модуля объекта или общего модуля. Такие решения «работают» на тестовых данных и ломаются под нагрузкой или при вызове из другого места программы.

Вторая группа — технические: обращение к данным через точку от результата запроса без проверки на NULL, использование ТекущаяДата() вместо ТекущаяДатаСеанса() в серверном коде, запись объектов в цикле без транзакции, игнорирование исключений через пустой блок Попытка...Исключение. Каждая из этих ошибок имеет конкретное проявление: неявные блокировки, неверные даты в регистрах, частично записанные данные.

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

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

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

Частые вопросы

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

Нет. Встроенный язык 1С можно освоить первым — его синтаксис прост, а платформа берёт на себя работу с базой данных и интерфейсом. Знание основ SQL и общих концепций (переменные, циклы, функции) ускорит обучение, но не является обязательным.

Сколько времени занимает вход в профессию?

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

Чем учебная платформа отличается от коммерческой?

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

Где искать документацию по встроенному языку?

Основной источник — синтакс-помощник в конфигураторе (Ctrl+F1): он содержит описание всех объектов, методов и событий с примерами. Дополнительно полезны руководство разработчика, входящее в поставку платформы, и документация на портале 1С.

Можно ли программировать в 1С без конфигуратора?

Частично: внешние обработки и отчёты разрабатываются в конфигураторе, но подключаются в режиме «Предприятие» без изменения конфигурации. Для автоматизации сборки и тестирования существуют инструменты командной строки платформы и сторонние решения вроде EDT — среды разработки на базе Eclipse.

Что такое EDT и стоит ли его использовать новичку?

1C:Enterprise Development Tools — альтернативная среда разработки с поддержкой Git, статическим анализом кода и работой над проектом в команде. Новичку проще начать с классического конфигуратора, а к EDT переходить, когда появятся задачи командной разработки и контроля версий.