С нуля до первой доработки: из чего состоит разработка на 1С и в каком порядке её осваивать

· 10 мин

Содержание

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

Частое заблуждение новичка — «выучу язык 1С, и всё получится». Сам язык простой, его основы осваивают за неделю. Сложность программирования в 1С в другом: понять, где в учётной системе живут данные, почему отчёт строится по регистру, а не по документам, и как не убить производительность запросом в цикле. Об этом ниже — по порядку, в котором это стоит изучать.

Платформа, конфигурация, база: с чего начать разбираться в 1С

Первое, что путает новичков, — три разных слова, которые в быту называют «одной 1С».

ПонятиеЧто этоПример
ПлатформаИсполняющая среда: движок, интерпретатор языка, конфигуратор1С:Предприятие 8.3
КонфигурацияПрикладное решение, написанное на платформе: метаданные + кодБухгалтерия предприятия 3.0, ЗУП 3.1, УТ 11
Информационная базаКонкретные данные одной организации на конкретной конфигурацииБаза «ООО Ромашка»

Программист 1С почти никогда не трогает платформу. Он пишет и дорабатывает конфигурации.

Режимы запуска

У любой базы два основных режима:

  • 🛠 Конфигуратор — здесь разработчик видит дерево метаданных, пишет код, рисует формы и макеты, обновляет конфигурацию.
  • 👤 1С:Предприятие — режим пользователя: ввод документов, отчёты, справочники.

Выбор режима — в окне запуска: выделите базу в списке и нажмите Конфигуратор.

Объекты метаданных, которые нужно знать сразу

  • 📚 Справочники — списки: номенклатура, контрагенты, сотрудники.
  • 📄 Документы — события с датой: поступление, реализация, оплата.
  • 📊 Регистры — таблицы, где хранятся итоги учёта. О них отдельный раздел.
  • 🔢 Перечисления — фиксированные списки значений: «Приход», «Расход».
  • ⚙️ Константы — одно значение на всю базу: основная организация, валюта учёта.
  • 🧩 Общие модули — общий код, который вызывают из разных мест.
  • 📈 Отчёты и обработки — выборка данных и сервисные действия.

Учебная версия платформы

Для обучения подойдёт бесплатная учебная версия платформы 1С:Предприятие 8.3. В ней есть конфигуратор и отладчик, работает один пользователь, есть ограничения на объём данных. Для учебных задач их хватает.

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

Встроенный язык 1С: что изучить в первую очередь

Язык 1С похож на Pascal и Visual Basic, ключевые слова русские (английские тоже поддерживаются). Типизация динамическая, переменные объявлять заранее не обязательно.

Минимальный набор конструкций

Процедура ПосчитатьСумму()
    Итог = 0;
    Для Сч = 1 По 10 Цикл
        Если Сч % 2 = 0 Тогда
            Итог = Итог + Сч;
        КонецЕсли;
    КонецЦикла;
    Сообщить("Сумма чётных: " + Формат(Итог, "ЧГ=0"));
КонецПроцедуры

Что из этого нужно уметь в первую неделю:

  1. Процедуры и функции, параметры, Возврат.
  2. Условия Если … ИначеЕсли … КонецЕсли и тернарный ?(Условие, А, Б).
  3. Циклы Для, Для Каждого … Из, Пока.
  4. Универсальные коллекции: Массив, Структура, Соответствие, ТаблицаЗначений.
  5. Обработку исключений Попытка … Исключение … КонецПопытки.
  6. Работу со строками и датами: СтрНайти, СтрШаблон, НачалоМесяца, ТекущаяДата.

Клиент и сервер

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

  • &НаКлиенте — код работает у пользователя, к базе напрямую не обращается.
  • &НаСервере — код работает на сервере, видит данные формы и базу.
  • &НаСервереБезКонтекста — сервер без передачи данных формы, самый быстрый вызов.
&НаКлиенте
Процедура ЗаполнитьЦену(Команда)
    Цена = ПолучитьЦенуНаСервере(Объект.Номенклатура);
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьЦенуНаСервере(Номенклатура)
    // запрос к регистру цен
    Возврат 0;
КонецФункции

Каждый вызов сервера с клиента — это обмен по сети. Десять вызовов в цикле на клиенте заметно тормозят форму. Собирайте данные за один вызов.

Модули объектов и события

Код в 1С почти всегда пишется в обработчиках событий. Самые частые:

  • ПередЗаписью — проверка и заполнение реквизитов перед сохранением.
  • ОбработкаПроведения — формирование движений документа по регистрам.
  • ПриСозданииНаСервере — настройка формы при открытии.
  • ОбработкаПроверкиЗаполнения — свои проверки обязательных полей.

Запросы в 1С: как правильно получать данные

Данные в 1С читают запросами. Язык запросов похож на SQL, но работает с объектами метаданных, а не с таблицами СУБД.

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    Товары.Номенклатура КАК Номенклатура,
|    СУММА(Товары.Количество) КАК Количество
|ИЗ
|    Документ.ПриходТовара.Товары КАК Товары
|ГДЕ
|    Товары.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
|СГРУППИРОВАТЬ ПО
|    Товары.Номенклатура";
Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(ТекущаяДата()));
Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(ТекущаяДата()));

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    Сообщить(Строка(Выборка.Номенклатура) + ": " + Формат(Выборка.Количество, "ЧГ=0"));
КонецЦикла;

Что отличает запросы 1С от SQL

  • 🔗 Разыменование через точку: Товары.Ссылка.Дата — платформа сама сделает соединение. Удобно, но каждая точка — это скрытый JOIN.
  • 📐 Виртуальные таблицы регистров: Остатки, Обороты, ОстаткиИОбороты, СрезПоследних. Их параметры (период, отбор) задают в скобках, а не в ГДЕ.
  • 🗂 Временные таблицы через ПОМЕСТИТЬ и менеджер временных таблиц — вместо вложенных запросов.
  • 🧾 Параметры &Имя — значения передают через УстановитьПараметр, а не склейкой строки.

Конструктор запроса

Писать текст вручную не обязательно. В модуле щёлкните правой кнопкой и выберите Конструктор запроса — откроется визуальный редактор с вкладками таблиц, полей, условий, группировок. Новичку он помогает понять структуру, но читать и править текст запроса руками всё равно придётся.

Система компоновки данных

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

Регистры — основа учёта в любой конфигурации 1С

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

Вид регистраДля чегоПример
Регистр сведенийЗначения, меняющиеся во времени или по измерениямЦены номенклатуры, курсы валют
Регистр накопления (остатки)Приход и расход, есть остаток на датуТовары на складах
Регистр накопления (обороты)Только обороты, без остаткаПродажи
Регистр бухгалтерииПроводки Дт/Кт по плану счетовХозрасчётный в Бухгалтерии 3.0
Регистр расчётаНачисления с периодами действияНачисления в ЗУП

Как документ пишет движения

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    Движения.ОстаткиТоваров.Записывать = Истина;
    Для Каждого Строка Из Товары Цикл
        Движение = Движения.ОстаткиТоваров.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
        Движение.Период = Дата;
        Движение.Номенклатура = Строка.Номенклатура;
        Движение.Склад = Склад;
        Движение.Количество = Строка.Количество;
    КонецЦикла;
КонецПроцедуры

Этот код можно не писать вручную: в документе есть Конструктор движений, он сгенерирует похожий текст. Но понимать каждую строку нужно.

Измерения, ресурсы, реквизиты

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

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

Инструменты разработчика 1С и отладка кода

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

ИнструментПлюсыМинусы
КонфигураторВстроен в платформу, всё в одном окне, на нём учит большинство курсовСлабая навигация по коду, неудобная работа в команде
1С:EDT (Enterprise Development Tools)Среда на базе Eclipse: проверки кода на лету, Git, рефакторингТребовательна к памяти, порог входа выше

Начинайте с конфигуратора. EDT имеет смысл, когда вы уже понимаете метаданные и работаете в команде с Git.

Отладчик

Отладка в конфигураторе:

  1. Поставьте точку останова на строке — клавиша F9.
  2. Запустите отладку — F5 или меню Отладка → Начать отладку.
  3. В пользовательском режиме выполните действие, которое вызывает код.
  4. Когда выполнение остановится, смотрите значения переменных через Табло или наведите курсор на переменную.
  5. Шаг с заходом в процедуру — F11, шаг без захода — F10.

Ещё три инструмента, которые экономят время

  • ⏱ Замер производительности — показывает, какие строки кода выполнялись дольше всего. Включается в меню Отладка.
  • 🔎 Консоль запросов — внешняя обработка, где можно выполнить запрос к базе и посмотреть результат. Без неё отлаживать сложные запросы неудобно.
  • ✅ Проверка синтаксиса — Ctrl+F7 в модуле. Расширенная проверка конфигурации находит обращения к несуществующим объектам.

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

Типовые конфигурации не стоит менять напрямую: после этого обновления ставить сложнее. Доработки делают расширениями (.cfe). Расширение подключается к базе поверх типовой конфигурации и переживает обновления. Механизм появился в платформе 8.3.6 и сейчас — основной способ дорабатывать типовые решения.

План обучения программированию 1С: от новичка до первой работы

Ориентир для человека, который занимается 1-2 часа в день.

Путь новичка в разработке 1С
  1. недели 1-3Объекты метаданных и встроенный язык: своя пустая база, справочники, документы
  2. недели 4-5Регистры накопления и сведений, проведение документов
  3. недели 6-8Запросы: виртуальные таблицы, временные таблицы, конструктор
  4. недели 9-10Управляемые формы, клиент-серверное взаимодействие
  5. недели 11-12Отчёты на СКД, печатные формы
  6. месяцы 4-6Типовая конфигурация: Бухгалтерия 3.0 или УТ 11, БСП, расширения
  7. от 6 месяцевСертификация «1С:Специалист» по платформе, первые реальные задачи

Учебная задача, на которой стоит набить руку

Соберите в пустой конфигурации:

  1. Справочники «Номенклатура» и «Склады».
  2. Документы «Приход товара» и «Расход товара» с табличной частью.
  3. Регистр накопления «Остатки товаров» (измерения: номенклатура, склад; ресурс: количество).
  4. Проведение обоих документов по регистру.
  5. Контроль остатка: расход не проводится, если товара не хватает.
  6. Отчёт на СКД «Остатки и обороты по складам».
  7. Печатную форму накладной.

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

Сертификация

  • 1С:Профессионал — тест на знание платформы или конкретной конфигурации, сдаётся в аккредитованных центрах. Хорош как промежуточная проверка.
  • 1С:Специалист — практический экзамен: решаете задачу в конфигураторе за ограниченное время. Его наличие работодатели ценят выше.

Где брать практику

  • 🧪 Задачи из сборников к экзаменам «1С:Специалист».
  • 🔍 Чтение кода типовых конфигураций: как сделан документ «Реализация товаров и услуг», общие модули БСП.
  • 💬 Решение чужих вопросов на профильных форумах разработчиков.
  • 🧾 Стандарты разработки 1С — свод правил оформления кода и запросов. Читайте его с первых месяцев, чтобы не переучиваться.

Ошибки новичков в программировании 1С

Проверьте себя
Где хранится остаток товара на складе?
Какая директива нужна, чтобы функция не тянула на сервер данные формы?
Где задают период для виртуальной таблицы Остатки?

Запрос в цикле

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

Разыменование длинными цепочками

Строка.Номенклатура.Родитель.Родитель.Наименование в коде — это несколько обращений к базе подряд. В запросе такие цепочки по составным полям порождают лишние соединения. Получайте нужные поля запросом сразу.

Правка типовой конфигурации напрямую

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

Отбор виртуальной таблицы в ГДЕ

Если условие по измерению записать в ГДЕ, а не в параметрах виртуальной таблицы, платформа сначала посчитает остатки по всем товарам, а потом отфильтрует. На большой базе разница во времени — в разы.

Учёба на рабочей базе

Не отлаживайте код и не меняйте конфигурацию в рабочей базе с данными организации. Сделайте копию: в конфигураторе Администрирование → Выгрузить информационную базу и загрузите файл .dt в отдельную базу. Загрузка .dt замещает все данные базы-приёмника, поэтому загружайте только в новую пустую базу.

Код без комментариев и стандартов

Через полгода свой же модуль на 800 строк без структуры не читается. Делите код на области #Область … #КонецОбласти, давайте понятные имена, комментируйте назначение экспортных процедур.

Частые вопросы о том, как начать программировать на 1С

Нужно ли знать бухгалтерию, чтобы программировать на 1С?
Для старта нет. Для работы с Бухгалтерией и ЗУП понимание учёта нужно: план счетов, проводки, НДС. Его набирают по ходу задач.
Можно ли выучить 1С без курсов?
Да. Учебная версия платформы, книги для начинающих разработчиков и задачи к экзамену «1С:Специалист» дают всё нужное. Курсы ускоряют путь за счёт проверки заданий.
Сколько времени нужно до первой работы?
Ориентировочно 4-8 месяцев при занятиях 1-2 часа в день. Решающий фактор — свои сделанные задачи, а не количество просмотренных уроков.
Писать на русском или английском синтаксисе?
На русском. Типовые конфигурации написаны на нём, и стандарты разработки ориентированы на русский вариант.
Конфигуратор или EDT для новичка?
Конфигуратор. EDT переходят, когда понятна модель метаданных и нужна работа с Git в команде.