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

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

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

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

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

Главная особенность разработки в 1С — код не существует сам по себе, а привязан к объектам конфигурации и контексту исполнения: клиент или сервер, форма или модуль объекта. Поэтому прежде чем писать первую строку, нужно понять, где именно этот код будет выполняться. От этого зависят доступные методы, права и поведение программы.

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

Подготовка: запуск конфигуратора и безопасная среда

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

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

Где размещать код: виды модулей

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

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

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

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

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

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

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

"ВЫБРАТЬ

| Цены.Цена

|ИЗ

| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, Номенклатура = &Номенклатура) КАК Цены";

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

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

Если Результат.Следующий() Тогда

Возврат Результат.Цена;

Иначе

Возврат 0;

КонецЕсли;

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

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

bsl
&НаСервере
Процедура ЗаполнитьОстатки()
    // серверный код с запросом к регистру
КонецПроцедуры

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

Есть два способа обращения к данным. Объектный — через методы вроде Справочники.Номенклатура.НайтиПоКоду() и Документы.РеализацияТоваров.СоздатьДокумент(). Он удобен для создания и изменения отдельных объектов, потому что платформа сама вызывает обработчики событий и контролирует целостность. Запросный — через язык запросов 1С, похожий на SQL. Он предназначен для выборки больших объёмов данных и чтения: запросами нельзя изменять данные.

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

Объектный метод или запрос

Объектный метод (СоздатьДокумент, Записать)

Подходит для создания и изменения объектов одиночно. Срабатывают обработчики проведения и проверки. Медленнее при массовой обработке.

Запрос (ВЫБРАТЬ ... ИЗ)

Подходит для чтения и анализа больших выборок, отчётов, поиска. Не умеет изменять данные — только читать.

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

Перед запуском проверьте синтаксис: «Конфигурация → Проверка конфигурации» с флажком «Проверка логической целостности». Быструю проверку одного модуля делает Ctrl+F7 или кнопка с галочкой на панели инструментов редактора модуля. Ошибки компиляции платформа покажет в окне сообщений с указанием строки.

Для пошаговой отладки включите её в конфигураторе: «Отладка → Начать отладку» (F5). Поставьте точку останова кликом по полю слева от строки или клавишей F9. Во время остановки смотрите значения переменных через «Вычислить выражение» (Shift+F9) и табло (Alt+F9). Шаг через процедуру — F10, шаг внутрь — F11.

Порядок действий при отладке
  1. 1
    Включите возможность отладки: Сервис → Параметры → вкладка «Запуск 1С:Предприятия»
  2. 2
    Поставьте точку останова на нужной строке модуля (F9)
  3. 3
    Запустите отладку клавишей F5 и воспроизведите действие в клиенте
  4. 4
    Проверьте значения переменных через «Вычислить выражение» (Shift+F9)
  5. 5
    Пройдите код по шагам (F10/F11) и найдите строку с неверным результатом

Синтакс-помощник и полезные инструменты редактора

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

В редакторе модуля работают шаблоны текста (наберите «Если» и нажмите Ctrl+Q — подставится конструкция условия), контекстная подсказка по точке после имени объекта и форматирование выделенного блока. Комментируйте неочевидную логику двойным слэшем — через месяц это сэкономит вам часы разбора собственного кода.

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

Ограничения и когда привлекать опытного разработчика

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

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

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

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

Проверка конфигурации
Норма

Нет ошибок компиляции и логической целостности

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

Ошибки в окне сообщений, ссылки на несуществующие объекты

Запуск в отладке
Норма

Код проходит все ветки, переменные содержат ожидаемые значения

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

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

Тест на копии базы
Норма

Отчёты и движения документов совпадают с ожиданиями

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

Расхождения в итогах, дубли движений, ошибки при проведении

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

Можно ли писать код в 1С без опыта программирования?

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

Чем расширение конфигурации лучше изменения типового кода?

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

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

Создайте в форме процедуру с директивой &НаСервере или &НаСервереБезКонтекста и вызовите её из клиентской процедуры по имени. Альтернатива — экспортная функция в общем модуле с флажками «Сервер» и «Вызов сервера».

Почему запрос выполняется в конфигураторе, но падает в пользовательском режиме?

Чаще всего причина в правах: под администратором запрос видит все данные, а у пользователя включено ограничение доступа на уровне записей (RLS), и выборка оказывается пустой или недоступной. Проверяйте код под учётной записью с реальными правами.

Где искать описание методов платформы?

В синтакс-помощнике конфигуратора: Ctrl+Shift+F1 открывает его полностью, Ctrl+F1 — статью по методу под курсором. Там же есть разделы по объектам конфигурации, языку запросов и системным перечислениям.

Что делать, если после обновления конфигурации базы данных появилась ошибка?

Не запускайте пользователей. Если есть выгрузка .dt до обновления — восстановите базу из неё. Затем воспроизведите проблему на копии, найдите источник в коде или в процедурах обновления и только после исправления повторите обновление.

Итог

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

Код в 1С пишется в модулях с учётом контекста клиент/сервер, данные читают запросами, а изменяют объектными методами. Работайте на копии базы, дорабатывайте через расширения, проверяйте синтаксис и отлаживайте через точки останова перед любым переносом в рабочую среду.