С нуля до первой доработки: из чего состоит разработка на 1С и в каком порядке её осваивать
Содержание
Чтобы разобраться в программировании 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"));
КонецПроцедуры
Что из этого нужно уметь в первую неделю:
- Процедуры и функции, параметры,
Возврат. - Условия
Если … ИначеЕсли … КонецЕслии тернарный?(Условие, А, Б). - Циклы
Для,Для Каждого … Из,Пока. - Универсальные коллекции:
Массив,Структура,Соответствие,ТаблицаЗначений. - Обработку исключений
Попытка … Исключение … КонецПопытки. - Работу со строками и датами:
СтрНайти,СтрШаблон,НачалоМесяца,ТекущаяДата.
Клиент и сервер
Главный барьер для тех, кто пришёл из других языков, — разделение кода на клиентский и серверный. Модуль формы выполняется частично на клиенте, частично на сервере. Это задают директивы компиляции:
&НаКлиенте— код работает у пользователя, к базе напрямую не обращается.&НаСервере— код работает на сервере, видит данные формы и базу.&НаСервереБезКонтекста— сервер без передачи данных формы, самый быстрый вызов.
&НаКлиенте
Процедура ЗаполнитьЦену(Команда)
Цена = ПолучитьЦенуНаСервере(Объект.Номенклатура);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьЦенуНаСервере(Номенклатура)
// запрос к регистру цен
Возврат 0;
КонецФункции
Каждый вызов сервера с клиента — это обмен по сети. Десять вызовов в цикле на клиенте заметно тормозят форму. Собирайте данные за один вызов.
Модули объектов и события
Код в 1С почти всегда пишется в обработчиках событий. Самые частые:
ПередЗаписью— проверка и заполнение реквизитов перед сохранением.ОбработкаПроведения— формирование движений документа по регистрам.ПриСозданииНаСервере— настройка формы при открытии.ОбработкаПроверкиЗаполнения— свои проверки обязательных полей.
Запросы в 1С: как правильно получать данные
Данные в 1С читают запросами. Язык запросов похож на SQL, но работает с объектами метаданных, а не с таблицами СУБД.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| СУММА(Товары.Количество) КАК Количество
|ИЗ
| Документ.ПриходТовара.Товары КАК Товары
|ГДЕ
| Товары.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
|СГРУППИРОВАТЬ ПО
| Товары.Номенклатура";
Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(ТекущаяДата()));
Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(ТекущаяДата()));
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Строка(Выборка.Номенклатура) + ": " + Формат(Выборка.Количество, "ЧГ=0"));
КонецЦикла;
Что отличает запросы 1С от SQL
- 🔗 Разыменование через точку:
Товары.Ссылка.Дата— платформа сама сделает соединение. Удобно, но каждая точка — это скрытый JOIN. - 📐 Виртуальные таблицы регистров:
Остатки,Обороты,ОстаткиИОбороты,СрезПоследних. Их параметры (период, отбор) задают в скобках, а не вГДЕ. - 🗂 Временные таблицы через
ПОМЕСТИТЬи менеджер временных таблиц — вместо вложенных запросов. - 🧾 Параметры
&Имя— значения передают черезУстановитьПараметр, а не склейкой строки.
Конструктор запроса
Писать текст вручную не обязательно. В модуле щёлкните правой кнопкой и выберите Конструктор запроса — откроется визуальный редактор с вкладками таблиц, полей, условий, группировок. Новичку он помогает понять структуру, но читать и править текст запроса руками всё равно придётся.
Система компоновки данных
Отчёты в типовых конфигурациях строятся на СКД. Это механизм, где запрос, группировки, отборы и оформление задаются в схеме, а пользователь сам меняет настройки отчёта. Осваивайте СКД после основ запросов: без них схема непонятна.
Регистры — основа учёта в любой конфигурации 1С
Документ — это событие. Итоги учёта (сколько товара на складе, какой долг у контрагента) хранятся не в документах, а в регистрах. Документ при проведении записывает в регистры движения.
| Вид регистра | Для чего | Пример |
|---|---|---|
| Регистр сведений | Значения, меняющиеся во времени или по измерениям | Цены номенклатуры, курсы валют |
| Регистр накопления (остатки) | Приход и расход, есть остаток на дату | Товары на складах |
| Регистр накопления (обороты) | Только обороты, без остатка | Продажи |
| Регистр бухгалтерии | Проводки Дт/Кт по плану счетов | Хозрасчётный в Бухгалтерии 3.0 |
| Регистр расчёта | Начисления с периодами действия | Начисления в ЗУП |
Как документ пишет движения
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Движения.ОстаткиТоваров.Записывать = Истина;
Для Каждого Строка Из Товары Цикл
Движение = Движения.ОстаткиТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Номенклатура = Строка.Номенклатура;
Движение.Склад = Склад;
Движение.Количество = Строка.Количество;
КонецЦикла;
КонецПроцедуры
Этот код можно не писать вручную: в документе есть Конструктор движений, он сгенерирует похожий текст. Но понимать каждую строку нужно.
Измерения, ресурсы, реквизиты
- Измерения — разрезы учёта: склад, номенклатура.
- Ресурсы — числа, которые суммируются: количество, сумма.
- Реквизиты — дополнительная информация, по ней итоги не считаются.
Хороший тест на понимание: объясните себе, почему отчёт «Остатки на складах» строят по регистру, а не перебирают все приходы и расходы. Если ответ «так быстрее, потому что платформа хранит итоги» — вы поняли главное.
Инструменты разработчика 1С и отладка кода
Конфигуратор и EDT
| Инструмент | Плюсы | Минусы |
|---|---|---|
| Конфигуратор | Встроен в платформу, всё в одном окне, на нём учит большинство курсов | Слабая навигация по коду, неудобная работа в команде |
| 1С:EDT (Enterprise Development Tools) | Среда на базе Eclipse: проверки кода на лету, Git, рефакторинг | Требовательна к памяти, порог входа выше |
Начинайте с конфигуратора. EDT имеет смысл, когда вы уже понимаете метаданные и работаете в команде с Git.
Отладчик
Отладка в конфигураторе:
- Поставьте точку останова на строке — клавиша
F9. - Запустите отладку —
F5или менюОтладка → Начать отладку. - В пользовательском режиме выполните действие, которое вызывает код.
- Когда выполнение остановится, смотрите значения переменных через
Таблоили наведите курсор на переменную. - Шаг с заходом в процедуру —
F11, шаг без захода —F10.
Ещё три инструмента, которые экономят время
- ⏱ Замер производительности — показывает, какие строки кода выполнялись дольше всего. Включается в меню
Отладка. - 🔎 Консоль запросов — внешняя обработка, где можно выполнить запрос к базе и посмотреть результат. Без неё отлаживать сложные запросы неудобно.
- ✅ Проверка синтаксиса —
Ctrl+F7в модуле. Расширенная проверка конфигурации находит обращения к несуществующим объектам.
Расширения конфигурации
Типовые конфигурации не стоит менять напрямую: после этого обновления ставить сложнее. Доработки делают расширениями (.cfe). Расширение подключается к базе поверх типовой конфигурации и переживает обновления. Механизм появился в платформе 8.3.6 и сейчас — основной способ дорабатывать типовые решения.
План обучения программированию 1С: от новичка до первой работы
Ориентир для человека, который занимается 1-2 часа в день.
- недели 1-3Объекты метаданных и встроенный язык: своя пустая база, справочники, документы
- недели 4-5Регистры накопления и сведений, проведение документов
- недели 6-8Запросы: виртуальные таблицы, временные таблицы, конструктор
- недели 9-10Управляемые формы, клиент-серверное взаимодействие
- недели 11-12Отчёты на СКД, печатные формы
- месяцы 4-6Типовая конфигурация: Бухгалтерия 3.0 или УТ 11, БСП, расширения
- от 6 месяцевСертификация «1С:Специалист» по платформе, первые реальные задачи
Учебная задача, на которой стоит набить руку
Соберите в пустой конфигурации:
- Справочники «Номенклатура» и «Склады».
- Документы «Приход товара» и «Расход товара» с табличной частью.
- Регистр накопления «Остатки товаров» (измерения: номенклатура, склад; ресурс: количество).
- Проведение обоих документов по регистру.
- Контроль остатка: расход не проводится, если товара не хватает.
- Отчёт на СКД «Остатки и обороты по складам».
- Печатную форму накладной.
Пятый пункт — первая настоящая задача программиста 1С. В ней сразу видны блокировки, виртуальная таблица Остатки и порядок записи движений.
Сертификация
- 1С:Профессионал — тест на знание платформы или конкретной конфигурации, сдаётся в аккредитованных центрах. Хорош как промежуточная проверка.
- 1С:Специалист — практический экзамен: решаете задачу в конфигураторе за ограниченное время. Его наличие работодатели ценят выше.
Где брать практику
- 🧪 Задачи из сборников к экзаменам «1С:Специалист».
- 🔍 Чтение кода типовых конфигураций: как сделан документ «Реализация товаров и услуг», общие модули БСП.
- 💬 Решение чужих вопросов на профильных форумах разработчиков.
- 🧾 Стандарты разработки 1С — свод правил оформления кода и запросов. Читайте его с первых месяцев, чтобы не переучиваться.
Ошибки новичков в программировании 1С
Запрос в цикле
Самая дорогая ошибка. Перебирают тысячу строк и для каждой выполняют отдельный запрос. Правильно — собрать всё одним запросом с соединением или временной таблицей.
Разыменование длинными цепочками
Строка.Номенклатура.Родитель.Родитель.Наименование в коде — это несколько обращений к базе подряд. В запросе такие цепочки по составным полям порождают лишние соединения. Получайте нужные поля запросом сразу.
Правка типовой конфигурации напрямую
Сняли конфигурацию с поддержки, поправили модуль — и через месяц обновление не ставится без ручного сравнения и объединения. Доработки — в расширение.
Отбор виртуальной таблицы в ГДЕ
Если условие по измерению записать в ГДЕ, а не в параметрах виртуальной таблицы, платформа сначала посчитает остатки по всем товарам, а потом отфильтрует. На большой базе разница во времени — в разы.
Учёба на рабочей базе
Не отлаживайте код и не меняйте конфигурацию в рабочей базе с данными организации. Сделайте копию: в конфигураторе Администрирование → Выгрузить информационную базу и загрузите файл .dt в отдельную базу. Загрузка .dt замещает все данные базы-приёмника, поэтому загружайте только в новую пустую базу.
Код без комментариев и стандартов
Через полгода свой же модуль на 800 строк без структуры не читается. Делите код на области #Область … #КонецОбласти, давайте понятные имена, комментируйте назначение экспортных процедур.