Своя конфигурация на платформе 1С:Предприятие 8.3 — от пустой базы до файла .cf
Содержание
Чтобы создать программу 1С, установите платформу 1С:Предприятие 8.3, создайте информационную базу без конфигурации и откройте её в режиме Конфигуратор. Дальше всё делается в дереве конфигурации: добавляете справочники и документы, описываете регистры, пишете код проведения на встроенном языке, настраиваете роли и подсистемы, а готовый результат сохраняете в файл .cf.
«Программа» в мире 1С называется конфигурацией. Платформа даёт базу данных, формы, отчёты и права. Разработчик описывает объекты и бизнес-логику. Ниже — путь на сквозном примере: мини-учёт товаров на складе с приходом, расходом и отчётом об остатках. Его можно собрать за вечер даже без опыта программирования.
Подготовка: что установить и как создать пустую базу для своей программы 1С
Для обучения хватит учебной версии платформы. Она бесплатная, в ней есть Конфигуратор и отладчик, но есть ограничения на объём данных и число пользователей. Для рабочей программы с реальными пользователями нужна полноценная платформа и клиентские лицензии.
Что понадобится:
- 💻 Компьютер с Windows 10/11 или Linux, 4 ГБ памяти и больше.
- 📦 Дистрибутив платформы 8.3 (учебная версия или коммерческая).
- 📁 Пустая папка для файловой базы, например
D:\Bases\Sklad. - ⏱ Время: 2–3 часа на первый работающий прототип.
Создание базы без конфигурации
- Запустите 1С:Предприятие — откроется окно со списком баз.
- Нажмите
Добавить→Создание новой информационной базы. - Выберите вариант «Создание информационной базы без конфигурации для разработки новой конфигурации или загрузки выгруженной информационной базы».
- Задайте имя («Склад — разработка») и тип расположения «На данном компьютере или на компьютере в локальной сети».
- Укажите каталог
D:\Bases\Skladи завершите мастер. - Выделите базу в списке и нажмите
Конфигуратор.
В Конфигураторе выполните Конфигурация → Открыть конфигурацию. Слева появится дерево: «Общие», «Константы», «Справочники», «Документы», «Регистры накопления» и другие ветки. Пока они пустые.
Сразу задайте свойства корня конфигурации: двойной щелчок по верхнему узлу, поля «Имя», «Синоним», «Версия» (например, 1.0.0.1) и «Поставщик». Версия пригодится, когда начнёте выпускать обновления.
Альтернатива Конфигуратору — среда 1С:EDT на базе Eclipse. Она удобнее для командной работы и Git, но тяжелее и сложнее для старта. Первую программу проще собрать в Конфигураторе.
Проектирование структуры данных: справочники, документы и регистры
Главная ошибка новичка — сразу писать код. В 1С сначала проектируют объекты, а код занимает малую часть работы. Разберите задачу на три вида сущностей.
| Объект метаданных | Что хранит | Пример в нашей программе |
|---|---|---|
| Справочник | Списки, которые меняются редко | Номенклатура, Склады, Контрагенты |
| Документ | Факт хозяйственной операции с датой | Приходная накладная, Расходная накладная |
| Регистр накопления | Обороты и остатки, которые формируют документы | Остатки товаров |
| Регистр сведений | Значения, привязанные к дате или ключу | Цены номенклатуры |
| Перечисление | Фиксированный набор вариантов | Вид номенклатуры: товар / услуга |
Справочники
- Щёлкните правой кнопкой по ветке «Справочники» →
Добавить. - Имя —
Номенклатура, синоним — «Номенклатура». - На вкладке «Данные» задайте длину кода и наименования (например, 9 и 100 символов).
- Добавьте реквизит
ЕдиницаИзмерения(строка, 10) иЦена(число 15.2). - Так же создайте справочник
Склады.
Если номенклатуры будет много, на вкладке «Иерархия» включите иерархический справочник — появятся папки.
Документы
Создайте документ ПриходнаяНакладная:
- 🏷 реквизит шапки
Складс типомСправочникСсылка.Склады; - 📋 табличная часть
Товарыс реквизитамиНоменклатура(СправочникСсылка.Номенклатура),Количество(число 15.3),ЦенаиСумма(число 15.2).
Скопируйте его (правая кнопка → Копировать) и переименуйте в РасходнаяНакладная. Структура у них одинаковая, а движения будут разные.
Регистр накопления — сердце учёта
Остатки в 1С не считают «на лету» по документам — их хранит регистр накопления. Создайте регистр ОстаткиТоваров:
- вид регистра — «Остатки»;
- измерения:
Номенклатура,Склад; - ресурсы:
Количество,Сумма; - на вкладке «Регистраторы» отметьте оба документа.
Измерения отвечают на вопрос «в разрезе чего», ресурсы — «сколько». Если положить склад в реквизит, а не в измерение, остатки по складам потом не получить без переделки.
Код на встроенном языке: как сделать программу 1С «живой»
Встроенный язык 1С похож на Pascal и Basic, ключевые слова есть и на русском, и на английском. Код живёт в модулях: модуль объекта, модуль менеджера, модуль формы, общие модули.
Проведение документа
Откройте документ ПриходнаяНакладная, вкладка «Движения», отметьте регистр ОстаткиТоваров и нажмите Конструктор движений. Конструктор сопоставит поля табличной части с измерениями и ресурсами и сам напишет обработчик в модуле объекта:
Процедура ОбработкаПроведения(Отказ, Режим)
Движения.ОстаткиТоваров.Записывать = Истина;
Для Каждого ТекСтрока Из Товары Цикл
Движение = Движения.ОстаткиТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Склад = Склад;
Движение.Номенклатура = ТекСтрока.Номенклатура;
Движение.Количество = ТекСтрока.Количество;
Движение.Сумма = ТекСтрока.Сумма;
КонецЦикла;
КонецПроцедуры
Для расходной накладной код тот же, но ВидДвиженияНакопления.Расход. Проведите приход на 10 штук и расход на 3 — в регистре останется 7.
Контроль остатков при расходе
Чтобы программа не давала продать то, чего нет, добавьте в начало обработчика расходной накладной запрос к остаткам:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Остатки.Номенклатура КАК Номенклатура,
| Остатки.КоличествоОстаток КАК Остаток
|ИЗ
| РегистрНакопления.ОстаткиТоваров.Остатки(&Момент, Склад = &Склад) КАК Остатки";
Запрос.УстановитьПараметр("Момент", МоментВремени());
Запрос.УстановитьПараметр("Склад", Склад);
ТаблицаОстатков = Запрос.Выполнить().Выгрузить();
Для Каждого ТекСтрока Из Товары Цикл
СтрокаОстатка = ТаблицаОстатков.Найти(ТекСтрока.Номенклатура, "Номенклатура");
Остаток = ?(СтрокаОстатка = Неопределено, 0, СтрокаОстатка.Остаток);
Если ТекСтрока.Количество > Остаток Тогда
Сообщить(СтрШаблон("Не хватает %1: есть %2, нужно %3",
ТекСтрока.Номенклатура, Остаток, ТекСтрока.Количество));
Отказ = Истина;
КонецЕсли;
КонецЦикла;
Если Отказ Тогда
Возврат;
КонецЕсли;
Это упрощённый вариант для учебной программы. Если одна позиция встречается в документе дважды, строки сначала сворачивают по номенклатуре. В многопользовательской системе дополнительно ставят управляемую блокировку.
Текст запроса не обязательно писать руками. Щёлкните в модуле правой кнопкой → Конструктор запроса — поля и таблицы выбираются мышкой.
Расчёт суммы в форме
Создайте форму документа (вкладка «Формы» → кнопка добавления формы). В элементе формы ТоварыКоличество назначьте событие ПриИзменении и напишите:
&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
ТекДанные = Элементы.Товары.ТекущиеДанные;
ТекДанные.Сумма = ТекДанные.Количество * ТекДанные.Цена;
КонецПроцедуры
Директивы &НаКлиенте и &НаСервере — ключ к управляемым формам. На клиенте нельзя обращаться к базе напрямую, запросы выполняются только на сервере.
Справка по любому методу — Синтакс-помощник (кнопка на панели или Ctrl+F1 на слове в модуле).
Отчёты и обработки данных в своей программе
Отчёты в современной 1С строят на системе компоновки данных (СКД). Код почти не нужен.
- Ветка «Отчеты» →
Добавить, имяОстаткиНаСкладах. - На вкладке «Основные» нажмите
Открыть схему компоновки данныхи согласитесь создать новую схему. - Добавьте набор данных «Запрос», откройте
Конструктор запросаи выберите виртуальную таблицуРегистрНакопления.ОстаткиТоваров.Остатки. - Отметьте поля
Склад,Номенклатура,КоличествоОстаток,СуммаОстаток. - На вкладке «Настройки» откройте конструктор настроек, выберите тип «Список» или группировку по складу.
- Сохраните и запустите — пользователь сможет сам менять отборы и группировки.
Обработка — это объект для действий, а не для отчётов. Типичные примеры: загрузка номенклатуры из Excel , массовое перепроведение, заполнение цен. У обработки нет таблиц в базе: она берёт данные, что-то с ними делает и записывает результат в другие объекты.
| Задача | Что выбрать |
|---|---|
| Показать остатки, обороты, продажи | Отчёт на СКД |
| Загрузить или изменить данные пачкой | Обработка |
| Хранить настройку одним значением | Константа |
| Хранить цены на дату | Регистр сведений, периодический |
Отчёт или обработку можно сделать и внешними (Файл → Новый → Внешняя обработка). Тогда они живут в отдельном файле .epf / .erf и подключаются к базе без изменения конфигурации.
Права доступа и интерфейс: делаем программу удобной
Роли и пользователи
Пока в базе нет ни одного пользователя, она открывается без пароля с полными правами. Для рабочей программы этого мало.
- Ветка «Общие» → «Роли» →
Добавить, имяПолныеПрава. В редакторе роли отметьте права на все объекты и право «Администрирование». - Создайте роль
Кладовщик: чтение справочников, чтение и проведение накладных, просмотр отчёта. Права на изменение конфигурации и администрирование не давайте. - Откройте
Администрирование → Пользователив Конфигураторе и добавьте пользователей с нужными ролями.
Первому пользователю обязательно назначьте роль с правом «Администрирование». Без него платформа не даст сохранить список пользователей.
Подсистемы и командный интерфейс
Разделы, которые пользователь видит в верхней панели «Такси», — это подсистемы.
- 📂 «Общие» → «Подсистемы» → добавьте
СкладиНСИ. - ✅ В свойствах подсистемы оставьте флаг «Включать в командный интерфейс» и задайте картинку.
- 🔗 На вкладке «Подсистемы» каждого справочника, документа и отчёта отметьте, в каком разделе он будет виден.
- 🧭 Порядок разделов и команд настраивается в командном интерфейсе корня конфигурации (правая кнопка по корню →
Открыть командный интерфейс конфигурации).
Видимость команд можно связать с ролями. Кладовщик увидит только то, на что у него есть права, — лишние пункты платформа скроет сама.
Тестирование, отладка и публикация готовой программы 1С
Запуск и отладка
F7—Обновить конфигурацию базы данных. Пока вы не обновили базу, изменения есть только в редакторе.F5—Отладка → Начать отладку: обновляет конфигурацию и запускает программу в режиме пользователя.F9— точка останова в модуле. Выполнение остановится на строке, а значения переменных можно посмотреть в табло.Конфигурация → Проверка конфигурациииПроверка модулей— ловят синтаксические ошибки и битые ссылки на объекты до того, как их увидят пользователи.
Тестируйте на «плохих» данных: пустой склад, нулевое количество, расход больше остатка, документ задним числом. Проверьте вход под ролью Кладовщик, а не только под администратором.
Передача программы пользователям
| Способ | Как сделать | Когда подходит |
|---|---|---|
Файл конфигурации .cf | Конфигурация → Сохранить конфигурацию в файл | Перенос в другую пустую базу |
Выгрузка базы .dt | Администрирование → Выгрузить информационную базу | Перенос вместе с данными |
Файлы поставки .cf / .cfu | Конфигурация → Поставка конфигурации → Создать файлы поставки | Тиражирование и обновления у клиентов |
| Веб-публикация | Администрирование → Публикация на веб-сервере | Работа через браузер или тонкий клиент по HTTP |
В новой базе пользователь загружает .cf через Конфигурация → Загрузить конфигурацию из файла и обновляет конфигурацию базы данных. Для обновления уже работающей программы удобнее файл .cfu: он переносит изменения без потери данных.
Загрузка .dt полностью заменяет данные базы-приёмника. Перед этим сделайте выгрузку текущей базы и убедитесь, что в ней никто не работает: операции нужен монопольный доступ.
Частые ошибки новичка при создании программы 1С
- ❌ Остатки считают запросом по документам. Работает на 100 накладных и тормозит на 100 тысячах. Остатки и обороты держат в регистрах.
- ❌ Всё в одном документе «Операция» с полем «Тип». Логика разрастается в огромный
Если…ИначеЕсли. Разные операции — разные документы. - ❌ Запросы в цикле. Обращение к базе на каждой строке табличной части на порядки медленнее одного запроса на весь документ, когда строк сотни.
- ❌ Код с обращением к базе в клиентской процедуре. Получите ошибку при запуске. Выносите такие действия в процедуры
&НаСервере. - ❌ Разработка прямо в рабочей базе. Одна ошибка в проведении — и пользователи стоят. Держите отдельную копию для разработки и переносите изменения через
.cfили.cfu. - ❌ Имена вроде
Справочник1иРеквизит3. Через месяц не разберётесь сами. Давайте говорящие имена и синонимы сразу.