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

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

1С:Предприятие как среда разработки

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

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

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

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

Что входит в среду разработки 1С

Основной инструмент — конфигуратор. Это отдельный режим запуска платформы, в котором доступны дерево конфигурации, редакторы объектов, модульный редактор кода, палитра свойств, конструкторы запросов и движений, а также средства обновления конфигурации базы данных. Параллельно с конфигуратором существует EDT (1C:Enterprise Development Tools) — среда на базе Eclipse с поддержкой Git, статического анализа и командной работы.

Ключевые компоненты среды:

  • Конфигуратор — разработка и администрирование структуры метаданных;
  • Встроенный язык — программирование обработчиков событий, модулей объектов, общих модулей;
  • Язык запросов — декларирование выборок из таблиц базы данных, похож на SQL с прикладными расширениями (виртуальные таблицы регистров, итоги);
  • Система компоновки данных (СКД) — построение отчётов без ручного программирования интерфейса;
  • Отладчик — точки останова, просмотр переменных, стек вызовов, отладка фоновых заданий и веб-сервисов;
  • Синтакс-помощник — встроенная справка по объектам и методам платформы.

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

Конфигуратор или EDT

Конфигуратор

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

EDT

Подходит для командной разработки, хранения кода в Git, статического анализа и больших проектов. Требует больше ресурсов и времени на освоение.

Объекты метаданных: как устроена конфигурация

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

Основные группы объектов:

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

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

Встроенный язык и модель выполнения кода

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

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

Пример серверной функции, возвращающей остаток товара:

&НаСервереБезКонтекста

Функция ОстатокТовара(Номенклатура, Склад)

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

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

"ВЫБРАТЬ

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

|ИЗ

| РегистрНакопления.ТоварыНаСкладах.Остатки(

| , Номенклатура = &Номенклатура

| И Склад = &Склад) КАК Остатки";

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

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

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

Если Выборка.Следующий() Тогда

Возврат Выборка.Остаток;

КонецЕсли;

Возврат 0;

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

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

Отладка и поиск ошибок

Отладка включается в конфигураторе через меню «Сервис → Параметры → Отладка» — нужно разрешить отладку и указать протокол (по TCP или HTTP через сервер отладки). Далее предприятие запускается из конфигуратора клавишей F5 или подключается к уже работающему сеансу через «Отладка → Подключение».

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

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

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

Расширения конфигурации: доработка без снятия с поддержки

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

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

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

Типичные ошибки начинающих разработчиков

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

Типичные ошибки
01
Циклический обход с запросом внутри цикла — сотни обращений к СУБД вместо одного запроса с соединением таблиц; результат — катастрофическое падение производительности
02
Запись объектов без транзакции при групповых операциях — частично записанные данные при сбое
03
Использование ОбменДанными.Загрузка = Истина без понимания последствий — пропуск проверок и обработчиков, рассинхронизация связанных данных
04
Прямая правка типовой конфигурации там, где достаточно расширения — потеря поддержки и трудоёмкое обновление
05
Игнорирование разделения контекстов клиент/сервер — ошибки 'Процедура или функция не обнаружена' в тонком клиенте
06
Расчёт остатков суммированием движений вместо виртуальных таблиц итогов — медленные отчёты

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

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

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

Поведение после обновления
Норма

Расширение применяется, типовая конфигурация обновляется штатно

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

Конфигурация снята с поддержки, обновление требует ручного сравнения

Производительность
Норма

Операция выполняется за время, сопоставимое с типовыми аналогами

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

Запросы в цикле, блокировки, таймауты при реальных объёмах

Целостность данных
Норма

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

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

Расхождения остатков, частично записанные данные после сбоев

Как выстроить обучение и рабочий процесс

Эффективный путь освоения: сначала устройство метаданных и язык запросов, затем встроенный язык и модель клиент-сервер, далее СКД, расширения и механизмы интеграции (HTTP-сервисы, планы обмена). Пытаться учить язык отдельно от платформы бессмысленно — половина знаний разработчика 1С касается именно поведения платформы.

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

Итог

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

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

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

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

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

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

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

Можно ли разрабатывать в 1С без лицензии?

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

Как отладить код, который выполняется в фоновом задании?

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

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

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

Подходит ли 1С для разработки мобильных приложений?

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