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

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

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

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

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

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

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

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

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

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

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

Основы встроенного языка: синтаксис и первая процедура

Встроенный язык 1С допускает ключевые слова и на русском, и на английском, но в типовых конфигурациях и большинстве вакансий используется русский синтаксис. Язык нечувствителен к регистру, операторы завершаются точкой с запятой, блоки оформляются конструкциями «Если...Тогда...КонецЕсли», «Для...Цикл...КонецЦикла».

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

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

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

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

Иначе

Скидка = 0;

КонецЕсли;

Сообщить("Скидка составляет: " + Скидка);

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

Типы данных примитивные: строка, число, дата, булево, неопределено. Коллекции представлены массивами, структурами, соответствиями и списками значений. Структура удобна для передачи набора параметров, соответствие — для быстрого поиска по ключу. Ключевое слово «Экспорт» делает процедуру доступной из других модулей.

Работа с объектами: справочники, документы, регистры

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

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

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

Как создать и провести документ программно
  1. 1
    Получите объект: Документы.РеализацияТоваров.СоздатьДокумент()
  2. 2
    Заполните шапку: дату, контрагента, организацию
  3. 3
    Добавьте строки табличной части через Добавить() и заполните номенклатуру, количество, цену
  4. 4
    Вызовите Записать() с режимом Проведение
  5. 5
    Проверьте результат: откройте документ в режиме предприятия и отчёт по регистру движений

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

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

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

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

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

"ВЫБРАТЬ

| Остатки.Номенклатура КАК Номенклатура,

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

|ИЗ

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

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

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

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

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

Типичные ошибки новичков
01
Перебор справочника циклом вместо запроса — на больших базах код работает в десятки раз медленнее
02
Обращение к реквизитам через точку внутри цикла по результату запроса — порождает неявные запросы к базе
03
Забытый Экспорт у процедуры общего модуля — вызов извне падает с ошибкой «Процедура не обнаружена»
04
Изменение типовой конфигурации вместо расширения — потеря возможности автоматического обновления
05
Запись объекта без проверки ОбменДанными.Загрузка при обменах — лишние срабатывания подписок и проверок

Формы, отчёты и отладка кода

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

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

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

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

Как проверить, что доработка работает правильно

Компиляция модуля
Норма

Конфигурация — Проверка конфигурации проходит без ошибок

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

Синтаксические ошибки или «переменная не определена»

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

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

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

Остатки не меняются или уходят в минус без контроля

Производительность
Норма

Выборка одним запросом, без циклов по объектам

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

Заметные паузы при открытии форм и отчётов

Доработка типовых конфигураций: расширения против изменения

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

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

Маршрут решения

Как выбрать способ доработки

Нужна новая проверка, печатная форма или кнопка в типовой конфигурацииСоздайте расширение и подмените обработчик через &После или &Вместо
Нужно хранить дополнительное поле у справочника или документаИспользуйте дополнительные реквизиты и сведения, не меняя метаданные
Требуется изменить состав регистра или логику проведения типового документаОцените подписку на событие; прямое изменение конфигурации — только как последний вариант с фиксацией всех правок
Нужно учиться и экспериментировать с языкомСоздайте пустую конфигурацию в файловой базе и пишите свои объекты с нуля

Как выстроить обучение и закрепить навык

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

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

При чтении чужого кода в типовых конфигурациях пользуйтесь глобальным поиском по конфигурации (Ctrl+Shift+F) и синтакс-помощником (Ctrl+F1 на любом методе). Эти два инструмента отвечают на большинство вопросов «как называется этот метод и где он используется».

Итог

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

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

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

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

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

Чем отличается программист 1С от консультанта 1С?

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

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

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

Почему мой код работает медленно на большой базе?

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

Что делать, если расширение не позволяет реализовать нужную доработку?

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

Как проверить себя без реального проекта?

Сделайте учебную конфигурацию «склад и продажи» с нуля: справочники, два документа, регистр накопления, отчёт на СКД и обработку. Затем усложните её контролем остатков и печатной формой. Такой набор задач покрывает базовые компетенции junior-разработчика 1С.