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

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

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

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

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

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

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

Где пишется код в 1С: конфигуратор и виды модулей

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

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

  • Модуль формы — обработчики кнопок, полей, событий открытия и закрытия формы;
  • Модуль объекта — логика документа или справочника: проведение, заполнение, проверки;
  • Общий модуль — переиспользуемые процедуры и функции, доступные из любого места;
  • Модуль приложения — глобальные события запуска системы;
  • Модуль команды — код, выполняемый по команде интерфейса.

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

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

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

Простейшая процедура выглядит так:

Процедура Приветствие() Экспорт

Сообщить("Код выполнен успешно");

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

Ключевое слово «Экспорт» делает процедуру доступной из других модулей. Функция отличается тем, что возвращает значение через оператор «Возврат»:

Функция СуммаСНДС(Сумма, СтавкаНДС) Экспорт

Возврат Сумма + Сумма * СтавкаНДС / 100;

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

Работа с объектами базы строится через коллекции метаданных. Например, создание элемента справочника:

НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();

НовыйЭлемент.Наименование = "Тестовая позиция";

НовыйЭлемент.Записать();

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

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

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

&НаКлиенте

Процедура ПересчитатьИтог(Команда)

Итог = 0;

Для Каждого Строка Из Объект.Товары Цикл

Итог = Итог + Строка.Сумма;

КонецЦикла;

Объект.ИтоговаяСумма = Итог;

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

Директивы «&НаКлиенте» и «&НаСервере» определяют, где выполняется код. Клиентский код не имеет доступа к запросам и прямой записи в базу — для этого вызываются серверные процедуры. Нарушение этого правила — частая причина ошибок «Процедура или функция не определена».

Типичные ошибки
01
Вызов серверной процедуры без директивы &НаСервере или наоборот — код падает с ошибкой контекста
02
Обращение к реквизиту объекта по неверному имени — проверяйте точное имя в дереве метаданных
03
Запись объекта в цикле без транзакции — при сбое часть данных останется записанной
04
Изменение типовой конфигурации напрямую вместо расширения — при обновлении доработки теряются

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

Для выборки данных используется язык запросов, похожий на SQL. Запрос создаётся программно, текст удобно собирать конструктором запроса (правый клик в модуле → «Конструктор запроса»).

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

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

"ВЫБРАТЬ

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

| Номенклатура.Наименование

|ИЗ

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

|ГДЕ

| НЕ Номенклатура.ПометкаУдаления";

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

Пока Результат.Следующий() Цикл

Сообщить(Результат.Наименование);

КонецЦикла;

Параметры в запрос передаются через «Запрос.УстановитьПараметр("Имя", Значение)» — так безопаснее, чем подстановка строк, и исключается риск ошибок с типами данных.

Отладка: как найти ошибку в коде

Отладка включается в конфигураторе: «Отладка → Начать отладку» или клавиша F5. Запустится сеанс предприятия, и выполнение остановится на точках останова, которые ставятся кликом по левому полю редактора кода или клавишей F9.

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

  • просмотр значений переменных наведением курсора или через «Вычислить выражение» (Shift+F9);
  • пошаговое выполнение: F11 — войти в процедуру, F10 — перешагнуть;
  • табло (окно «Табло») для постоянного наблюдения за выбранными выражениями;
  • стек вызовов — чтобы понять, откуда пришло выполнение.
Порядок действий при отладке
  1. 1
    Воспроизведите ошибку и запомните точный текст сообщения
  2. 2
    Поставьте точку останова перед предполагаемым проблемным местом
  3. 3
    Запустите отладку (F5) и повторите действие пользователя
  4. 4
    Пошагово пройдите код, проверяя значения переменных через Shift+F9
  5. 5
    Исправьте причину, снимите точки останова и повторно протестируйте

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

Расширения и внешние обработки: безопасная доработка типовых решений

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

Сравнение вариантов доработки

Расширение конфигурации

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

Внешняя обработка (.epf)

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

Прямое изменение конфигурации

Даёт полную свободу, но усложняет обновления и повышает риск ошибок при объединении. Оправдано только в собственных (нетиповых) разработках

Расширение создаётся через «Конфигурация → Расширения конфигурации → Создать». Заимствованные процедуры помечаются аннотациями «&После», «&Вместо», «&Перед» — они определяют, как ваш код встраивается в типовой.

Проверка результата и границы самостоятельной работы

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

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

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

Синтаксис модуля (F7)
Норма

Окно сообщений пустое или только предупреждения

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

Красные ошибки с указанием строки

Выполнение в режиме предприятия
Норма

Действие завершается, результат виден в данных

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

Окно «Ошибка выполнения» с текстом исключения

Повторный запуск
Норма

Результат идентичен, дублей нет

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

Создаются повторные элементы или записи

Права пользователей
Норма

Код работает под учётной записью без полных прав

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

Доступно только администратору

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

Итог

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

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

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

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

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

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

Да, встроенный язык имеет двойной синтаксис: «Процедура/Procedure», «Если/If» и так далее. В одном модуле можно смешивать варианты, но для читаемости лучше придерживаться одного стиля — в российских командах традиционно используется русский.

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

Функция возвращает значение через оператор «Возврат» и может использоваться в выражениях, например «Итог = СуммаСНДС(1000, 20)». Процедура выполняет действия и ничего не возвращает. Если результат нужен вызывающему коду — выбирайте функцию.

Почему код работает на клиенте, но не работает на сервере?

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

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

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

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

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