Первая конфигурация на 1С 8.3: путь новичка от пустой базы до отчёта

· 9 мин

Содержание

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

Типичная история: бухгалтер годами работает в типовой базе, однажды просит программиста «добавить колонку в печатную форму» и понимает, что хочет делать такое сам. Ниже — маршрут, который проходит большинство разработчиков: от установки до первой формы и отладчика.

Что поставить для начала программирования в 1С

Для учёбы покупать лицензию не нужно. Фирма распространяет бесплатную учебную версию платформы — она предназначена именно для освоения разработки.

Что нужно знать про учебную версию:

  • 🆓 бесплатная, без ключа защиты;
  • 📦 работает только в файловом варианте базы;
  • 📉 есть ограничения на объём данных — для учебных примеров хватает, для реального учёта нет;
  • 🚫 рабочую базу предприятия в ней вести нельзя.

Создаём пустую базу

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

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

ИнструментДля когоОсобенности
Конфигураторновичок, поддержка типовыхвстроен в платформу, всё в одном окне
1C:Enterprise Development Tools (EDT)команды, крупные проектысреда на базе Eclipse, работа с Git, требовательна к памяти

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

Ещё пригодится учебная демо-конфигурация или типовая конфигурация в отдельной копии — чтобы смотреть, как написан «настоящий» код.

Как устроена конфигурация: объекты метаданных

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

Главные объекты, которые нужно освоить первыми:

ОбъектЧто хранитПример
Справочниксписки с кодом и наименованиемНоменклатура, Контрагенты
Документсобытие с датой и номеромПриход товара, Реализация
Перечислениефиксированный набор значенийВиды оплаты
Регистр сведенийзначения по измерениям и периодуЦены номенклатуры
Регистр накопленияприход и расход, остатки и оборотыОстатки товаров
Отчётвывод данных пользователюВедомость по складу
Обработкасервисное действиеЗагрузка из Excel
Общий модульпроцедуры для всей конфигурацииРабота с ценами
Рольправа доступаКладовщик
Подсистемараздел интерфейсаСклад

Позже добавятся регистры бухгалтерии и расчёта, планы счетов, планы видов характеристик и бизнес-процессы. Для первых месяцев они не нужны.

Учебный пример: склад за один вечер

Соберите мини-конфигурацию — на ней удобно разбирать всё остальное:

  1. Справочник Товары (стандартные реквизиты кода и наименования уже есть).
  2. Регистр накопления ОстаткиТоваров: вид «Остатки», измерение Товар (тип СправочникСсылка.Товары), ресурс Количество (число).
  3. Документ ПриходТовара с табличной частью Товары: колонки Товар и Количество.
  4. На вкладке Движения документа отметьте регистр ОстаткиТоваров.
  5. Подсистема Склад, в неё включите все три объекта.
  6. Нажмите 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. Недели 1-2. Метаданные: справочники, документы, перечисления, регистры накопления. Учебная мини-конфигурация.
  2. Недели 3-4. Язык: условия, циклы, коллекции (массив, структура, соответствие, таблица значений), модули объектов.
  3. Недели 5-6. Запросы: соединения, группировки, виртуальные таблицы регистров, временные таблицы.
  4. Недели 7-8. Управляемые формы и директивы компиляции, система компоновки данных.
  5. Дальше. Права и роли, расширения, обмены данными, обработки загрузки, работа с типовыми конфигурациями.

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

Классическое пособие для старта — «1С:Предприятие 8.3. Практическое пособие разработчика» (М. Радченко, Е. Хрусталёва): в нём по шагам собирается конфигурация с нуля. Для проверки знаний есть экзамен «1С:Профессионал» по платформе, а после него — «1С:Специалист».

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

Частые вопросы начинающих

Сколько времени нужно, чтобы стать программистом 1С с нуля?
При регулярных занятиях базовый уровень — простые доработки, отчёты, обработки — достигают за 3-6 месяцев. Уверенная работа с типовыми конфигурациями приходит с реальными задачами, обычно за год.
Нужно ли знать бухгалтерию, чтобы программировать в 1С?
Для старта — нет. Но большинство задач связано с учётом, поэтому понимать проводки, остатки и обороты придётся. Без этого трудно понять, что просит заказчик.
Можно ли писать на 1С на английском языке?
Да, у встроенного языка и языка запросов есть английский синтаксис. Но типовые конфигурации и почти вся документация на русском, поэтому учить лучше русский вариант.
Чем учебная версия отличается от обычной платформы?
Она бесплатна, работает только с файловыми базами и ограничивает объём данных. Конфигуратор и язык те же, поэтому навыки полностью переносятся на рабочую платформу.
Подойдёт ли опыт на Python или Java?
Подойдёт: логика, алгоритмы и SQL пригодятся сразу. Переучиваться придётся в другом — в 1С много делается через метаданные и конструкторы, а не кодом, и всегда нужно помнить, где выполняется процедура.