Разработка и Конфигурация · 12 мин
Как разработать свою конфигурацию в 1С с нуля
Как разработать собственную конфигурацию в 1С с нуля: проектирование объектов, создание справочников и документов, отладка, типовые ошибки и проверка результата.
Разработка собственной конфигурации 1С — задача, которая кажется сложной только до тех пор, пока не разбита на понятные этапы. Платформа «1С:Предприятие» изначально проектировалась как инструмент быстрой разработки учётных систем: разработчику не нужно писать код для базы данных, интерфейса и прав доступа — достаточно описать структуру предметной области через объекты конфигурации, а платформа сама сгенерирует таблицы, формы и механизмы взаимодействия.
Работа ведётся в конфигураторе — среде разработки, входящей в состав платформы. Для старта достаточно учебной версии платформы: она бесплатна, не требует лицензии и позволяет создавать полноценные конфигурации с ограничениями (нельзя работать в клиент-серверном режиме и использовать COM-соединения). Для обучения и прототипирования этих ограничений обычно достаточно.
Ниже разобран полный цикл: от постановки задачи и проектирования структуры данных до отладки, тестирования и переноса конфигурации в рабочую базу. Материал ориентирован на тех, кто уже знаком с пользовательским режимом 1С и хочет перейти к разработке.
Подготовка: платформа, учебная версия и постановка задачи
Перед установкой инструментов сформулируйте задачу в терминах предметной области: что учитываем (товары, заказы, время сотрудников), какие документы фиксируют события, какие отчёты нужны руководству. Хороший признак готовой постановки — вы можете нарисовать на бумаге схему из 5–10 сущностей и стрелок между ними. Если схема не складывается, разработку начинать рано: сначала нужно разобраться в процессах.
Установите платформу «1С:Предприятие» (для обучения — учебную версию с официального портала) и создайте пустую информационную базу без конфигурации. При первом запуске конфигуратора система предложит создать новую конфигурацию — соглашайтесь. Дальнейшая работа идёт в дереве конфигурации: это иерархический список всех объектов, из которых состоит прикладное решение.
Сразу настройте режим работы. Для современной разработки выбирайте управляемое приложение и режим совместимости актуальной версии платформы — это задаётся в свойствах корневого узла конфигурации. Режим совместимости влияет на доступные возможности языка и поведение платформы, менять его в середине проекта нежелательно.
Проектирование структуры данных до написания кода
Главная ошибка начинающих — сразу открывать конфигуратор и создавать объекты «по ходу дела». Через неделю такая конфигурация превращается в набор несвязанных справочников, которые приходится переделывать. Правильный порядок: сначала модель на бумаге, потом объекты в конфигураторе.
Разделите сущности предметной области по типам объектов 1С. Постоянная информация (контрагенты, номенклатура, сотрудники) — это справочники. События, изменяющие состояние учёта (поступление товара, продажа, оплата), — документы. Данные, которые документы записывают и по которым строятся отчёты (остатки, продажи, задолженность), — регистры накопления и сведений. Отчёты не хранят данные, а только читают их из регистров и таблиц документов.
Ключевой принцип 1С: документы ничего не «считают» сами по себе — они делают движения по регистрам, а отчёты строятся по регистрам. Если спроектировать регистры неправильно (например, хранить остатки в документе), получить корректные отчёты за произвольный период будет невозможно без полной переделки.
Создание объектов конфигурации
Начните со справочников. В дереве конфигурации правый клик по ветке «Справочники» → «Добавить». Задайте имя (оно же — имя объекта в коде), длину кода и наименования. Для большинства справочников достаточно стандартных реквизитов, но при необходимости добавьте свои: например, у справочника «Номенклатура» — реквизит «Артикул» и табличную часть «Штрихкоды». Платформа автоматически создаст формы элемента и списка, но их можно переопределить собственными.
Далее — документы. У документа обязательно есть номер и дата; добавьте шапку (контрагент, склад, организация) и табличную часть (список товаров с количеством и ценой). На закладке «Движения» отметьте регистры, по которым документ должен проводиться, — платформа предложит автоматически сформировать процедуру проведения. Этот конструктор движений — хорошая отправная точка, которую потом дорабатывают вручную.
Регистры накопления создавайте с типом «Остатки» для складского учёта и «Обороты» — для аналитики продаж. Измерения — это разрезы учёта (склад, номенклатура), ресурсы — числовые показатели (количество, сумма). Правило: если по показателю нужен остаток на дату — это регистр остатков, если только сумма за период — достаточно оборотов, что быстрее работает.
- 1Создайте пустую базу и конфигурацию, задайте режим совместимости
- 2Спроектируйте на бумаге справочники, документы и регистры
- 3Добавьте справочники с нужными реквизитами
- 4Создайте регистры накопления с измерениями и ресурсами
- 5Добавьте документы и настройте движения по регистрам через конструктор
- 6Создайте отчёты по регистрам через конструктор запросов
- 7Определите подсистемы и роли, включите объекты в командный интерфейс
- 8Протестируйте на копии базы и только потом переносите в рабочую
Программирование на встроенном языке
Код в 1С пишется в модулях: модуле объекта (логика самого объекта, например проведение документа), модуле формы (поведение интерфейса), общих модулях (переиспользуемые процедуры). Встроенный язык поддерживает синтаксис на русском и английском; в коммерческой разработке принят русский, так как типовые конфигурации написаны на нём.
Типовая задача — обработка проведения документа. В модуле объекта документа процедура ОбработкаПроведения получает набор записей регистра, заполняет его строками табличной части и записывает. Конструктор движений генерирует этот код автоматически, но реальные задачи требуют доработки: контроля отрицательных остатков, расчёта себестоимости, проверки заполненности реквизитов.
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Движения.ОстаткиНоменклатуры.Записывать = Истина;
Для Каждого СтрокаТовара Из Товары Цикл
Движение = Движения.ОстаткиНоменклатуры.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = СтрокаТовара.Номенклатура;
Движение.Склад = Склад;
Движение.Количество = СтрокаТовара.Количество;
КонецЦикла;
КонецПроцедуры
Для выборки данных используйте запросы — декларативный язык, похожий на SQL. Запросы почти всегда быстрее и читабельнее, чем перебор объектов в цикле. Правило производительности: никогда не выполняйте запрос внутри цикла — соберите данные одним запросом по таблице значений.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Остатки.Номенклатура КАК Номенклатура,
| Остатки.КоличествоОстаток КАК Остаток
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры.Остатки(&Период, Склад = &Склад) КАК Остатки";
Запрос.УстановитьПараметр("Период", ТекущаяДатаСеанса());
Запрос.УстановитьПараметр("Склад", Склад);
Результат = Запрос.Выполнить().Выгрузить();Интерфейс, права и подсистемы
Подсистемы определяют, как объекты группируются в командном интерфейсе пользователя. Создайте подсистемы по смыслу («Закупки», «Продажи», «Склад») и включите в них соответствующие объекты — платформа сама построит панель разделов. Без подсистем пользователь увидит пустой рабочий стол.
Роли задают права доступа к объектам: чтение, добавление, изменение, проведение. Создайте минимум две роли — полные права для администратора и ограниченные для рядового пользователя. Тонкая настройка (ограничение доступа на уровне записей, RLS) нужна не всегда, но закладывать разделение ролей стоит сразу: добавить её в готовую конфигурацию сложнее.
Отладка и тестирование
Отладка запускается из конфигуратора клавишей F5 — открывается предприятие в режиме отладки, где работают точки останова, просмотр значений переменных и пошаговое выполнение. Типичный приём: поставить точку останова в ОбработкеПроведения и провести документ, наблюдая, какие движения формируются.
Тестируйте не на пустых данных. Заведите реалистичный объём: десятки контрагентов, сотни позиций номенклатуры, проведите документы за несколько месяцев. Многие ошибки (неверные итоги, медленные отчёты, отрицательные остатки) проявляются только на данных, приближенных к реальным.
Как проверить результат
После проведения в регистре появляются записи с верными измерениями и суммами
Записей нет, дублируются при перепроведении или суммы не совпадают с табличной частью
Остатки на произвольную дату сходятся с данными документов
Итоги зависят от того, перепроводились ли документы
Пользователь видит только свои разделы и не может провести чужие документы
Пустой рабочий стол или доступ ко всем объектам
Проведение документа и построение отчёта занимают секунды на тестовом объёме
Отчёт строится минутами — вероятны запросы в цикле или отсутствие индексов
Типовые ошибки начинающих разработчиков
Большинство проблем в первых конфигурациях повторяются из проекта в проект. Знание этого списка экономит недели переделок.
Перенос конфигурации в рабочую базу
Когда конфигурация отлажена, её переносят через механизм загрузки/выгрузки конфигурации (файл .cf) либо через сравнение и объединение, если рабочая база уже содержит доработки. Перед обновлением: сделайте выгрузку .dt рабочей базы, убедитесь, что пользователи вышли, выполните обновление и проверьте реструктуризацию.
После обновления обязательно проверьте критичные сценарии вручную: проведение ключевых документов, основные отчёты, права пользователей. Только после этого открывайте доступ пользователям. Для командной разработки используйте хранилище конфигурации — оно версионирует изменения и позволяет откатиться к предыдущему состоянию.
Что важно запомнить
Успешная разработка своей конфигурации 1С строится на трёх опорах: проектирование структуры данных (особенно регистров) до написания кода, архитектура «документы делают движения — отчёты читают регистры» и обязательное тестирование на копии базы с резервной копией перед любым обновлением рабочей среды.
Частые вопросы
Можно ли разработать конфигурацию 1С без знания программирования?
Простую учётную систему — да: справочники, документы с автоматически сформированными движениями и отчёты через конструктор создаются без единой строки кода. Но контроль остатков, расчёты, печатные формы и обмены данными потребуют программирования на встроенном языке. Реалистичный путь — начать с конструкторов и постепенно осваивать язык на конкретных задачах.
Чем учебная версия платформы отличается от коммерческой?
Учебная версия бесплатна и позволяет создавать и отлаживать конфигурации, но имеет ограничения: не работает в клиент-серверном варианте, не поддерживает COM-соединения и некоторые механизмы интеграции. Для обучения и прототипирования её достаточно; для реального учёта в организации нужна коммерческая лицензия.
Сколько времени занимает разработка простой конфигурации?
Прототип с несколькими справочниками, парой документов и простыми отчётами реально собрать за несколько дней. Доведение до рабочего состояния — с контролем остатков, правами, печатными формами и тестированием — обычно занимает в несколько раз больше времени, чем создание прототипа. Основные трудозатраты уходят не на объекты, а на логику проведения и отладку.
Что лучше: своя конфигурация или доработка типовой?
Если задача покрывается типовым решением (торговля, бухгалтерия, зарплата) — дорабатывайте типовую: вы получаете готовые механизмы и обновления законодательства. Своя конфигурация оправдана для нестандартных учётных задач, которых нет в типовых: узкоспециальный производственный учёт, специфические расчёты, внутренние системы компании. Разработка с нуля означает, что всё сопровождение ложится на вас.
Как не потерять данные при изменении конфигурации?
Правила три: всегда делайте выгрузку .dt перед обновлением конфигурации рабочей базы, проверяйте обновление на копии базы и избегайте удаления объектов и реквизитов, в которых уже есть данные — при реструктуризации они удаляются безвозвратно. Если реквизит больше не нужен, часто безопаснее просто убрать его с форм, оставив в структуре.
Нужно ли изучать SQL для разработки в 1С?
Нет, платформа сама транслирует запросы встроенного языка в SQL. Но понимание принципов реляционных баз — индексов, соединений таблиц, выборок по условию — заметно помогает писать быстрые запросы и понимать, почему отчёт работает медленно. Знание SQL полезно, но не является обязательным для старта.