Разработка и Конфигурация · 12 мин
1С:Предприятие как среда разработки
Как устроена среда разработки 1С:Предприятие: конфигуратор, встроенный язык, объекты метаданных, отладка, расширения и типичные ошибки начинающих разработчиков.
1С:Предприятие — это не только учётная программа, но и полноценная технологическая платформа со своей средой разработки, встроенным языком и системой хранения бизнес-логики. Разработчик работает не с файлами исходного кода в привычном смысле, а с конфигурацией — деревом объектов метаданных, где справочники, документы, регистры и отчёты описываются декларативно, а поведение дописывается на встроенном языке.
Такой подход сильно меняет экономику разработки: типовые механизмы (проведение документов, итоги по регистрам, права доступа, журналы документов) платформа реализует сама, а программист сосредотачивается на прикладной логике. Цена этого — необходимость понимать архитектуру платформы: без знания того, как хранятся данные и как работают транзакции проведения, легко написать медленный или конфликтующий код.
Статья разбирает инструменты разработчика, устройство конфигуратора, особенности встроенного языка, отладку, механизм расширений и практические правила, которые позволяют дорабатывать конфигурации без риска сломать обновление или потерять данные.
Что входит в среду разработки 1С
Основной инструмент — конфигуратор. Это отдельный режим запуска платформы, в котором доступны дерево конфигурации, редакторы объектов, модульный редактор кода, палитра свойств, конструкторы запросов и движений, а также средства обновления конфигурации базы данных. Параллельно с конфигуратором существует EDT (1C:Enterprise Development Tools) — среда на базе Eclipse с поддержкой Git, статического анализа и командной работы.
Ключевые компоненты среды:
- Конфигуратор — разработка и администрирование структуры метаданных;
- Встроенный язык — программирование обработчиков событий, модулей объектов, общих модулей;
- Язык запросов — декларирование выборок из таблиц базы данных, похож на SQL с прикладными расширениями (виртуальные таблицы регистров, итоги);
- Система компоновки данных (СКД) — построение отчётов без ручного программирования интерфейса;
- Отладчик — точки останова, просмотр переменных, стек вызовов, отладка фоновых заданий и веб-сервисов;
- Синтакс-помощник — встроенная справка по объектам и методам платформы.
Для большинства задач доработки типовых конфигураций достаточно конфигуратора. EDT оправдан при командной разработке, необходимости версионирования через Git и работе с крупными проектами, где важны рефакторинг и контроль качества кода.
Конфигуратор или EDT
Подходит для доработок типовых конфигураций, быстрых правок и обучения. Не требует настройки, но слабее поддерживает командную работу и версионирование.
Подходит для командной разработки, хранения кода в Git, статического анализа и больших проектов. Требует больше ресурсов и времени на освоение.
Объекты метаданных: как устроена конфигурация
Конфигурация — это дерево объектов метаданных. Каждый объект описывает прикладную сущность: её структуру данных, формы, макеты и программные модули. Понимание основных типов объектов — фундамент разработки в 1С.
Основные группы объектов:
- Справочники — условно постоянные данные: контрагенты, номенклатура, склады;
- Документы — факты хозяйственной деятельности, проведение документа формирует движения по регистрам;
- Регистры сведений — хранение данных в разрезе измерений (цены, курсы валют);
- Регистры накопления — остатки и обороты (товары на складах, взаиморасчёты);
- Регистры бухгалтерии — проводки с поддержкой плана счетов;
- Отчёты и обработки — инструменты анализа и сервисные операции;
- Общие модули — переиспользуемый код, клиентский и серверный контексты.
Принципиальный момент: разработчик не создаёт таблицы базы данных вручную. Платформа сама разворачивает структуру СУБД по описанию метаданных при обновлении конфигурации базы данных. Попытка изменить таблицы напрямую средствами СУБД нарушает целостность и лишает поддержки.
Встроенный язык и модель выполнения кода
Встроенный язык 1С — предметно-ориентированный язык с русскоязычным и англоязычным синтаксисом. Код размещается в модулях: модуле объекта, модуле формы, общих модулях, модуле менеджера. Каждый модуль имеет контекст исполнения — клиент или сервер, и это критично для клиент-серверной архитектуры.
Типичная ошибка новичка — обращение к базе данных из клиентского контекста. В тонком и веб-клиенте любой запрос, запись объекта или вызов серверной функции требует серверного вызова. Поэтому общие модули разделяют по флагам «Сервер», «Клиент», «Вызов сервера», а формы используют директивы компиляции &НаКлиенте и &НаСервере.
Пример серверной функции, возвращающей остаток товара:
&НаСервереБезКонтекста
Функция ОстатокТовара(Номенклатура, Склад)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Остатки.КоличествоОстаток КАК Остаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(
| , Номенклатура = &Номенклатура
| И Склад = &Склад) КАК Остатки";
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Запрос.УстановитьПараметр("Склад", Склад);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.Остаток;
КонецЕсли;
Возврат 0;
КонецФункции
Обратите внимание на виртуальную таблицу Остатки — платформа сама строит эффективную выборку по итогам регистра. Писать тот же расчёт суммированием всех движений — грубая ошибка производительности.
Отладка и поиск ошибок
Отладка включается в конфигураторе через меню «Сервис → Параметры → Отладка» — нужно разрешить отладку и указать протокол (по TCP или HTTP через сервер отладки). Далее предприятие запускается из конфигуратора клавишей F5 или подключается к уже работающему сеансу через «Отладка → Подключение».
Отладчик умеет останавливаться на точках останова, пошагово выполнять код, показывать значения переменных, таблиц значений и результатов запросов, а также отлаживать фоновые задания, внешние соединения и веб-сервисы — для этого в окне подключения нужно включить соответствующие типы предметов отладки.
Практический приём: когда ошибка воспроизводится только у конкретного пользователя, не пересоздавайте её под своей учётной записью — подключитесь отладчиком к сеансу пользователя и поставьте точку останова с условием. Это сохраняет контекст данных, в котором возникает проблема.
- 1Включите отладку в конфигураторе и запустите предприятие в режиме отладки
- 2Поставьте точку останова в обработчике ОбработкаПроведения модуля документа
- 3Воспроизведите проблему: проведите документ, на котором возникает ошибка
- 4Пошагово пройдите код, проверяя содержимое табличных частей и параметров запросов
- 5Найдя причину, исправьте код и повторно проведите документ с контролем движений
Расширения конфигурации: доработка без снятия с поддержки
Расширение — механизм, позволяющий добавить или переопределить объекты и обработчики типовой конфигурации, не изменяя её саму. Конфигурация остаётся на полной поддержке, обновления ставятся штатно, а доработки живут отдельным слоем.
Расширения позволяют добавлять собственные справочники, документы, отчёты, дополнять формы типовых объектов, переопределять обработчики событий через аннотации &Перед, &После, &Вместо. Ограничения тоже есть: нельзя менять состав измерений регистров, типы реквизитов и часть структурных изменений — для таких задач придётся править основную конфигурацию.
Правило выбора простое: если доработка реализуема расширением — делайте расширение. Прямая правка типового кода оправдана только когда расширение технически не справляется, и каждую такую правку нужно документировать, чтобы восстановить её после обновления.
Типичные ошибки начинающих разработчиков
Большинство проблем в коде 1С связано не с синтаксисом, а с непониманием модели платформы. Знание типовых ошибок экономит часы отладки.
Отдельно стоит сказать о запросах: встроенный язык запросов оптимизируется платформой, но не спасает от логических ошибок. Соединение без условия, выборка «звёздочкой» из широких таблиц, отсутствие отбора по периоду в виртуальных таблицах — стандартные причины медленных отчётов. Перед выкладкой кода проверяйте план запроса на данных, близких к реальным по объёму.
Как проверить результат доработки
Расширение применяется, типовая конфигурация обновляется штатно
Конфигурация снята с поддержки, обновление требует ручного сравнения
Операция выполняется за время, сопоставимое с типовыми аналогами
Запросы в цикле, блокировки, таймауты при реальных объёмах
Движения документов корректны, итоги сходятся с отчётами
Расхождения остатков, частично записанные данные после сбоев
Как выстроить обучение и рабочий процесс
Эффективный путь освоения: сначала устройство метаданных и язык запросов, затем встроенный язык и модель клиент-сервер, далее СКД, расширения и механизмы интеграции (HTTP-сервисы, планы обмена). Пытаться учить язык отдельно от платформы бессмысленно — половина знаний разработчика 1С касается именно поведения платформы.
В рабочем процессе придерживайтесь простых правил: доработки — в расширении, код — в хранилище конфигурации или Git (при работе через EDT), тестирование — на копии базы с реальными данными, выкладка — после проверки обновления на тестовом стенде. Для контроля качества применяйте стандарты разработки фирмы «1С» и автоматические проверки, доступные в EDT.
Что важно запомнить
Разработка в 1С строится вокруг метаданных и встроенного языка: платформа берёт на себя хранение и типовые механизмы, а разработчик описывает прикладную логику. Дорабатывайте типовые решения через расширения, работайте с данными на сервере, используйте виртуальные таблицы итогов и никогда не экспериментируйте на рабочей базе без резервной копии.
Частые вопросы
Нужно ли знать другой язык программирования перед изучением 1С?
Нет, встроенный язык 1С может быть первым: его синтаксис прост, а среда прощает многие типичные ошибки. Однако базовое понимание алгоритмов, циклов и работы с данными ускорит обучение. Важнее другое — готовность изучать предметную область: учёт, склад, расчёты, потому что разработчик 1С работает на стыке программирования и бизнес-процессов.
Чем расширение отличается от внешней обработки?
Внешняя обработка — отдельный файл, который запускается в режиме предприятия и не меняет конфигурацию; она подходит для отчётов и сервисных операций. Расширение встраивается в конфигурацию: дополняет формы, переопределяет обработчики, добавляет объекты. Если нужно изменить поведение типового документа — это расширение; если нужен разовый инструмент — внешняя обработка.
Можно ли разрабатывать в 1С без лицензии?
Для обучения существует учебная версия платформы с ограничениями: нет поддержки COM-соединений, ограничена работа с расширениями и некоторыми механизмами. Для коммерческой разработки и внедрения требуются лицензии на платформу и, при клиент-серверной работе, на сервер 1С:Предприятия.
Как отладить код, который выполняется в фоновом задании?
В конфигураторе откройте «Отладка → Подключение», нажмите кнопку настройки предметов отладки и отметьте фоновые задания. После этого отладчик будет автоматически подключаться к сеансам фоновых заданий, и точки останова в вызываемых ими процедурах начнут срабатывать.
Что делать, если доработку нельзя реализовать расширением?
Если требуется изменить структуру регистра, типы реквизитов или другие элементы, недоступные расширениям, правка вносится в основную конфигурацию. При этом зафиксируйте каждое изменение: ведите список доработок с указанием объектов и причин, используйте хранилище конфигурации. Это позволит перенести изменения при обновлении типового решения.
Подходит ли 1С для разработки мобильных приложений?
Платформа включает мобильную платформу, позволяющую собирать автономные приложения под Android и iOS с собственной конфигурацией и обменом данными с основной базой. Это подходит для полевых сотрудников, курьеров, торговых представителей. Для публичных потребительских приложений с богатым интерфейсом мобильная платформа 1С обычно не выбирается.