Разработка и Конфигурация · 10 мин
Как сделать код в 1С: практическое руководство
Как написать код в 1С: работа в конфигураторе, встроенный язык, создание процедур и функций, обработчики событий, отладка и типичные ошибки новичков.
Код в 1С пишется на встроенном языке платформы — он похож на упрощённый Pascal и поддерживает русские идентификаторы. Вся разработка ведётся в конфигураторе: там создаются процедуры и функции в модулях объектов, форм, общих модулей. Чтобы начать писать код, достаточно установленной платформы 1С:Предприятие и файловой базы для экспериментов.
Типичный сценарий новичка выглядит так: нужно добавить кнопку на форму документа, при нажатии на которую выполняется расчёт или заполнение табличной части. Для этого не обязательно менять типовую конфигурацию — многие задачи решаются внешними обработками и расширениями, что безопаснее для обновлений.
Ниже разобран полный цикл: от открытия конфигуратора до проверки работающего кода, с примерами синтаксиса, частыми ошибками и границами безопасной самостоятельной доработки.
Где пишется код в 1С: конфигуратор и виды модулей
Конфигуратор — это среда разработки, которая входит в поставку платформы. Запускается через ярлык «1С:Предприятие» выбором базы и кнопки «Конфигуратор». После открытия нужно разблокировать конфигурацию для редактирования: меню «Конфигурация → Открыть конфигурацию», затем при необходимости «Поддержка → Настройка поддержки» и включение возможности изменений.
Код размещается не в отдельных файлах, а в модулях, привязанных к объектам конфигурации. Основные места размещения:
- Модуль формы — обработчики кнопок, полей, событий открытия и закрытия формы;
- Модуль объекта — логика документа или справочника: проведение, заполнение, проверки;
- Общий модуль — переиспользуемые процедуры и функции, доступные из любого места;
- Модуль приложения — глобальные события запуска системы;
- Модуль команды — код, выполняемый по команде интерфейса.
Для первых экспериментов удобнее всего общий модуль: создайте его через контекстное меню ветки «Общие → Общие модули», задайте имя, например «МоиПроцедуры», и пишите туда служебные функции.
Основы встроенного языка: синтаксис и первая процедура
Встроенный язык 1С регистронезависим, допускает русские и английские ключевые слова. Каждый оператор завершается точкой с запятой, блоки выделяются конструкциями «Если ... Тогда ... КонецЕсли;», «Цикл ... КонецЦикла;». Комментарии начинаются с двойного слеша «//».
Простейшая процедура выглядит так:
Процедура Приветствие() Экспорт
Сообщить("Код выполнен успешно");
КонецПроцедуры
Ключевое слово «Экспорт» делает процедуру доступной из других модулей. Функция отличается тем, что возвращает значение через оператор «Возврат»:
Функция СуммаСНДС(Сумма, СтавкаНДС) Экспорт
Возврат Сумма + Сумма * СтавкаНДС / 100;
КонецФункции
Работа с объектами базы строится через коллекции метаданных. Например, создание элемента справочника:
НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
НовыйЭлемент.Наименование = "Тестовая позиция";
НовыйЭлемент.Записать();
Обработчики событий: как код реагирует на действия пользователя
Большая часть прикладного кода в 1С — это обработчики событий. Самый быстрый способ создать обработчик — в конфигураторе открыть форму, выделить элемент (например, кнопку) и в палитре свойств нажать кнопку с лупой рядом с событием «Нажатие». Платформа сама создаст заготовку процедуры в модуле формы.
Пример обработчика кнопки, который пересчитывает итог по табличной части документа:
&НаКлиенте
Процедура ПересчитатьИтог(Команда)
Итог = 0;
Для Каждого Строка Из Объект.Товары Цикл
Итог = Итог + Строка.Сумма;
КонецЦикла;
Объект.ИтоговаяСумма = Итог;
КонецПроцедуры
Директивы «&НаКлиенте» и «&НаСервере» определяют, где выполняется код. Клиентский код не имеет доступа к запросам и прямой записи в базу — для этого вызываются серверные процедуры. Нарушение этого правила — частая причина ошибок «Процедура или функция не определена».
Запросы: как получить данные из базы
Для выборки данных используется язык запросов, похожий на SQL. Запрос создаётся программно, текст удобно собирать конструктором запроса (правый клик в модуле → «Конструктор запроса»).
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Наименование
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| НЕ Номенклатура.ПометкаУдаления";
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
Сообщить(Результат.Наименование);
КонецЦикла;
Параметры в запрос передаются через «Запрос.УстановитьПараметр("Имя", Значение)» — так безопаснее, чем подстановка строк, и исключается риск ошибок с типами данных.
Отладка: как найти ошибку в коде
Отладка включается в конфигураторе: «Отладка → Начать отладку» или клавиша F5. Запустится сеанс предприятия, и выполнение остановится на точках останова, которые ставятся кликом по левому полю редактора кода или клавишей F9.
Во время остановки доступны:
- просмотр значений переменных наведением курсора или через «Вычислить выражение» (Shift+F9);
- пошаговое выполнение: F11 — войти в процедуру, F10 — перешагнуть;
- табло (окно «Табло») для постоянного наблюдения за выбранными выражениями;
- стек вызовов — чтобы понять, откуда пришло выполнение.
- 1Воспроизведите ошибку и запомните точный текст сообщения
- 2Поставьте точку останова перед предполагаемым проблемным местом
- 3Запустите отладку (F5) и повторите действие пользователя
- 4Пошагово пройдите код, проверяя значения переменных через Shift+F9
- 5Исправьте причину, снимите точки останова и повторно протестируйте
Если конфигуратор не подключается к сеансу, проверьте, что в параметрах базы разрешена отладка, а для серверных баз — что отладка включена на сервере 1С.
Расширения и внешние обработки: безопасная доработка типовых решений
Прямое изменение типовой конфигурации снимает её с полной поддержки и усложняет обновления. Платформа предлагает два безопасных механизма.
Сравнение вариантов доработки
Подходит для добавления форм, кнопок, подписок на события и переопределения процедур типового кода. Сохраняет возможность обновления, но требует проверки совместимости после каждого обновления
Подходит для разовых операций: загрузка данных, массовые изменения, печатные формы. Не меняет конфигурацию вообще, но не может добавлять кнопки в типовые формы
Даёт полную свободу, но усложняет обновления и повышает риск ошибок при объединении. Оправдано только в собственных (нетиповых) разработках
Расширение создаётся через «Конфигурация → Расширения конфигурации → Создать». Заимствованные процедуры помечаются аннотациями «&После», «&Вместо», «&Перед» — они определяют, как ваш код встраивается в типовой.
Проверка результата и границы самостоятельной работы
Признаки корректно написанного кода: модуль проходит синтаксическую проверку без ошибок, действие в режиме предприятия выполняется без сообщений об исключениях, данные в базе меняются ожидаемо, а повторный запуск не создаёт дублей.
Как проверить результат
Окно сообщений пустое или только предупреждения
Красные ошибки с указанием строки
Действие завершается, результат виден в данных
Окно «Ошибка выполнения» с текстом исключения
Результат идентичен, дублей нет
Создаются повторные элементы или записи
Код работает под учётной записью без полных прав
Доступно только администратору
Самостоятельно разумно делать: простые кнопки и пересчёты, внешние обработки, печатные формы, отчёты на СКД. К привлечению специалиста стоит отнести: изменение проведения документов, доработку обменов данными, оптимизацию запросов на больших объёмах и всё, что затрагивает регламентированный учёт.
Что важно запомнить
Код в 1С пишется в конфигураторе внутри модулей на встроенном языке. Начинайте с простых процедур, проверяйте синтаксис клавишей F7, отлаживайте через точки останова и тестируйте на копии базы. Типовые конфигурации дорабатывайте расширениями и внешними обработками, чтобы сохранить обновления.
Частые вопросы
Нужно ли знать программирование, чтобы писать код в 1С?
Базовые задачи — кнопки, пересчёты, сообщения — доступны без опыта: встроенный язык простой, а конструкторы формируют заготовки кода автоматически. Для запросов, проведения документов и интеграций потребуется понимание принципов работы СУБД и объектной модели платформы.
Можно ли писать код на английском синтаксисе?
Да, встроенный язык имеет двойной синтаксис: «Процедура/Procedure», «Если/If» и так далее. В одном модуле можно смешивать варианты, но для читаемости лучше придерживаться одного стиля — в российских командах традиционно используется русский.
Чем отличается процедура от функции?
Функция возвращает значение через оператор «Возврат» и может использоваться в выражениях, например «Итог = СуммаСНДС(1000, 20)». Процедура выполняет действия и ничего не возвращает. Если результат нужен вызывающему коду — выбирайте функцию.
Почему код работает на клиенте, но не работает на сервере?
Контексты различаются: на клиенте недоступны запросы и прямая работа с базой, на сервере — элементы интерфейса и некоторые клиентские объекты. Разделяйте логику: интерфейс держите в «&НаКлиенте», обращение к данным — в «&НаСервере», и передавайте между ними только данные, а не объекты контекста.
Как научиться писать код в 1С быстрее?
Эффективный путь: изучить синтаксис на простых примерах, затем разбирать типовой код конфигурации через отладчик — пошаговое прохождение реальных процедур даёт понимание быстрее теории. Полезны синтакс-помощник (Shift+F1 по ключевому слову) и документация на диске ИТС, если он доступен.
Что делать, если после доработки перестало обновляться типовое решение?
Если изменения вносились напрямую в конфигурацию, при обновлении выполняется сравнение и объединение, где доработки могут конфликтовать с новыми версиями объектов. Варианты: вручную переносить изменения после каждого обновления или постепенно перевести доработки в расширение и вернуть конфигурацию на полную поддержку.