С чего начать разработчику 1С: платформа, язык и первые шаги
Содержание
Начать можно сегодня и бесплатно: скачайте учебную версию платформы 1С:Предприятие 8.3, откройте пустую информационную базу в режиме Конфигуратор и создайте первый справочник. Писать на встроенном языке вы будете уже в первый вечер — платформа не требует компилятора, сервера и покупки лицензии для обучения.
Путь разработчика 1С отличается от классического программирования. Здесь вы не рисуете интерфейс с нуля и не пишете работу с базой данных руками — платформа делает это сама по описанию объектов. Ваша задача — грамотно описать метаданные (что хранить) и дописать поведение на встроенном языке (как это считать и показать). Поэтому учиться удобно сверху вниз: сначала объекты конфигурации, потом язык, потом запросы и формы.
Ниже — рабочий порядок освоения: от установки до уровня, с которым берут на первую работу. Каждый блок — это навык, который проверяется конкретной задачей, а не просто теория.
Что поставить на компьютер и в каком режиме работать
Для старта хватит одного ноутбука. Нужны две вещи: платформа и среда разработки.
Платформа. Поставьте учебную версию 1С:Предприятие 8.3 — она бесплатна и предназначена именно для обучения. Ограничения учебной версии: работает только файловый вариант, размер базы и число объектов ограничены, периодически вставляются паузы. Для учёбы этого достаточно — все механизмы языка, метаданных и запросов доступны полностью.
Среда разработки. Их две, и выбор влияет на привычки:
Конфигуратор— классический инструмент, входит в поставку платформы. Здесь работает большинство специалистов, его знание спрашивают на собеседованиях. Начинайте с него.1C:EDT(1C:Enterprise Development Tools) — современная среда на базе Eclipse: Git, рефакторинг, сравнение версий. Удобна для командной разработки, но новичку добавляет лишний слой. Освоите позже.
Не ставьте EDT первым инструментом. Сначала научитесь видеть дерево конфигурации в Конфигураторе — это базовая картина мира 1С-разработчика.
Режимов запуска базы два, и их нельзя путать:
| Режим | Для чего | Что делаете |
|---|---|---|
1С:Предприятие | работа пользователя | заводите документы, смотрите отчёты, тестируете результат |
Конфигуратор | разработка | меняете метаданные, пишете код, отлаживаете |
Монопольный доступ к базе нужен не всегда — только для изменения структуры данных (обновление конфигурации
базы данных), загрузки .dt, тестирования и исправления. Код в модулях можно править и при подключённых пользователях, применяя изменения без реструктуризации.
Встроенный язык: синтаксис и первая процедура
Встроенный язык 1С — простой и русскоязычный. Есть и английские аналоги всех операторов, но в России пишут по-русски, так принято в коде типовых конфигураций.
Базовые правила, которые закрывают 80% кода новичка:
- строки — в двойных кавычках:
"Привет"; - операторы завершаются точкой с запятой
;; - переменные объявлять заранее не обязательно, тип определяется при присваивании;
- процедуры и функции — блоками
Процедура … КонецПроцедурыиФункция … КонецФункции.
Первый код, который можно запустить прямо из модуля:
Процедура ПоказатьПриветствие()
Имя = "мир";
Сообщить("Привет, " + Имя + "!");
КонецПроцедуры
Циклы и условия выглядят привычно. Вот обход коллекции — обратите внимание на оператор Для Каждого:
Итого = 0;
Для Каждого Строка Из ТаблицаТоваров Цикл
Если Строка.Количество > 0 Тогда
Итого = Итого + Строка.Сумма;
КонецЕсли;
КонецЦикла;
Сообщить("Итого: " + Формат(Итого, "ЧГ=0; ЧДЦ=2"));
Число со строкой напрямую не склеивайте в денежных суммах — оборачивайте в Формат(...), иначе получите системное представление с лишними знаками.
Что освоить в языке по порядку:
- Типы данных: число, строка, дата, булево,
Неопределено. - Коллекции: массив, структура, соответствие, таблица значений.
- Работа с датами:
НачалоДня,КонецМесяца,ДобавитьМесяц. - Обработка исключений:
Попытка … Исключение … КонецПопытки. - Общие модули — куда выносят переиспользуемые функции.
Повторяющийся код выносите в общие модули. У модуля есть флаги контекста — «Клиент», «Сервер», «Вызов сервера», — и они определяют, откуда функцию можно вызвать. Это та же клиент-серверная логика, что и на формах, только на уровне всей конфигурации. Привыкайте складывать переиспользуемые функции туда с самого начала, а не копировать их по модулям объектов.
Отлаживайте код сразу. Поставьте точку останова (клавиша F9 на строке), запустите под отладкой и смотрите значения переменных в окне Табло. Умение читать стек вызовов и значения на паузе важнее, чем знание всех функций наизусть.
Метаданные: справочники, документы и регистры
Это сердце 1С. Конфигурация — это дерево объектов метаданных, и платформа по нему сама строит таблицы базы, формы и команды. Понимание назначения каждого вида объектов — ключевой навык.
Основные виды объектов и когда их применяют:
- Справочники — списки условно-постоянных данных: номенклатура, контрагенты, сотрудники, склады.
- Документы — события хозяйственной жизни с датой: поступление товаров, начисление зарплаты, оплата. Документ умеет проводиться — записывать движения в регистры.
- Регистры накопления — хранят количественные и суммовые остатки и обороты: товары на складах, взаиморасчёты.
- Регистры сведений — хранят значения, привязанные к набору измерений: курсы валют по датам, цены номенклатуры.
- Регистры бухгалтерии — проводки по плану счетов.
- Перечисления — жёсткие наборы значений, заданные разработчиком: статусы, виды операций.
- Отчёты и обработки — для показа данных и сервисных действий.
Логику поведения объекта пишут в его модуле. Самое частое место для новичка — модуль документа и событие ОбработкаПроведения, где документ формирует движения:
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Движения.ТоварыНаСкладах.Записывать = Истина;
Для Каждого СтрокаТовары Из Товары Цикл
Движение = Движения.ТоварыНаСкладах.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Номенклатура = СтрокаТовары.Номенклатура;
Движение.Количество = СтрокаТовары.Количество;
КонецЦикла;
КонецПроцедуры
Учебная задача, которая собирает всё вместе: сделайте справочник «Номенклатура», документ «Поступление товаров» с табличной частью и регистр накопления остатков, и проведите документ так, чтобы остатки увеличивались. Когда это заработает — вы поняли базовую механику учёта в 1С.
Запросы: как выбирать данные из базы
Перебирать справочники циклом в коде — медленно и неправильно. Данные в 1С получают запросами на языке запросов. Он похож на SQL, но работает поверх объектов метаданных, а не таблиц напрямую.
Простой запрос — получить активную номенклатуру:
ВЫБРАТЬ
Номенклатура.Наименование КАК Наименование,
Номенклатура.Артикул КАК Артикул
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
НЕ Номенклатура.ПометкаУдаления
УПОРЯДОЧИТЬ ПО
Наименование
Выполняется запрос из кода через объект Запрос:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ Ссылка, Наименование
|ИЗ Справочник.Номенклатура
|ГДЕ НЕ ПометкаУдаления";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Наименование);
КонецЦикла;
Что обязательно освоить в запросах:
- Параметры —
&ДатаНачала, задаются черезЗапрос.УстановитьПараметр(...). Значения в текст запроса не подставляют строками. - Соединения —
ЛЕВОЕ СОЕДИНЕНИЕ, чтобы связать документ со справочником. - Группировки и агрегаты —
СГРУППИРОВАТЬ ПО,СУММА,КОЛИЧЕСТВО. - Виртуальные таблицы регистров — главный приём 1С. Остатки берут не перебором движений, а из виртуальной таблицы
РегистрНакопления.ТоварыНаСкладах.Остатки. Платформа сама посчитает итоги на дату. - Временные таблицы и пакетные запросы — для сложной выборки в несколько шагов.
Остатки и обороты всегда получайте через виртуальные таблицы регистров, а не суммированием документов в цикле. На реальной базе ручной перебор будет работать минутами вместо долей секунды.
Удобный инструмент на этом этапе — конструктор запроса (правая кнопка в модуле → собрать запрос визуально) и консоль запросов из состава инструментов разработчика. Они помогают увидеть, какие таблицы и поля вообще доступны.
Как только запросы перестанут пугать, переходите к СКД — системе компоновки данных. Это механизм построения отчётов: вы пишете запрос, а группировки, отборы, сортировки и оформление пользователь настраивает сам. Почти все отчёты в типовых конфигурациях сделаны на СКД, и умение собрать отчёт на ней — обязательный навык для junior. Начните с простого: один запрос, одна группировка, вывод итогов.
Управляемые формы и клиент-серверная модель
Интерфейс в 8.3 строят на управляемых формах. Их принципиальное отличие — код выполняется в двух местах, и это нужно держать в голове постоянно.
- Клиент — браузер или тонкий клиент пользователя. Здесь нет прямого доступа к базе данных.
- Сервер — там, где лежат данные. Только серверный код может читать и писать в базу.
Поэтому у каждой процедуры в модуле формы стоит директива компиляции, которая говорит, где она исполняется:
&НаКлиенте
Процедура РассчитатьИтог(Команда)
РассчитатьИтогНаСервере();
КонецПроцедуры
&НаСервере
Процедура РассчитатьИтогНаСервере()
// здесь доступны запросы и объекты базы
КонецПроцедуры
Главные директивы, которые нужно различать:
&НаКлиенте— реакция на действия пользователя: нажатия, ввод в поля.&НаСервере— работа с данными; получает и возвращает контекст формы, это «дорогой» вызов.&НаСервереБезКонтекста— серверный расчёт, которому не нужны данные формы. Самый экономичный серверный вызов, предпочитайте его.
Сама форма состоит из трёх вещей: реквизиты (данные формы), элементы (как они показаны на экране) и команды (кнопки и их обработчики). Платформа умеет собрать форму автоматически, а разработчик правит её под задачу.
Правило для новичка простое: минимизируйте переходы клиент↔сервер. Не делайте серверный вызов внутри цикла по строкам таблицы — соберите данные и обратитесь к серверу один раз.
Отдельно разберитесь с событиями формы: ПриСозданииНаСервере (форма открывается — здесь заполняют начальные значения), ПриИзмененииНаКлиенте у поля (пересчёт при вводе) и обработчики команд. Через эти события проходит почти вся логика интерфейса, и собеседование по формам обычно крутится именно вокруг них и директив компиляции.
План обучения и как выйти на первую работу
Реалистичный срок до уровня junior при занятиях по вечерам — три-шесть месяцев. Порядок, который не даёт застрять:
- Месяц 1. Платформа, Конфигуратор, встроенный язык, простые объекты: справочник + документ + форма.
- Месяц 2. Регистры и проведение документов. Учебная конфигурация учёта «с нуля».
- Месяц 3. Язык запросов, виртуальные таблицы, отчёты на СКД (система компоновки данных).
- Месяц 4+. Управляемые формы глубже, обмены данными, доработка типовых конфигураций без снятия с поддержки (расширения конфигурации ).
Сертификации, которые ценят работодатели:
- 1С:Профессионал — базовый уровень, проверяет знание платформы. Реально сдать после 2-3 месяцев учёбы.
- 1С:Специалист — практический экзамен: решить задачу на конфигурирование за ограниченное время. Это планка для уверенного junior/middle.
- 1С:Эксперт — высший уровень, про производительность и архитектуру нагруженных систем.
Что добавить в резюме помимо корочек: ссылку на учебный проект (конфигурацию в выгрузке .dt или репозиторий EDT с Git), примеры отчётов на СКД и понимание расширений конфигурации — без них на типовых базах сегодня никуда.
Главный двигатель на старте — практика на своих задачах, а не чтение теории подряд. Придумайте маленькую прикладную базу (учёт личных финансов, склад для хобби, список задач) и доводите её до рабочего состояния. Застряли — ищите ответ по тексту ошибки и разбирайте, как похожее сделано в типовой конфигурации: чтение чужого кода учит быстрее любого учебника.
Учитесь сразу на доработке типовых конфигураций (Бухгалтерия, ЗУП, УТ) через расширения, а не только на пустых базах. Умение дорабатывать чужую конфигурацию, не ломая обновления, — то, за что платят.