Разработка и Конфигурация · 12 мин
Как кодить на 1С: с нуля до первой рабочей доработки
Как научиться кодить на 1С: устройство платформы, встроенный язык, первые процедуры, отладка, типичные ошибки и маршрут обучения для начинающих разработчиков.
Код на 1С пишется на встроенном языке платформы — он похож на классические процедурные языки, но заточен под работу с прикладными объектами: документами, справочниками, регистрами, отчётами. Вся разработка ведётся в конфигураторе — среде, где одновременно редактируются структура метаданных, формы и программные модули. Чтобы начать, достаточно установить учебную версию платформы, создать пустую конфигурацию и написать первую процедуру в общем модуле или модуле формы.
Главное отличие 1С от универсальных языков в том, что программист почти не работает с базой данных напрямую: платформа сама хранит объекты, сама строит таблицы и сама управляет транзакциями. Разработчик описывает бизнес-логику — что происходит при проведении документа, как заполняется отчёт, какие проверки выполняются при записи элемента справочника. Это снижает порог входа, но требует понимания модели данных конкретной конфигурации.
Практический путь выглядит так: сначала осваивается синтаксис языка и работа в конфигураторе, затем — объектная модель (справочники, документы, регистры), далее — запросы, отчёты на СКД и управляемые формы. Ниже разобран каждый этап с конкретными действиями и типичными ошибками новичков.
Что нужно установить и как устроена среда разработки
Для старта нужны два компонента: платформа 1С:Предприятие и конфигурация (прикладное решение). Учебную версию платформы можно получить бесплатно — её ограничения не мешают изучать язык: нельзя работать с COM-соединениями и некоторыми механизмами, но конфигуратор, отладчик и весь синтаксис доступны полностью.
Конфигуратор — основной инструмент. В нём дерево метаданных показывает все объекты: справочники, документы, регистры сведений и накопления, отчёты, обработки, общие модули. Двойной клик по объекту открывает его свойства, а правый клик позволяет перейти к модулям объекта, менеджера, форм и команд. Код пишется именно в модулях, а не в отдельных файлах.
Для проверки результата конфигурацию запускают в режиме «1С:Предприятие» клавишей F5 или через меню «Сервис». В пользовательском режиме видно, как код влияет на поведение системы: создаются документы, заполняются табличные части, формируются отчёты.
Основы встроенного языка: синтаксис и первая процедура
Встроенный язык 1С допускает ключевые слова и на русском, и на английском, но в типовых конфигурациях и большинстве вакансий используется русский синтаксис. Язык нечувствителен к регистру, операторы завершаются точкой с запятой, блоки оформляются конструкциями «Если...Тогда...КонецЕсли», «Для...Цикл...КонецЦикла».
Простейшая программа — процедура в общем модуле. Создайте общий модуль, например «МоиПроцедуры», и напишите в нём процедуру, которая выводит сообщение пользователю. Вызвать её можно из обработки или команды. Такой минимальный эксперимент показывает весь цикл: написал код — обновил конфигурацию (F7) — запустил — увидел результат.
Процедура РассчитатьСкидку(СуммаДокумента) Экспорт
Если СуммаДокумента > 100000 Тогда
Скидка = СуммаДокумента * 0.1;
Иначе
Скидка = 0;
КонецЕсли;
Сообщить("Скидка составляет: " + Скидка);
КонецПроцедуры
Типы данных примитивные: строка, число, дата, булево, неопределено. Коллекции представлены массивами, структурами, соответствиями и списками значений. Структура удобна для передачи набора параметров, соответствие — для быстрого поиска по ключу. Ключевое слово «Экспорт» делает процедуру доступной из других модулей.
Работа с объектами: справочники, документы, регистры
Прикладная разработка на 1С — это в первую очередь операции над объектами метаданных. Справочники хранят нормативную информацию (номенклатура, контрагенты), документы фиксируют события (поступление, реализация, оплата), регистры накапливают движения и остатки. Понимание этой тройки покрывает большую часть повседневных задач.
Типовые операции выполняются через менеджеры объектов. Найти элемент справочника можно методом НайтиПоКоду или НайтиПоНаименованию, создать — через СоздатьЭлемент() с последующим заполнением реквизитов и вызовом Записать(). Документы дополнительно проводятся: метод Записать(РежимЗаписиДокумента.Проведение) запускает обработчик проведения, где формируются движения по регистрам.
Движения по регистрам пишутся в модуле объекта документа, в процедуре «ОбработкаПроведения». Там разработчик заполняет коллекцию «Движения» нужного регистра: добавляет записи, указывает вид движения (приход или расход), измерения, ресурсы и период. Ошибка в этом обработчике — самая частая причина расхождения остатков, поэтому после изменения проведения документ следует перепровести и сверить отчёты.
- 1Получите объект: Документы.РеализацияТоваров.СоздатьДокумент()
- 2Заполните шапку: дату, контрагента, организацию
- 3Добавьте строки табличной части через Добавить() и заполните номенклатуру, количество, цену
- 4Вызовите Записать() с режимом Проведение
- 5Проверьте результат: откройте документ в режиме предприятия и отчёт по регистру движений
Запросы: как выбирать данные без циклов
Язык запросов 1С похож на SQL, но работает с именами метаданных, а не с физическими таблицами. Любую выборку — остатки по складу, продажи за период, список контрагентов с отбором — следует получать запросом, а не перебором объектов в цикле. Перебор через Выбрать() и обращение к реквизитам внутри цикла порождает множество мелких обращений к базе и работает на порядки медленнее.
Запрос создаётся объектом «Запрос», текст задаётся строкой, параметры передаются через УстановитьПараметр. Результат получают методом Выполнить(), затем выгружают в таблицу значений или обходят выборкой. Виртуальные таблицы регистров (Остатки, Обороты, СрезПоследних) принимают параметры периода и условий — их нужно указывать в параметрах виртуальной таблицы, а не в секции ГДЕ, иначе СУБД сначала выберет всё, а потом отфильтрует.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Остатки.Номенклатура КАК Номенклатура,
| Остатки.КоличествоОстаток КАК Остаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, Склад = &Склад) КАК Остатки";
Запрос.УстановитьПараметр("Период", ТекущаяДатаСеанса());
Запрос.УстановитьПараметр("Склад", Склад);
Результат = Запрос.Выполнить().Выгрузить();
Конструктор запроса в конфигураторе позволяет собирать текст мышью — это удобный способ изучить синтаксис: выберите таблицы, поля и условия, а затем посмотрите сгенерированный текст. Для временных таблиц и пакетных запросов используется менеджер временных таблиц — он часто нужен в сложных отчётах.
Формы, отчёты и отладка кода
Управляемые формы — отдельная тема: код формы делится на клиентские и серверные процедуры, помеченные директивами &НаКлиенте и &НаСервере. Обращение к базе возможно только на сервере, а интерактивные действия (предупреждения, диалоги) — только на клиенте. Начинающим стоит запомнить правило: вся работа с данными — на сервере, клиент только показывает результат.
Отчёты в типовых конфигурациях строятся на системе компоновки данных (СКД): разработчик пишет запрос и настраивает схему, а платформа сама формирует интерфейс, отборы и группировки. Это избавляет от ручного вывода в табличный документ, который остаётся уместен только для нестандартных печатных форм.
Отладчик конфигуратора работает как в классических IDE: точки останова (F9), пошаговое выполнение, просмотр значений переменных, табло выражений, стек вызовов. Чтобы отладить серверный код, в параметрах запуска должен быть включён режим отладки. Вместо отладчика новички часто вставляют Сообщить() — это допустимо для быстрой проверки, но в рабочей базе такие сообщения забывают убрать, и пользователи видят служебный мусор.
Как проверить, что доработка работает правильно
Конфигурация — Проверка конфигурации проходит без ошибок
Синтаксические ошибки или «переменная не определена»
Движения в регистрах соответствуют строкам документа
Остатки не меняются или уходят в минус без контроля
Выборка одним запросом, без циклов по объектам
Заметные паузы при открытии форм и отчётов
Доработка типовых конфигураций: расширения против изменения
Большинство реальных задач — это не написание конфигурации с нуля, а доработка типовых решений вроде «Управление торговлей» или «Бухгалтерии предприятия». Здесь действует строгое правило: типовую конфигурацию меняют только при крайней необходимости. Основной инструмент — расширения конфигурации, которые накладываются поверх типовой и не нарушают поддержку.
В расширении можно добавлять собственные объекты, заимствовать формы и подменять обработчики событий через аннотации &Перед, &После и &Вместо. Механизм покрывает большинство сценариев: дополнительная проверка при записи, новая печатная форма, колонка в отчёте. Ограничение — нельзя менять структуру данных типовых объектов, но реквизиты можно добавлять через механизм дополнительных реквизитов и сведений.
Как выбрать способ доработки
Как выстроить обучение и закрепить навык
Эффективный маршрут обучения идёт от простого к прикладному: синтаксис и коллекции, затем справочники и документы в собственной учебной конфигурации, затем запросы и СКД, затем управляемые формы, и только потом доработка типовых решений через расширения. Пропуск этапа запросов — типичная ошибка: без них невозможно писать ни отчёты, ни производительный код.
Практику лучше строить на сквозной задаче: придумайте мини-учёт (склад и продажи), создайте справочник номенклатуры, документы поступления и реализации, регистр остатков, отчёт по остаткам на СКД и обработку для пакетного изменения цен. Такой проект задействует все ключевые механизмы и даёт портфолио для первых заказов или собеседования.
При чтении чужого кода в типовых конфигурациях пользуйтесь глобальным поиском по конфигурации (Ctrl+Shift+F) и синтакс-помощником (Ctrl+F1 на любом методе). Эти два инструмента отвечают на большинство вопросов «как называется этот метод и где он используется».
Что важно запомнить
Код на 1С пишется в модулях конфигуратора на встроенном языке. Основа работы — объекты метаданных и запросы, а не циклы по базе. Типовые конфигурации дорабатывают через расширения, эксперименты ведут на копии базы, а результат всегда проверяют отладчиком и сверкой движений по регистрам.
Частые вопросы
Нужно ли знать другой язык программирования перед изучением 1С?
Нет, встроенный язык 1С вполне подходит как первый: у него простой синтаксис и быстрая обратная связь через запуск конфигурации. Знание основ SQL и общих концепций (переменные, циклы, функции) ускорит обучение, но не является обязательным условием.
Чем отличается программист 1С от консультанта 1С?
Программист пишет и изменяет код, создаёт объекты и отчёты. Консультант настраивает типовую функциональность без доработок и помогает пользователям вести учёт. На практике граница размыта: хороший разработчик обязан понимать прикладную логику конфигурации, с которой работает.
Можно ли писать код на 1С на английском синтаксисе?
Да, язык поддерживает оба варианта ключевых слов, и платформа их корректно смешивает. Однако типовые конфигурации, документация и большинство команд используют русский синтаксис, поэтому для совместной работы стоит привыкать именно к нему.
Почему мой код работает медленно на большой базе?
Чаще всего причина в обходе данных циклом вместо запроса, обращении к реквизитам через точку внутри цикла или в неправильном использовании виртуальных таблиц без параметров. Замерьте проблемный участок и перепишите выборку одним запросом — обычно это даёт основной эффект.
Что делать, если расширение не позволяет реализовать нужную доработку?
Сначала проверьте подписки на события и механизм дополнительных реквизитов — они закрывают часть ограничений. Если и этого недостаточно, изменение вносится в основную конфигурацию с обязательным комментированием правок и ведением списка изменений, чтобы их можно было перенести при обновлении.
Как проверить себя без реального проекта?
Сделайте учебную конфигурацию «склад и продажи» с нуля: справочники, два документа, регистр накопления, отчёт на СКД и обработку. Затем усложните её контролем остатков и печатной формой. Такой набор задач покрывает базовые компетенции junior-разработчика 1С.