Разработка и Конфигурация · 15 мин
1С-программирование: что нужно знать для старта
Что нужно знать для старта в 1С-программировании: встроенный язык, объекты конфигурации, запросы, управляемые формы, отладка и типичные ошибки новичков.
1С-программирование — это разработка и доработка прикладных решений на платформе «1С:Предприятие». В отличие от универсальных языков вроде Python или Java, здесь большая часть бизнес-логики уже реализована в типовых конфигурациях, а задача разработчика — понимать устройство платформы, грамотно расширять её и не ломать существующий учёт. Поэтому порог входа ниже, чем в классическом программировании, но требования к аккуратности выше: ошибка в коде может исказить проводки, остатки на складе или зарплату сотрудников.
Ключевой навык — не столько знание синтаксиса встроенного языка, сколько понимание предметной области: бухгалтерского учёта, торговли, расчёта зарплаты. Платформа сама заботится о хранении данных, транзакциях, правах доступа и интерфейсе, а разработчик описывает объекты и их поведение. Именно поэтому хороший 1С-программист совмещает технические знания с пониманием того, как работает бизнес заказчика.
Ниже разобраны конкретные области знаний, без которых уверенная работа с 1С невозможна: встроенный язык, объекты конфигурации, язык запросов, управляемые формы, отладка, механизмы расширений и смежные компетенции.
Встроенный язык 1С: синтаксис и особенности
Встроенный язык 1С (его часто называют «язык 1С» или по истории «1С:Скрипт») — процедурный язык с русскоязычным и англоязычным синтаксисом. На практике в российских компаниях используется русский вариант: ключевые слова «Если», «Тогда», «Цикл», «Процедура», «Функция». Язык слабо типизирован: тип переменной определяется присвоенным значением, что ускоряет написание кода, но требует внимательности при сравнениях и арифметике.
Базовый минимум, который нужно освоить в первую очередь: переменные и типы данных (строка, число, дата, булево, ссылки на объекты), условные операторы, циклы «Для» и «Пока», процедуры и функции с параметрами, работа с универсальными коллекциями — массивами, структурами, соответствиями и таблицами значений. Отдельно стоит разобраться с обработкой ошибок через конструкцию «Попытка... Исключение... КонецПопытки» — без неё нельзя писать надёжный код, обращающийся к файлам и внешним сервисам.
Важная особенность: код в 1С делится по контекстам исполнения. Один и тот же вызов может выполняться на клиенте или на сервере, и от этого зависит, какие объекты доступны. Директивы компиляции «&НаКлиенте», «&НаСервере», «&НаСервереБезКонтекста» определяют место выполнения процедуры. Непонимание клиент-серверной модели — самая частая причина неработающего кода у новичков.
Объекты конфигурации: что лежит в основе любой системы
Вся логика прикладного решения строится вокруг объектов метаданных. Программист обязан свободно ориентироваться в их назначении, иначе он не сможет ни читать чужой код, ни проектировать собственные доработки.
- Справочники — условно постоянные списки: контрагенты, номенклатура, сотрудники. Поддерживают иерархию, предопределённые элементы, владельцев.
- Документы — факты хозяйственной жизни: заказы, накладные, начисления. Именно документы проводятся и формируют движения по регистрам.
- Регистры сведений — хранят данные в разрезах измерений: курсы валют, цены, штрихкоды. Могут быть периодическими и подчинёнными регистратору.
- Регистры накопления — ведут количественный учёт: остатки товаров, взаиморасчёты. Бывают вида «остатки» и «обороты».
- Регистры бухгалтерии — реализуют двойную запись: план счетов, дебет, кредит, субконто.
- Регистры расчёта — основа расчёта зарплаты: начисления, удержания, зависимости по периоду действия.
- Перечисления, планы видов характеристик, отчёты, обработки — вспомогательные и аналитические объекты.
Критически важно понимать механизм проведения: при проведении документа платформа вызывает обработчик «ОбработкаПроведения», в котором код формирует записи в регистры. Ошибка в этом обработчике напрямую искажает учётные данные, поэтому любые изменения логики проведения нужно тестировать на копии базы и с перепроведением контрольных документов.
Язык запросов 1С: как выбирать данные правильно
Запросы — основной способ получения данных в 1С. Синтаксис похож на SQL, но адаптирован под объектную модель: вместо таблиц фигурируют объекты конфигурации («Справочник.Номенклатура», «РегистрНакопления.ТоварыНаСкладах.Остатки»), а платформа сама формирует обращения к СУБД. Виртуальные таблицы регистров («Остатки», «Обороты», «СрезПоследних») позволяют получать агрегированные данные без ручных вычислений.
Нужно уверенно владеть: соединениями таблиц (левое, внутреннее), группировками и итогами, вложенными запросами и временными таблицами, объединениями, параметрами запроса и оператором «В» для отборов по спискам. Пакетные запросы с временными таблицами — стандарт де-факто для сложных выборок: сначала отбираются нужные документы во временную таблицу, затем к ней присоединяются остальные данные.
Частая ошибка новичков — обход выборки в цикле с запросом внутри итерации. Это резко замедляет работу: вместо одного обращения к базе выполняются сотни. Правильный подход — один запрос, возвращающий все нужные данные, и обход уже его результата. Ещё одна типичная проблема — использование «СрезПоследних» без указания периода, что заставляет платформу сканировать лишние данные.
Управляемые формы и интерфейс
Современные прикладные решения работают на управляемых формах: разработчик декларативно описывает состав элементов, а платформа сама отрисовывает интерфейс на тонком клиенте, веб-клиенте и мобильном клиенте. В отличие от обычных форм, здесь нет прямого доступа к элементам «как к объектам» — взаимодействие идёт через данные формы и реквизиты.
Что нужно знать на практике: жизненный цикл формы (обработчики «ПриСозданииНаСервере», «ПриОткрытии», «ПередЗаписью»), работу с реквизитами формы и данными объекта, динамические списки с произвольными запросами, условное оформление для визуального выделения строк, передачу параметров между формами и возврат результата через «ОповеститьОВыборе». Для диалогов с пользователем используются асинхронные методы («ПоказатьВопрос», «ПоказатьВводЗначения»), потому что модальные окна в управляемом приложении запрещены.
Отдельная тема — система компоновки данных (СКД), на которой строятся почти все отчёты. Разработчику достаточно написать запрос и настроить связи, а группировки, отборы и оформление пользователь меняет сам. Умение делать отчёт на СКД без единой строки программного вывода — обязательный навык, экономящий десятки часов.
Отладка, тестирование и проверка результата
Конфигуратор включает полноценный отладчик: точки останова, пошаговое выполнение, просмотр значений переменных, табло, стек вызовов и замеры производительности. Чтобы отладка работала, в настройках конфигуратора должен быть включён режим отладки, а для серверного кода — разрешена отладка на сервере (это настраивает администратор кластера).
Типовой рабочий цикл выглядит так: воспроизвести проблему на копии базы, поставить точку останова в подозрительном обработчике, пройти код по шагам, проверить значения переменных и содержимое наборов записей, исправить, затем перепровести контрольный документ и сверить результат с ожидаемым. Для регистров удобно проверять движения документа стандартным отчётом по движениям или запросом к виртуальным таблицам.
- 1Сделайте выгрузку рабочей базы или разверните копию для разработки
- 2Изучите, как аналогичная задача решена в типовой конфигурации
- 3Реализуйте доработку через расширение, если оно покрывает задачу
- 4Протестируйте на копии: проведение, отчёты, печатные формы, права
- 5Проверьте движения документов и сверьте итоги до и после
- 6Перенесите доработку в рабочую базу в нерабочее время и сделайте контрольную проверку
Расширения и обновление типовых конфигураций
Расширение конфигурации — механизм, позволяющий добавлять и переопределять объекты, не изменяя саму типовую конфигурацию. Это сохраняет возможность автоматического обновления и резко снижает стоимость сопровождения. Современный стандарт: сначала проверить, решается ли задача расширением, и только при принципиальной невозможности снимать объекты с поддержки.
Ограничения расширений нужно знать заранее: нельзя изменять структуру типовых регистров, добавлять измерения к существующим регистрам, менять состав планов обмена. В заимствованных модулях доступны аннотации «ИзменениеИКонтроль» (предпочтительный вариант — платформа проверит совместимость при обновлении) и «Вместо» (полная замена процедуры, рискованнее). Также полезно освоить подсистему «Библиотека стандартных подсистем» (БСП): она даёт готовые механизмы печати, обменов, дополнительных отчётов и обработок, и большинство типовых конфигураций построено на её основе.
Способы доработки конфигурации
Подходит для большинства доработок: формы, печать, обработчики. Не ломает обновление, но не позволяет менять структуру регистров
Даёт полную свободу, но усложняет обновления: каждое обновление требует сравнения и объединения, доработки могут конфликтовать
Идеальны для отчётов, печатных форм и сервисных операций без изменения конфигурации вообще; ограничены в интерактивной логике
Позволяет подключать доработки пользователю без конфигуратора; требует, чтобы конфигурация включала БСП
Смежные знания: SQL, обмены и предметная область
Хотя платформа абстрагирует разработчика от СУБД, понимание основ SQL и индексов помогает писать быстрые запросы и диагностировать блокировки. Для крупных внедрений полезно знать, как платформа хранит таблицы, что такое уровни изоляции транзакций и почему возникают взаимоблокировки при параллельном проведении документов.
Вторая большая область — интеграции: обмены через планы обмена, файлы XML/JSON, HTTP-сервисы и веб-сервисы, форматы EnterpriseData и CommerceML. Практически в каждом проекте 1С обменивается данными с сайтом, CRM, банком или складской системой, поэтому умение читать и формировать XML/JSON востребовано постоянно.
Наконец, предметная область. Программист, не понимающий разницы между авансом и оплатой, FIFO и средней себестоимостью, начислением и удержанием, будет писать формально работающий, но бессмысленный код. Рекомендуется параллельно с языком изучать методику учёта в той конфигурации, с которой работаете: «Управление торговлей», «Бухгалтерия предприятия» или «Зарплата и управление персоналом».
Как проверить качество доработки
Документы проводятся, движения соответствуют ожидаемым суммам и счетам
Ошибки при проведении, дубли движений, расхождения итогов
Типовое обновление устанавливается без ручного объединения доработанных объектов
Обновление требует ручного сопоставления десятков объектов
Типовые операции выполняются без заметного замедления на реальном объёме данных
Отчёты и проведение стали ощутимо медленнее после доработки
Пользователи с ограниченными правами не видят лишнего и не получают ошибок доступа
У рядовых пользователей появились новые объекты или ошибки нарушения прав
Как выстроить обучение: практический маршрут
Эффективная последовательность обучения выглядит так: сначала установка платформы и учебной конфигурации, знакомство с конфигуратором; затем встроенный язык на простых задачах (обработки, циклы, коллекции); далее создание собственной мини-конфигурации с нуля — справочники, документ, пара регистров и отчёт. Такой учебный проект за пару недель даёт понимание связей между объектами лучше любого курса лекций.
После этого имеет смысл переходить к типовым конфигурациям: читать чужой код, разбирать, как устроено проведение реализации или начисление зарплаты, выполнять небольшие реальные доработки через расширения. Официальная документация (синтакс-помощник в конфигураторе, руководство разработчика) и методические материалы фирмы «1С» — основные достоверные источники; случайные форумные советы стоит проверять, потому что многие из них относятся к устаревшим версиям платформы.
Как выбрать направление углубления
Проверить свой уровень можно простым тестом: если вы можете с нуля создать конфигурацию «складской учёт» с приходом, расходом, остатками и отчётом, объяснить, почему запрос тормозит, и добавить печатную форму к типовому документу через расширение — базовый набор знаний освоен, и можно претендовать на позицию junior-разработчика 1С.
Что важно запомнить
Основа 1С-программирования — встроенный язык, объекты конфигурации, запросы, управляемые формы и отладка. Доработки делайте через расширения и только на копии базы, результат проверяйте по движениям документов и итогам учёта. Параллельно изучайте предметную область: без понимания учёта код в 1С не имеет смысла.
Частые вопросы
Нужно ли высшее техническое образование для 1С-программиста?
Нет, формально не требуется. Работодатели смотрят на практические навыки: умение писать код, делать запросы и дорабатывать типовые конфигурации. Многие специалисты приходят из бухгалтерии и экономики — знание предметной области становится их преимуществом. Диплом помогает при найме в крупные компании, но решающим фактором являются выполненные учебные и реальные проекты.
Сколько времени занимает обучение с нуля до первой работы?
При регулярных занятиях по несколько часов в день базовый уровень достижим за три-шесть месяцев: язык, объекты, запросы, простые доработки. Уверенное владение типовыми конфигурациями и расширениями обычно формируется за первый год реальной работы. Ускоряет процесс наличие наставника и решение задач, приближенных к боевым, а не только учебных примеров.
Чем 1С-программист отличается от 1С-консультанта?
Программист пишет и изменяет код, создаёт отчёты, обработки и расширения. Консультант настраивает типовую конфигурацию штатными средствами, обучает пользователей и проектирует учётные схемы без изменения кода. На практике граница размыта: хороший программист понимает методологию, а сильный консультант умеет читать код, чтобы объяснить поведение системы.
На какой версии платформы стоит учиться?
На актуальной линейке 8.3 с управляемым приложением — именно на ней работают все современные конфигурации. Устаревшие версии (7.7, обычные формы 8.1–8.2) встречаются только в старых внедрениях, и специально учиться на них не имеет смысла. Учебную версию платформы можно получить легально для некоммерческого обучения.
Нужно ли знать SQL для работы с 1С?
Для старта достаточно встроенного языка запросов 1С — платформа сама транслирует его в SQL. Но базовое понимание SQL, индексов и блокировок становится необходимым при росте: оптимизация медленных отчётов, диагностика взаимоблокировок и работа с большими базами невозможны без понимания того, что происходит на уровне СУБД.
Можно ли дорабатывать конфигурацию без риска сломать обновления?
Да, если использовать расширения, внешние отчёты и обработки, а также механизм дополнительных отчётов и обработок БСП — они не изменяют типовой код. При этом расширения имеют ограничения: нельзя менять структуру типовых регистров и планов обмена. Если задача требует вмешательства в типовые объекты, изменения нужно тщательно документировать, чтобы упростить будущие обновления.