Своя конфигурация на платформе 1С:Предприятие 8.3 — от пустой базы до файла .cf

· 10 мин

Содержание

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

«Программа» в мире 1С называется конфигурацией. Платформа даёт базу данных, формы, отчёты и права. Разработчик описывает объекты и бизнес-логику. Ниже — путь на сквозном примере: мини-учёт товаров на складе с приходом, расходом и отчётом об остатках. Его можно собрать за вечер даже без опыта программирования.

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

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

Что понадобится:

  • 💻 Компьютер с Windows 10/11 или Linux, 4 ГБ памяти и больше.
  • 📦 Дистрибутив платформы 8.3 (учебная версия или коммерческая).
  • 📁 Пустая папка для файловой базы, например D:\Bases\Sklad.
  • ⏱ Время: 2–3 часа на первый работающий прототип.

Создание базы без конфигурации

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

В Конфигураторе выполните Конфигурация → Открыть конфигурацию. Слева появится дерево: «Общие», «Константы», «Справочники», «Документы», «Регистры накопления» и другие ветки. Пока они пустые.

Сразу задайте свойства корня конфигурации: двойной щелчок по верхнему узлу, поля «Имя», «Синоним», «Версия» (например, 1.0.0.1) и «Поставщик». Версия пригодится, когда начнёте выпускать обновления.

Альтернатива Конфигуратору — среда 1С:EDT на базе Eclipse. Она удобнее для командной работы и Git, но тяжелее и сложнее для старта. Первую программу проще собрать в Конфигураторе.

Проектирование структуры данных: справочники, документы и регистры

Главная ошибка новичка — сразу писать код. В 1С сначала проектируют объекты, а код занимает малую часть работы. Разберите задачу на три вида сущностей.

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

Справочники

  1. Щёлкните правой кнопкой по ветке «Справочники» → Добавить.
  2. Имя — Номенклатура, синоним — «Номенклатура».
  3. На вкладке «Данные» задайте длину кода и наименования (например, 9 и 100 символов).
  4. Добавьте реквизит ЕдиницаИзмерения (строка, 10) и Цена (число 15.2).
  5. Так же создайте справочник Склады.

Если номенклатуры будет много, на вкладке «Иерархия» включите иерархический справочник — появятся папки.

Документы

Создайте документ ПриходнаяНакладная:

  • 🏷 реквизит шапки Склад с типом СправочникСсылка.Склады;
  • 📋 табличная часть Товары с реквизитами Номенклатура (СправочникСсылка.Номенклатура), Количество (число 15.3), Цена и Сумма (число 15.2).

Скопируйте его (правая кнопка → Копировать) и переименуйте в РасходнаяНакладная. Структура у них одинаковая, а движения будут разные.

Регистр накопления — сердце учёта

Остатки в 1С не считают «на лету» по документам — их хранит регистр накопления. Создайте регистр ОстаткиТоваров:

  • вид регистра — «Остатки»;
  • измерения: Номенклатура, Склад;
  • ресурсы: Количество, Сумма;
  • на вкладке «Регистраторы» отметьте оба документа.

Измерения отвечают на вопрос «в разрезе чего», ресурсы — «сколько». Если положить склад в реквизит, а не в измерение, остатки по складам потом не получить без переделки.

Код на встроенном языке: как сделать программу 1С «живой»

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

Проведение документа

Откройте документ ПриходнаяНакладная, вкладка «Движения», отметьте регистр ОстаткиТоваров и нажмите Конструктор движений. Конструктор сопоставит поля табличной части с измерениями и ресурсами и сам напишет обработчик в модуле объекта:

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

Для расходной накладной код тот же, но ВидДвиженияНакопления.Расход. Проведите приход на 10 штук и расход на 3 — в регистре останется 7.

Контроль остатков при расходе

Чтобы программа не давала продать то, чего нет, добавьте в начало обработчика расходной накладной запрос к остаткам:

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

Для Каждого ТекСтрока Из Товары Цикл
	СтрокаОстатка = ТаблицаОстатков.Найти(ТекСтрока.Номенклатура, "Номенклатура");
	Остаток = ?(СтрокаОстатка = Неопределено, 0, СтрокаОстатка.Остаток);
	Если ТекСтрока.Количество > Остаток Тогда
		Сообщить(СтрШаблон("Не хватает %1: есть %2, нужно %3",
			ТекСтрока.Номенклатура, Остаток, ТекСтрока.Количество));
		Отказ = Истина;
	КонецЕсли;
КонецЦикла;

Если Отказ Тогда
	Возврат;
КонецЕсли;

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

Текст запроса не обязательно писать руками. Щёлкните в модуле правой кнопкой → Конструктор запроса — поля и таблицы выбираются мышкой.

Расчёт суммы в форме

Создайте форму документа (вкладка «Формы» → кнопка добавления формы). В элементе формы ТоварыКоличество назначьте событие ПриИзменении и напишите:

&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
	ТекДанные = Элементы.Товары.ТекущиеДанные;
	ТекДанные.Сумма = ТекДанные.Количество * ТекДанные.Цена;
КонецПроцедуры

Директивы &НаКлиенте и &НаСервере — ключ к управляемым формам. На клиенте нельзя обращаться к базе напрямую, запросы выполняются только на сервере.

Справка по любому методу — Синтакс-помощник (кнопка на панели или Ctrl+F1 на слове в модуле).

Отчёты и обработки данных в своей программе

Отчёты в современной 1С строят на системе компоновки данных (СКД). Код почти не нужен.

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

Обработка — это объект для действий, а не для отчётов. Типичные примеры: загрузка номенклатуры из Excel , массовое перепроведение, заполнение цен. У обработки нет таблиц в базе: она берёт данные, что-то с ними делает и записывает результат в другие объекты.

ЗадачаЧто выбрать
Показать остатки, обороты, продажиОтчёт на СКД
Загрузить или изменить данные пачкойОбработка
Хранить настройку одним значениемКонстанта
Хранить цены на датуРегистр сведений, периодический

Отчёт или обработку можно сделать и внешними (Файл → Новый → Внешняя обработка). Тогда они живут в отдельном файле .epf / .erf и подключаются к базе без изменения конфигурации.

Права доступа и интерфейс: делаем программу удобной

Роли и пользователи

Пока в базе нет ни одного пользователя, она открывается без пароля с полными правами. Для рабочей программы этого мало.

  1. Ветка «Общие» → «Роли» → Добавить, имя ПолныеПрава. В редакторе роли отметьте права на все объекты и право «Администрирование».
  2. Создайте роль Кладовщик: чтение справочников, чтение и проведение накладных, просмотр отчёта. Права на изменение конфигурации и администрирование не давайте.
  3. Откройте Администрирование → Пользователи в Конфигураторе и добавьте пользователей с нужными ролями.

Первому пользователю обязательно назначьте роль с правом «Администрирование». Без него платформа не даст сохранить список пользователей.

Подсистемы и командный интерфейс

Разделы, которые пользователь видит в верхней панели «Такси», — это подсистемы.

  • 📂 «Общие» → «Подсистемы» → добавьте Склад и НСИ.
  • ✅ В свойствах подсистемы оставьте флаг «Включать в командный интерфейс» и задайте картинку.
  • 🔗 На вкладке «Подсистемы» каждого справочника, документа и отчёта отметьте, в каком разделе он будет виден.
  • 🧭 Порядок разделов и команд настраивается в командном интерфейсе корня конфигурации (правая кнопка по корню → Открыть командный интерфейс конфигурации).

Видимость команд можно связать с ролями. Кладовщик увидит только то, на что у него есть права, — лишние пункты платформа скроет сама.

Тестирование, отладка и публикация готовой программы 1С

Запуск и отладка

  • F7 — Обновить конфигурацию базы данных. Пока вы не обновили базу, изменения есть только в редакторе.
  • F5 — Отладка → Начать отладку: обновляет конфигурацию и запускает программу в режиме пользователя.
  • F9 — точка останова в модуле. Выполнение остановится на строке, а значения переменных можно посмотреть в табло.
  • Конфигурация → Проверка конфигурации и Проверка модулей — ловят синтаксические ошибки и битые ссылки на объекты до того, как их увидят пользователи.

Тестируйте на «плохих» данных: пустой склад, нулевое количество, расход больше остатка, документ задним числом. Проверьте вход под ролью Кладовщик, а не только под администратором.

Передача программы пользователям

СпособКак сделатьКогда подходит
Файл конфигурации .cfКонфигурация → Сохранить конфигурацию в файлПеренос в другую пустую базу
Выгрузка базы .dtАдминистрирование → Выгрузить информационную базуПеренос вместе с данными
Файлы поставки .cf / .cfuКонфигурация → Поставка конфигурации → Создать файлы поставкиТиражирование и обновления у клиентов
Веб-публикацияАдминистрирование → Публикация на веб-сервереРабота через браузер или тонкий клиент по HTTP

В новой базе пользователь загружает .cf через Конфигурация → Загрузить конфигурацию из файла и обновляет конфигурацию базы данных. Для обновления уже работающей программы удобнее файл .cfu: он переносит изменения без потери данных.

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

Частые ошибки новичка при создании программы 1С

  • ❌ Остатки считают запросом по документам. Работает на 100 накладных и тормозит на 100 тысячах. Остатки и обороты держат в регистрах.
  • ❌ Всё в одном документе «Операция» с полем «Тип». Логика разрастается в огромный Если…ИначеЕсли. Разные операции — разные документы.
  • ❌ Запросы в цикле. Обращение к базе на каждой строке табличной части на порядки медленнее одного запроса на весь документ, когда строк сотни.
  • ❌ Код с обращением к базе в клиентской процедуре. Получите ошибку при запуске. Выносите такие действия в процедуры &НаСервере.
  • ❌ Разработка прямо в рабочей базе. Одна ошибка в проведении — и пользователи стоят. Держите отдельную копию для разработки и переносите изменения через .cf или .cfu.
  • ❌ Имена вроде Справочник1 и Реквизит3. Через месяц не разберётесь сами. Давайте говорящие имена и синонимы сразу.
Программа готова к передаче, если
Выполнено: 0 / 7

Частые вопросы

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