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

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

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

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

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

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

Прежде чем писать первую строку, важно понять базовую модель: код в 1С почти всегда привязан к событию — записи документа, нажатию кнопки, проведению, открытию формы. Поэтому эффективное обучение строится не на абстрактном синтаксисе, а на связке «событие → обработчик → действие с данными».

Что нужно подготовить перед написанием кода

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

Запустите конфигуратор, откройте конфигурацию через меню «Конфигурация → Открыть конфигурацию». Дерево объектов появится в левой части окна. Если конфигурация находится на поддержке, для изменения типовых объектов потребуется включить возможность изменения — делайте это осознанно, так как это усложнит последующие обновления.

Определите, где должен жить ваш код. Если логика относится к конкретному документу — это модуль объекта или модуль формы документа. Если код нужен в нескольких местах — создайте общий модуль. Код, который должен выполняться на сервере, помещайте в общие модули с признаками «Сервер» и, при необходимости, «Вызов сервера».

Где именно пишется код: виды модулей

Модуль — это контейнер для кода. У каждого объекта конфигурации может быть несколько модулей, и выбор правильного определяет, когда и где код выполнится.

Вид модуляГде находитсяКогда использовать
Модуль объектаДокумент, справочник и др.Логика записи, проведения, проверки заполнения
Модуль формыФорма объекта или спискаРеакция на действия пользователя, работа с элементами формы
Общий модульВетка «Общие → Общие модули»Переиспользуемые процедуры и функции
Модуль менеджераОбъект конфигурацииСерверная логика, не привязанная к конкретному экземпляру
Модуль приложенияКорень конфигурацииОбработчики запуска и завершения системы

Чтобы открыть модуль, щёлкните правой кнопкой по объекту в дереве конфигурации и выберите нужный пункт, например «Открыть модуль объекта». Для формы сначала откройте её двойным щелчком, затем перейдите на вкладку «Модуль» внизу редактора.

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

Минимальная единица кода — процедура или функция. Процедура выполняет действия, функция дополнительно возвращает значение через оператор «Возврат». Имена пишутся по-русски, без пробелов, в едином стиле.

Процедура ПриЗаписи(Отказ)

Если Не ЗначениеЗаполнено(Комментарий) Тогда

Комментарий = "Заполнено автоматически";

КонецЕсли;

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

Функция ПолучитьОстаток(Номенклатура) Экспорт

// здесь логика получения остатка

Возврат Остаток;

КонецФункции

Ключевые конструкции языка: условие «Если … Тогда … Иначе … КонецЕсли», циклы «Для Каждого … Из … Цикл … КонецЦикла» и «Пока … Цикл», попытка обработки ошибок «Попытка … Исключение … КонецПопытки». Точка с запятой завершает каждый оператор — её пропуск вызывает синтаксическую ошибку.

Комментарии начинаются с двойного слэша «//». Переменные объявлять заранее не обязательно, но для читаемости сложных процедур используйте «Перем» в начале модуля или процедуры.

Порядок создания первой процедуры
  1. 1
    Откройте конфигуратор и дерево конфигурации
  2. 2
    Найдите нужный объект, откройте его модуль
  3. 3
    Напишите процедуру с обработчиком события или свою функцию
  4. 4
    Выполните синтаксическую проверку модуля (кнопка с галочкой)
  5. 5
    Обновите конфигурацию базы данных через F7
  6. 6
    Запустите отладку F5 и проверьте поведение в режиме предприятия

Работа с данными: запросы и объекты

Есть два способа получить данные: объектный (через методы вроде «Справочники.Номенклатура.НайтиПоКоду()») и запросный. Для выборки больших наборов данных всегда используйте запросы — они выполняются на стороне СУБД и работают на порядки быстрее перебора в цикле.

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

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

"ВЫБРАТЬ

| Товары.Ссылка КАК Товар,

| Товары.Цена КАК Цена

|ИЗ

| Справочник.Номенклатура КАК Товары

|ГДЕ

| Товары.Родитель = &Группа";

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

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл

Сообщить(Выборка.Товар);

КонецЦикла;

Текст запроса удобно собирать конструктором запроса: правый клик в модуле → «Конструктор запроса». Он избавляет от ошибок в именах таблиц и полей. Параметры передавайте только через «УстановитьПараметр» — подстановка строк напрямую в текст запроса опасна и считается грубой ошибкой.

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

Отладка запускается клавишей F5 из конфигуратора. Точки останова ставятся кликом по полю слева от строки кода или клавишей F9. Когда выполнение остановится, можно смотреть значения переменных в окне «Вычислить выражение» (Shift+F9) и пошагово идти по коду клавишами F10/F11.

Перед запуском убедитесь, что конфигурация базы данных обновлена: «Конфигурация → Обновить конфигурацию базы данных» или F7. Классическая ситуация новичка — код написан, но в режиме предприятия работает старая версия, потому что обновление не выполнено.

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

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

Синтаксическая проверка модуля
Норма

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

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

Красные сообщения о неопределённых переменных или пропущенных операторах

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

Документ записывается, данные меняются как ожидалось

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

Молчаливая запись без изменений или окно с текстом ошибки

Обновление конфигурации БД
Норма

Выполнено без диалогов реструктуризации либо реструктуризация прошла успешно

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

Предупреждения об удалении данных или ошибки реструктуризации

Типичные ошибки начинающих

Большинство проблем у новичков повторяются. Знание их заранее экономит часы отладки.

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

Отдельно выделю работу с транзакциями. Если процедура изменяет несколько объектов, оборачивайте изменения в «НачатьТранзакцию() … ЗафиксироватьТранзакцию()» с отменой в ветке исключения. Иначе при сбое в середине часть данных сохранится, а часть нет — рассинхронизацию потом сложно искать.

Как выбрать подход к доработке

Не всякая задача требует правки конфигурации. Часто тот же результат достигается внешней обработкой, расширением или настройкой без кода.

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

Как выбрать способ реализации

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

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

Итог

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

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

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

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

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

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

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

Чем расширение отличается от внешней обработки?

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

Почему мой код не выполняется, хотя ошибок нет?

Чаще всего конфигурация базы данных не обновлена после изменений — нажмите F7. Другие причины: код написан не в том модуле (клиентский вместо серверного), обработчик события не привязан к событию формы, либо процедура без ключевого слова «Экспорт» вызывается из другого модуля.

Как научиться писать запросы в 1С?

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

Безопасно ли дорабатывать типовую конфигурацию самостоятельно?

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