Первая конфигурация на 1С 8.3: путь новичка от пустой базы до отчёта
Содержание
Чтобы программировать в 1С с нуля
, поставьте бесплатную учебную версию платформы 1С:Предприятие 8.3, создайте пустую информационную базу «без конфигурации» и откройте её в режиме Конфигуратор. Первый вечер — справочник, документ и регистр, второй — запрос и отчёт. Читать учебник без практики почти бесполезно: язык 1С учится руками.
Типичная история: бухгалтер годами работает в типовой базе, однажды просит программиста «добавить колонку в печатную форму» и понимает, что хочет делать такое сам. Ниже — маршрут, который проходит большинство разработчиков: от установки до первой формы и отладчика.
Что поставить для начала программирования в 1С
Для учёбы покупать лицензию не нужно. Фирма распространяет бесплатную учебную версию платформы — она предназначена именно для освоения разработки.
Что нужно знать про учебную версию:
- 🆓 бесплатная, без ключа защиты;
- 📦 работает только в файловом варианте базы;
- 📉 есть ограничения на объём данных — для учебных примеров хватает, для реального учёта нет;
- 🚫 рабочую базу предприятия в ней вести нельзя.
Создаём пустую базу
- Запустите 1С:Предприятие, в окне списка баз нажмите
Добавить. - Выберите
Создание новой информационной базы. - Отметьте вариант
Создание информационной базы без конфигурации для разработки новой конфигурации или загрузки выгруженной ранее информационной базы. - Укажите имя (например, «Учебная») и каталог на диске.
- Выделите базу в списке и нажмите
Конфигуратор. - В Конфигураторе:
Конфигурация → Открыть конфигурацию. Слева появится дерево метаданных.
Конфигуратор или EDT
| Инструмент | Для кого | Особенности |
|---|---|---|
| Конфигуратор | новичок, поддержка типовых | встроен в платформу, всё в одном окне |
| 1C:Enterprise Development Tools (EDT) | команды, крупные проекты | среда на базе Eclipse, работа с Git, требовательна к памяти |
Начинайте с Конфигуратора. В EDT имеет смысл переходить, когда вы уже понимаете метаданные и хотите работать с системой контроля версий.
Ещё пригодится учебная демо-конфигурация или типовая конфигурация в отдельной копии — чтобы смотреть, как написан «настоящий» код.
Как устроена конфигурация: объекты метаданных
Программирование в 1С начинается не с кода, а с метаданных. Вы описываете объекты в дереве, платформа сама создаёт таблицы в базе, формы по умолчанию и права. Код пишется только там, где нужна логика.
Главные объекты, которые нужно освоить первыми:
| Объект | Что хранит | Пример |
|---|---|---|
| Справочник | списки с кодом и наименованием | Номенклатура, Контрагенты |
| Документ | событие с датой и номером | Приход товара, Реализация |
| Перечисление | фиксированный набор значений | Виды оплаты |
| Регистр сведений | значения по измерениям и периоду | Цены номенклатуры |
| Регистр накопления | приход и расход, остатки и обороты | Остатки товаров |
| Отчёт | вывод данных пользователю | Ведомость по складу |
| Обработка | сервисное действие | Загрузка из Excel |
| Общий модуль | процедуры для всей конфигурации | Работа с ценами |
| Роль | права доступа | Кладовщик |
| Подсистема | раздел интерфейса | Склад |
Позже добавятся регистры бухгалтерии и расчёта, планы счетов, планы видов характеристик и бизнес-процессы. Для первых месяцев они не нужны.
Учебный пример: склад за один вечер
Соберите мини-конфигурацию — на ней удобно разбирать всё остальное:
- Справочник
Товары(стандартные реквизиты кода и наименования уже есть). - Регистр накопления
ОстаткиТоваров: вид «Остатки», измерениеТовар(типСправочникСсылка.Товары), ресурсКоличество(число). - Документ
ПриходТоварас табличной частьюТовары: колонкиТовариКоличество. - На вкладке
Движениядокумента отметьте регистрОстаткиТоваров. - Подсистема
Склад, в неё включите все три объекта. - Нажмите
F7(Конфигурация → Обновить конфигурацию базы данных), затемF5— запустится пользовательский режим.
Пока документ ничего не записывает в регистр: для этого нужен код.
Встроенный язык 1С: синтаксис и модули
Язык 1С похож на Pascal и Basic с русскими ключевыми словами. Есть и английский вариант синтаксиса, но типовые конфигурации написаны на русском.
Базовые конструкции
Процедура ПроверитьСумму(Сумма)
Если Сумма > 100000 Тогда
Сообщить("Крупная сумма");
ИначеЕсли Сумма = 0 Тогда
Сообщить("Сумма не заполнена");
Иначе
Сообщить("Сумма в норме");
КонецЕсли;
КонецПроцедуры
Функция СуммаСНДС(Сумма, Ставка)
Возврат Сумма + Сумма * Ставка / 100;
КонецФункции
Что нужно запомнить сразу:
- 🔹 каждая инструкция заканчивается точкой с запятой;
- 🔹 переменные не объявляют с типом — тип определяется значением;
- 🔹 циклы:
Для Сч = 1 По 10 Цикл,Для Каждого Элемент Из Коллекция Цикл,Пока Условие Цикл, все закрываютсяКонецЦикла; - 🔹 ошибки перехватывают через
Попытка … Исключение … КонецПопытки; - 🔹 регистр букв в именах не важен, но пишите имена так же, как в дереве метаданных.
Где живёт код
| Модуль | Когда выполняется |
|---|---|
| Модуль объекта | при записи, проведении, заполнении конкретного документа или элемента |
| Модуль менеджера | общие действия с объектом без экземпляра (печать, служебные функции) |
| Модуль формы | реакции на нажатия, изменения полей |
| Общий модуль | процедуры, которые вызывают из разных мест |
| Модуль сеанса, модуль приложения | при старте сеанса и программы |
Пишем проведение документа
Откройте модуль объекта документа ПриходТовара и добавьте обработчик. Его можно сгенерировать конструктором движений (на вкладке Движения кнопка Конструктор движений), но один раз стоит написать руками:
Процедура ОбработкаПроведения(Отказ, Режим)
Движения.ОстаткиТоваров.Записывать = Истина;
Для Каждого ТекСтрока Из Товары Цикл
Движение = Движения.ОстаткиТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Товар = ТекСтрока.Товар;
Движение.Количество = ТекСтрока.Количество;
КонецЦикла;
КонецПроцедуры
Проведите пару документов и откройте регистр через Все функции — увидите записи. Это и есть ядро любой учётной конфигурации.
Синтакс-помощник (Справка → Синтакс-помощник) — главный справочник новичка. Там описан каждый метод, параметры и доступность на клиенте или сервере.
Запросы и выборки: как читать данные
Данные в 1С читают запросами — языком, похожим на SQL. Обращаться в цикле к реквизитам ссылок можно, но на больших объёмах это медленно. Запрос забирает всё одной операцией.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Остатки.Товар КАК Товар,
| Остатки.КоличествоОстаток КАК Остаток
|ИЗ
| РегистрНакопления.ОстаткиТоваров.Остатки(&НаДату) КАК Остатки
|ГДЕ
| Остатки.КоличествоОстаток > 0";
Запрос.УстановитьПараметр("НаДату", ТекущаяДатаСеанса());
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(СтрШаблон("%1: %2", Выборка.Товар, Выборка.Остаток));
КонецЦикла;
Здесь три важные вещи:
- 📊
Остатки(&НаДату)— виртуальная таблица регистра. Есть ещёОборотыиОстаткиИОбороты, платформа считает их сама; - 🔑 значения передают параметрами через
УстановитьПараметр, а не склеивают в текст запроса; - 🔁
Выбрать()даёт выборку для обхода,Выгрузить()— таблицу значений целиком.
Конструктор запроса
Писать запросы
руками не обязательно. Внутри строки с текстом запроса щёлкните правой кнопкой и выберите Конструктор запроса. В нём таблицы, поля, условия и группировки собираются мышью, а текст формируется автоматически. Полезно сначала собрать запрос конструктором, а потом прочитать получившийся текст.
Главная ошибка новичка — запрос внутри цикла. Если для каждой из 5 000 строк выполняется отдельный запрос, отчёт будет думать минутами. Соберите данные одним запросом с нужными условиями.
Отчёт на системе компоновки данных
Создайте объект Отчёт, откройте основную схему компоновки данных и вставьте набор данных «запрос». Группировки, отборы и итоги настраиваются на вкладке настроек без строчки кода. Большинство отчётов типовых конфигураций сделаны именно так.
Формы и клиент-серверная модель
В 8.3 используются управляемые формы. Платформа строит их по описанию: вы задаёте реквизиты формы, элементы и команды, а внешний вид подстраивается под интерфейс «Такси», веб-клиент и тонкий клиент.
Новичок спотыкается не о вёрстку, а о разделение кода на клиент и сервер. Каждая процедура в модуле формы помечается директивой компиляции:
| Директива | Где выполняется | Доступ к базе |
|---|---|---|
&НаКлиенте | на компьютере пользователя | нет |
&НаСервере | на сервере, с данными формы | есть |
&НаСервереБезКонтекста | на сервере, без данных формы | есть |
&НаКлиентеНаСервереБезКонтекста | там, откуда вызвали | зависит от места |
Пример: кнопка на форме, которая показывает общий остаток склада.
&НаКлиенте
Процедура ПоказатьОстаток(Команда)
Итог = ОстатокНаСервере();
Сообщить(СтрШаблон("Всего на складе: %1", Итог));
КонецПроцедуры
&НаСервереБезКонтекста
Функция ОстатокНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЕСТЬNULL(СУММА(Остатки.КоличествоОстаток), 0) КАК Всего
|ИЗ
| РегистрНакопления.ОстаткиТоваров.Остатки КАК Остатки";
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
Возврат Выборка.Всего;
КонецФункции
Чтобы кнопка появилась, создайте в форме команду ПоказатьОстаток, укажите ей действие и перетащите команду в командную панель или на форму.
Вызов сервера с клиента — дорогая операция. Старайтесь, чтобы одно действие пользователя давало один серверный вызов, а не пять.
Отладка, проверка и перенос конфигурации
Отладчик
Ставьте точку останова (F9) на нужной строке и запускайте отладку (F5). Выполнение остановится, и можно смотреть значения переменных.
| Клавиша | Действие |
|---|---|
F9 | поставить или снять точку останова |
F10 | шагнуть через (не заходя в процедуру) |
F11 | шагнуть в процедуру |
Shift+F9 | вычислить выражение |
Наведите курсор на переменную — увидите её значение. Табло позволяет следить за несколькими выражениями сразу.
Проверки перед сдачей
- ✅ синтаксический контроль модуля (кнопка проверки на панели модуля);
- ✅
Конфигурация → Проверка конфигурации— находит битые ссылки и ошибки в метаданных; - ✅ замер производительности в отладке — покажет, какая строка съедает время;
- ✅ автотесты: для Конфигуратора популярен Vanessa-Automation (сценарии на языке Gherkin), для EDT — YAxUnit.
Как перенести результат
Готовую конфигурацию сохраняют в файл через Конфигурация → Сохранить конфигурацию в файл — получится .cf. Базу целиком с данными выгружают через Администрирование → Выгрузить информационную базу в файл .dt.
Если над конфигурацией работают несколько человек, подключают хранилище конфигурации или ведут проект в EDT с Git. Для доступа через браузер базу публикуют на веб-сервере (Apache или IIS) из Конфигуратора: Администрирование → Публикация на веб-сервере.
Если вы тренируетесь на копии типовой конфигурации — работайте только в копии. Никогда не учитесь в рабочей базе бухгалтерии. Изменения в типовой конфигурации снимают её с полной поддержки и усложняют обновления; для доработок типовых используют расширения конфигурации.
План обучения программированию 1С: что учить и в каком порядке
Ориентировочный маршрут при занятиях 1-2 часа в день:
- Недели 1-2. Метаданные: справочники, документы, перечисления, регистры накопления. Учебная мини-конфигурация.
- Недели 3-4. Язык: условия, циклы, коллекции (массив, структура, соответствие, таблица значений), модули объектов.
- Недели 5-6. Запросы: соединения, группировки, виртуальные таблицы регистров, временные таблицы.
- Недели 7-8. Управляемые формы и директивы компиляции, система компоновки данных.
- Дальше. Права и роли, расширения, обмены данными, обработки загрузки, работа с типовыми конфигурациями.
Параллельно полезно разобраться в предметной области: что такое проводка, остаток, оборот. Программисту 1С без понимания учёта трудно говорить с бухгалтером.
Классическое пособие для старта — «1С:Предприятие 8.3. Практическое пособие разработчика» (М. Радченко, Е. Хрусталёва): в нём по шагам собирается конфигурация с нуля. Для проверки знаний есть экзамен «1С:Профессионал» по платформе, а после него — «1С:Специалист».