Доработка конфигурации 1С 8.3: от включения правки до обновления базы
Содержание
Чтобы внести изменения в конфигурацию 1С, откройте базу в режиме «Конфигуратор», выполните Конфигурация → Открыть конфигурацию, а для типовой конфигурации сначала включите возможность изменения в Конфигурация → Поддержка → Настройка поддержки. После правки объектов, кода или форм сохраните конфигурацию (Ctrl+S) и примените её к базе командой Конфигурация → Обновить конфигурацию базы данных (F7).
Порядок одинаков для любой конфигурации на платформе 8.3: Бухгалтерии, ЗУП, УТ или самописной. Разница только в том, на поддержке ли конфигурация у поставщика. От этого зависит, насколько больно будет потом ставить обновления.
Подготовка: копия базы и включение режима правки
Конфигуратор запускается из стартового окна 1С: выберите базу в списке и нажмите кнопку Конфигуратор. Войдите пользователем с ролью полных прав. Если база серверная, правку конфигурации можно вести при работающих пользователях, но применять изменения структуры к базе — только без них.
Перед первым изменением сделайте выгрузку: Администрирование → Выгрузить информационную базу. Получится файл .dt — полная копия базы с данными и конфигурацией. Без свежей копии в рабочей базе ничего не меняйте.
Две конфигурации внутри одной базы
В базе хранятся две конфигурации, и новички их путают:
- 🧩 Основная конфигурация — та, что вы правите в дереве метаданных. Изменения сохраняются в неё и пока не влияют на пользователей.
- 🗄️ Конфигурация базы данных — та, с которой реально работают пользователи. Она меняется только после команды «Обновить конфигурацию базы данных».
Если в заголовке окна дерева метаданных стоит звёздочка, значит, основная конфигурация отличается от конфигурации базы. Откатить несохранённую в базу правку можно командой Конфигурация → Конфигурация базы данных → Вернуться к конфигурации БД.
Как снять запрет на редактирование типовой
Типовая конфигурация от фирмы 1С стоит на поддержке, и по умолчанию её объекты не редактируются: свойства серые, модули открываются только на чтение. Порядок такой:
- Откройте
Конфигурация → Поддержка → Настройка поддержки. - Нажмите
Включить возможность измененияи подтвердите. - Платформа предложит правило для объектов. Выберите «Объект поставщика редактируется с сохранением поддержки».
| Правило | Что значит | Последствия при обновлении |
|---|---|---|
| Не редактируется | Объект только для чтения | Обновляется автоматически |
| Редактируется с сохранением поддержки | Можно менять, связь с поставщиком остаётся | Ваши правки придётся объединять с новой версией |
| Снят с поддержки | Объект полностью ваш | Обновления поставщика на него не придут |
Включение возможности изменения не отменить в один клик. После этого каждое обновление типовой идёт через сравнение и объединение, а не за минуту. Если доработка небольшая, сначала рассмотрите расширение — о нём ниже.
Изменение объектов метаданных: реквизиты, табличные части, новые объекты
Дерево метаданных — левая панель конфигуратора: справочники, документы, регистры, отчёты, обработки. Любой объект открывается двойным щелчком, и появляется окно редактирования с вкладками.
Добавить реквизит в справочник или документ
Частая задача — добавить поле, например «Ответственный менеджер» в справочник контрагентов.
- Найдите объект в дереве. Для быстрого поиска встаньте в дерево и начните набирать имя.
- Откройте его и перейдите на вкладку «Данные».
- В группе «Реквизиты» нажмите кнопку добавления.
- В палитре свойств задайте
Имя(латиница или кириллица без пробелов),Синоним(то, что увидит пользователь) иТип, напримерСправочникСсылка.Пользователи.
Для строки задайте длину. Неограниченная строка (длина 0) удобна, но по ней нельзя полноценно отбирать и сортировать в запросах, поэтому для коротких полей ставьте конкретное число, скажем 50 или 150.
Табличная часть и новые объекты
Табличная часть добавляется там же, на вкладке «Данные», ниже реквизитов. Внутри неё свои реквизиты — колонки будущей таблицы.
Новый объект создаётся через контекстное меню ветки: щёлкните правой кнопкой по «Справочники» или «Документы» и выберите Добавить. Платформа откроет конструктор, который ведёт по вкладкам: данные, формы, нумерация, права.
Два шага, без которых новый объект никто не увидит
- 🔐 Права в ролях. Новый объект недоступен пользователям, пока ему не выданы права в ролях. Откройте нужные роли в ветке
Общие → Ролии отметьте права на объект. В типовых профилях пользователей набор ролей уже задан — проверьте, какая роль входит в профиль вашего сотрудника. - 🗂️ Подсистема. Чтобы объект появился в разделе меню, включите его в подсистему: в окне объекта вкладка «Подсистемы», галочка у нужного раздела.
💡 Свои объекты и реквизиты в типовой помечайте префиксом, например мк_ОтветственныйМенеджер. При обновлении сразу видно, где ваши правки, а где изменения поставщика.
Удаление объектов
Удаление реквизита, по которому уже есть данные, сотрёт эти данные при обновлении базы. Безопаснее сначала переименовать объект с префиксом Удалить, убрать его с форм и из кода, а удалить через одно-два обновления. Перед удалением объекта найдите ссылки на него: в контекстном меню объекта есть команда поиска ссылок на него.
Правка программного кода в модулях
Код хранится в модулях. У каждого объекта их несколько, и важно открыть нужный:
| Модуль | Где открыть | Что в нём пишут |
|---|---|---|
| Модуль объекта | Контекстное меню объекта → Открыть модуль объекта | Обработчики записи и проведения: ПередЗаписью, ОбработкаПроведения |
| Модуль менеджера | Контекстное меню → Открыть модуль менеджера | Процедуры, не привязанные к конкретному элементу |
| Модуль формы | Редактор формы, вкладка «Модуль» | Реакция на действия пользователя на форме |
| Общий модуль | Ветка Общие → Общие модули | Процедуры, которые вызываются из разных мест |
Пример: запрет записи без ответственного
В модуле объекта справочника добавьте обработчик:
Процедура ПередЗаписью(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(мк_ОтветственныйМенеджер) Тогда
Сообщить("Укажите ответственного менеджера.");
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
Проверка ОбменДанными.Загрузка нужна, чтобы контроль не мешал обменам и загрузке данных: при загрузке платформа пишет объекты без пользовательских проверок.
Полезные клавиши редактора
- ⌨️
Ctrl+Пробел— контекстная подсказка: методы, реквизиты, переменные. - 🔎
F12— перейти к определению процедуры. - ✅
Ctrl+F7— синтаксический контроль текущего модуля. - 🐞
F9— точка останова,F5— запуск отладки.
Перед тем как сохранять, прогоните общую проверку: Конфигурация → Проверка конфигурации. Она находит ссылки на удалённые реквизиты, ошибки в модулях и проблемы в формах, которые синтаксический контроль одного модуля не видит.
Отладка в тестовом режиме
F5 запускает 1С:Предприятие с подключённым отладчиком. Поставьте точку останова на строке, выполните действие в программе — выполнение остановится, и в конфигураторе можно смотреть значения переменных. Отлаживайте на копии базы, не на рабочей: остановка на точке держит транзакцию и может заблокировать данные для других пользователей.
Формы и интерфейс пользователя
Добавленный реквизит сам на форме не появится, если форма уже создана. Его нужно вывести вручную.
- Откройте объект, вкладка «Формы», двойной щелчок по нужной форме.
- В редакторе формы справа вкладка «Реквизиты»: раскройте основной реквизит
Объекти найдите своё поле. - Перетащите его мышью в дерево элементов слева, в нужную группу.
- В свойствах элемента при необходимости поправьте заголовок, ширину и подсказку.
Внизу редактора видно, как форма будет выглядеть у пользователя. Порядок элементов меняется перетаскиванием или стрелками на панели дерева элементов.
Команды и кнопки на форме
Кнопка на форме — это связка «команда + обработчик»:
- на вкладке «Команды» редактора формы создайте команду;
- в её свойстве
Действиенажмите кнопку с лупой — платформа создаст процедуру в модуле формы; - перетащите команду в командную панель или в дерево элементов.
В процедуре с директивой &НаКлиенте нельзя напрямую работать с базой. Чтение данных выносите в отдельную процедуру &НаСервере или &НаСервереБезКонтекста и вызывайте её с клиента.
💡 В типовых конфигурациях часто не стоит менять саму форму. Форму поставщика при каждом обновлении придётся объединять вручную, а это самая трудоёмкая часть сравнения. Правка формы через расширение переживает обновления заметно легче.
Обновление конфигурации базы данных: как применить изменения
Пока вы не выполнили обновление, пользователи работают по-старому. Команда Конфигурация → Обновить конфигурацию базы данных (или F7) сравнивает основную конфигурацию с конфигурацией базы и показывает, что изменится.
Что произойдёт после нажатия F7
- Платформа проверит конфигурацию. Если есть ошибки в модулях, обновление остановится, а ошибки появятся в окне сообщений.
- Откроется окно «Реорганизация информации» со списком изменений структуры: новые поля, таблицы, удаляемые данные.
- После кнопки
Принятьплатформа перестроит таблицы базы.
Изменения, которые меняют структуру хранения (новый реквизит, табличная часть, регистр), требуют, чтобы в базе не было других пользователей. Если они есть, платформа сообщит, что не удалось установить монопольный режим.
Если менялись только модули и формы, без изменения структуры данных, платформа может предложить динамическое обновление — без выгона пользователей. Работающие сеансы увидят новую версию после перезапуска программы.
Как освободить базу
- 📢 Предупредите пользователей заранее и назначьте время, например обеденный перерыв или вечер.
- 🛑 В типовых конфигурациях есть штатная блокировка сеансов:
Администрирование → Обслуживание → Блокировка работы пользователей. Она мягко завершает работу и не пускает новых. - ⚙️ В клиент-серверном варианте сеансы видны и в консоли администрирования кластера.
Принудительное завершение сеанса обрывает работу пользователя: несохранённый документ пропадёт. Делайте это только после предупреждения и вне рабочего пика.
Реорганизация большой базы может занять от нескольких минут до часа и дольше. Не прерывайте её и не закрывайте конфигуратор принудительно.
Сохранение, выгрузка и перенос изменений
Изменения обычно делают на копии, а потом переносят в рабочую базу. Для этого есть три формата.
| Что | Команда | Что внутри | Когда использовать |
|---|---|---|---|
.cf | Конфигурация → Сохранить конфигурацию в файл | Только конфигурация, без данных | Перенос доработки в рабочую базу, архив версии |
.dt | Администрирование → Выгрузить информационную базу | Конфигурация и все данные | Резервная копия, копия для тестов |
.cfe | Конфигурация → Расширения конфигурации, меню расширения | Только расширение | Перенос доработок, сделанных расширением |
Перенос доработки из тестовой базы в рабочую
Есть два пути, и выбор зависит от того, правил ли кто-то рабочую базу параллельно.
- 🔁 Полная замена.
Конфигурация → Загрузить конфигурацию из файлаи выбор.cf. Основная конфигурация рабочей базы будет заменена целиком. Подходит, если рабочую базу никто не трогал. - 🧮 Сравнение и объединение.
Конфигурация → Сравнить, объединить с конфигурацией из файла. Платформа покажет дерево различий, и вы отметите галочками только свои изменения. Подходит, если в рабочей базе есть свои правки или она новее.
После загрузки или объединения снова нужно выполнить F7, иначе пользователи изменений не увидят.
Групповая разработка: хранилище конфигурации
Если правят двое и больше, работайте через хранилище: Конфигурация → Хранилище конфигурации. Разработчик захватывает объект, правит его и помещает обратно с комментарием. Хранилище ведёт историю версий, и любую правку можно откатить или посмотреть, кто и когда её сделал.
Рабочая база при этом обычно не подключается к хранилищу напрямую. В неё переносят готовую версию через .cf или через объединение.
Расширение конфигурации вместо правки основной
Расширения появились в платформе 8.3.6. Это отдельный слой поверх конфигурации: вы добавляете в расширение свои реквизиты, формы, обработчики, а основная конфигурация остаётся на поддержке и обновляется в обычном режиме.
Создать расширение
: Конфигурация → Расширения конфигурации, кнопка добавления. В дереве расширения заимствуйте объект из основной конфигурации (контекстное меню объекта основной конфигурации, команда Добавить в расширение) и дорабатывайте его.
Когда что выбирать:
- ✅ Расширение — новые реквизиты, правки форм, дополнительные проверки при записи, свои отчёты и обработки для типовой конфигурации.
- 🛠️ Правка основной конфигурации — самописные конфигурации без поставщика, глубокие изменения логики, которые расширение не позволяет сделать, или когда конфигурация уже снята с поддержки.
Загрузка .cfe и обновление базы — отдельные шаги: после подключения расширения его изменения тоже применяются к базе, а при изменении структуры данных в расширении действуют те же ограничения по монопольному режиму.
Частые ошибки при доработке конфигурации
- ❌ Сохранили, но не обновили базу. Пользователи жалуются, что «ничего не поменялось». Звёздочка в заголовке дерева подскажет, что
F7ещё не нажата. - ❌ Новый объект не виден пользователям. Не выданы права в ролях или объект не включён в подсистему.
- ❌ Сняли объекты с поддержки целиком. Правило «снят с поддержки» на всю конфигурацию отрезает её от обновлений. Выбирайте сохранение поддержки или расширение.
- ❌ Загрузили
.cfповерх рабочей базы с чужими правками. Полная загрузка стирает всё, чего не было в файле. Когда сомневаетесь — объединение. - ❌ Удалили реквизит с данными. При реорганизации данные пропадут без возврата. Сначала префикс
Удалить, потом удаление.
Частые вопросы
Можно ли править конфигурацию, пока пользователи работают в базе?
Почему кнопка «Обновить конфигурацию базы данных» неактивна?
Ctrl+S и повторите.Как вернуть типовую конфигурацию на поддержку после правок?
.cf поставщика, но доработки при этом пропадут. Поэтому перед включением изменений сохраните исходную конфигурацию в файл.Слетят ли мои изменения после обновления типовой?
Где посмотреть, что именно изменено относительно типовой?
Конфигурация → Сравнить конфигурации: выберите для сравнения основную конфигурацию и конфигурацию поставщика. Отчёт о сравнении покажет все отличия по объектам.