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

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

1С:Предприятие 8: как научиться программировать

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

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

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

Материал рассчитан на тех, кто начинает с нуля или переходит в 1С из других языков. Ниже разобраны инструменты, структура языка, работа с данными, отладка, типовые ошибки и порядок безопасного внесения изменений в рабочую базу.

Инструменты разработчика: конфигуратор и режимы работы

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

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

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

Встроенный язык 1С: основы синтаксиса

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

Типичный фрагмент кода выглядит так:

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

Если Не ПроверитьЗаполнение() Тогда

Отказ = Истина;

Возврат;

КонецЕсли;

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

Если СтрокаТовары.Количество <= 0 Тогда

Сообщить("В строке " + СтрокаТовары.НомерСтроки + " не указано количество");

Отказ = Истина;

КонецЕсли;

КонецЦикла;

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

Ключевые конструкции: условия Если ... Тогда ... Иначе ... КонецЕсли, циклы Для ... Цикл и Для Каждого ... Из ... Цикл, процедуры и функции (функция возвращает значение через Возврат). Ошибки обрабатываются через Попытка ... Исключение ... КонецПопытки.

Отдельная тема — директивы компиляции: &НаСервере, &НаКлиенте, &НаСервереБезКонтекста. В управляемых формах код делится между клиентом и сервером: обращаться к базе данных можно только на сервере, а интерактивные действия (предупреждения, вопросы) — только на клиенте. Непонимание этого деления — самая частая причина ошибок «Метод объекта не обнаружен» у новичков.

Объекты конфигурации: что выбрать под задачу

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

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

ЗадачаПодходящий объектКомментарий
Хранить список товаровСправочникИерархия, коды, владельцы
Оформить продажуДокументПроведение, движения по регистрам
Учитывать остатки на складахРегистр накопления (остатки)Заполняется движениями документов
Хранить цены по датамРегистр сведений (периодический)Срез последних на дату
Загрузить данные из файлаОбработкаНе хранит данные сама по себе
Показать аналитику продажОтчёт на СКДЗапрос + настройки без кода

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

Язык запросов 1С похож на SQL, но работает с объектами конфигурации, а не с физическими таблицами. Запросы пишутся в тексте модуля или через конструктор запроса (правый клик в модуле → «Конструктор запроса»). Пример выборки остатков:

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

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

"ВЫБРАТЬ

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

| Остатки.КоличествоОстаток КАК Остаток

|ИЗ

| РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, Склад = &Склад) КАК Остатки";

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

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

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

Два подхода к данным нужно различать. Объектная работа (Справочники.Номенклатура.НайтиПоКоду(), Документы.Реализация.СоздатьДокумент()) удобна для создания и изменения отдельных объектов — срабатывают обработчики событий и проверки. Запросы предназначены для чтения больших выборок и аналитики. Использовать объектный перебор тысяч элементов там, где достаточно одного запроса, — типичная причина медленной работы доработок.

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

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

Отладка включается в конфигураторе: «Отладка → Начать отладку» (F5) или подключение к уже запущенному сеансу через «Отладка → Подключение». Точки останова ставятся кликом по полю слева от строки кода. Во время останова доступны просмотр значений переменных (Shift+F9), табло и стек вызовов.

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

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

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

Запись документа
Норма

Документ проводится, движения видны в регистрах

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

Ошибка проведения или движения отсутствуют

Отчёт на СКД
Норма

Итоги сходятся с данными регистров

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

Пустой отчёт или задвоенные суммы

Права
Норма

Пользователь видит только разрешённое

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

Ошибка «Нарушение прав доступа» или лишние данные

Порядок безопасной доработки рабочей базы

Порядок действий
  1. 1
    Сделайте выгрузку рабочей базы в файл dt
  2. 2
    Разверните копию базы и выполните доработку на копии
  3. 3
    Протестируйте сценарии под разными пользователями
  4. 4
    Зафиксируйте список изменённых объектов
  5. 5
    Перенесите изменения в рабочую базу в нерабочее время
  6. 6
    Проверьте ключевые операции сразу после обновления

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

Сравнение вариантов

Доработка конфигурации

Полная свобода изменений, но усложняет обновление типового решения

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

Не трогает типовой код, обновления ставятся проще; ограничения на изменение структуры данных

Внешняя обработка или отчёт

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

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

Типичные ошибки
01
Запрос в цикле: выборка по одному элементу вместо одного запроса с соединением — резкое падение скорости
02
Смешение клиентского и серверного кода: обращение к базе из &НаКлиенте приводит к ошибкам компиляции
03
Изменение объектов через запрос в обход логики — нарушается целостность данных
04
Работа без копии базы: одна неудачная реструктуризация может стоить потери данных
05
Игнорирование исключений: пустой блок Попытка/Исключение скрывает реальные ошибки

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

Итог

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

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

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

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

Нет, встроенный язык 1С осваивается с нуля. Важнее понимать предметную область учёта: что такое документ, проводка, остатки. Базовые алгоритмические навыки (циклы, условия) приобретаются прямо в процессе.

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

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

Как найти, почему документ не проводится?

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

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

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

Что изучать после основ языка?

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

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

Нет. Для обновления с реструктуризацией требуется монопольный доступ — все сеансы должны быть завершены. Выполняйте обновление в нерабочее время после резервного копирования.