Разработка и Конфигурация · 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, использование ТекущаяДата() вместо ТекущаяДатаСеанса() в серверном коде, запись объектов в цикле без транзакции, игнорирование исключений через пустой блок Попытка...Исключение. Каждая из этих ошибок имеет конкретное проявление: неявные блокировки, неверные даты в регистрах, частично записанные данные.
Что важно запомнить
Разработка в 1С строится вокруг метаданных и модулей: проектируйте объекты, пишите логику в правильном контексте, выбирайте данные запросами, дорабатывайте типовые решения через расширения и всегда тестируйте на копии базы.
Частые вопросы
Нужно ли знать другой язык программирования перед изучением 1С?
Нет. Встроенный язык 1С можно освоить первым — его синтаксис прост, а платформа берёт на себя работу с базой данных и интерфейсом. Знание основ SQL и общих концепций (переменные, циклы, функции) ускорит обучение, но не является обязательным.
Сколько времени занимает вход в профессию?
Базовые навыки — создание объектов, простые модули, запросы — осваиваются за несколько недель регулярной практики на учебной конфигурации. Уверенная работа с типовыми конфигурациями, расширениями и отладкой чужого кода обычно требует нескольких месяцев практики на реальных задачах.
Чем учебная платформа отличается от коммерческой?
Учебная версия бесплатна и подходит для обучения, но не работает с COM-соединениями, ограничивает объём данных и не поддерживает часть механизмов интеграции. Для коммерческой разработки и внедрений нужна лицензионная платформа.
Где искать документацию по встроенному языку?
Основной источник — синтакс-помощник в конфигураторе (Ctrl+F1): он содержит описание всех объектов, методов и событий с примерами. Дополнительно полезны руководство разработчика, входящее в поставку платформы, и документация на портале 1С.
Можно ли программировать в 1С без конфигуратора?
Частично: внешние обработки и отчёты разрабатываются в конфигураторе, но подключаются в режиме «Предприятие» без изменения конфигурации. Для автоматизации сборки и тестирования существуют инструменты командной строки платформы и сторонние решения вроде EDT — среды разработки на базе Eclipse.
Что такое EDT и стоит ли его использовать новичку?
1C:Enterprise Development Tools — альтернативная среда разработки с поддержкой Git, статическим анализом кода и работой над проектом в команде. Новичку проще начать с классического конфигуратора, а к EDT переходить, когда появятся задачи командной разработки и контроля версий.