Доработка конфигурации 1С 8.3: от включения правки до обновления базы

· 10 мин

Содержание

Чтобы внести изменения в конфигурацию 1С, откройте базу в режиме «Конфигуратор», выполните Конфигурация → Открыть конфигурацию, а для типовой конфигурации сначала включите возможность изменения в Конфигурация → Поддержка → Настройка поддержки. После правки объектов, кода или форм сохраните конфигурацию (Ctrl+S) и примените её к базе командой Конфигурация → Обновить конфигурацию базы данных (F7).

Порядок одинаков для любой конфигурации на платформе 8.3: Бухгалтерии, ЗУП, УТ или самописной. Разница только в том, на поддержке ли конфигурация у поставщика. От этого зависит, насколько больно будет потом ставить обновления.

Подготовка: копия базы и включение режима правки

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

Перед первым изменением сделайте выгрузку: Администрирование → Выгрузить информационную базу. Получится файл .dt — полная копия базы с данными и конфигурацией. Без свежей копии в рабочей базе ничего не меняйте.

Две конфигурации внутри одной базы

В базе хранятся две конфигурации, и новички их путают:

  • 🧩 Основная конфигурация — та, что вы правите в дереве метаданных. Изменения сохраняются в неё и пока не влияют на пользователей.
  • 🗄️ Конфигурация базы данных — та, с которой реально работают пользователи. Она меняется только после команды «Обновить конфигурацию базы данных».

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

Как снять запрет на редактирование типовой

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

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

Включение возможности изменения не отменить в один клик. После этого каждое обновление типовой идёт через сравнение и объединение, а не за минуту. Если доработка небольшая, сначала рассмотрите расширение — о нём ниже.

Изменение объектов метаданных: реквизиты, табличные части, новые объекты

Дерево метаданных — левая панель конфигуратора: справочники, документы, регистры, отчёты, обработки. Любой объект открывается двойным щелчком, и появляется окно редактирования с вкладками.

Добавить реквизит в справочник или документ

Частая задача — добавить поле, например «Ответственный менеджер» в справочник контрагентов.

  1. Найдите объект в дереве. Для быстрого поиска встаньте в дерево и начните набирать имя.
  2. Откройте его и перейдите на вкладку «Данные».
  3. В группе «Реквизиты» нажмите кнопку добавления.
  4. В палитре свойств задайте Имя (латиница или кириллица без пробелов), Синоним (то, что увидит пользователь) и Тип, например СправочникСсылка.Пользователи.

Для строки задайте длину. Неограниченная строка (длина 0) удобна, но по ней нельзя полноценно отбирать и сортировать в запросах, поэтому для коротких полей ставьте конкретное число, скажем 50 или 150.

Табличная часть и новые объекты

Табличная часть добавляется там же, на вкладке «Данные», ниже реквизитов. Внутри неё свои реквизиты — колонки будущей таблицы.

Новый объект создаётся через контекстное меню ветки: щёлкните правой кнопкой по «Справочники» или «Документы» и выберите Добавить. Платформа откроет конструктор, который ведёт по вкладкам: данные, формы, нумерация, права.

Два шага, без которых новый объект никто не увидит

  • 🔐 Права в ролях. Новый объект недоступен пользователям, пока ему не выданы права в ролях. Откройте нужные роли в ветке Общие → Роли и отметьте права на объект. В типовых профилях пользователей набор ролей уже задан — проверьте, какая роль входит в профиль вашего сотрудника.
  • 🗂️ Подсистема. Чтобы объект появился в разделе меню, включите его в подсистему: в окне объекта вкладка «Подсистемы», галочка у нужного раздела.

💡 Свои объекты и реквизиты в типовой помечайте префиксом, например мк_ОтветственныйМенеджер. При обновлении сразу видно, где ваши правки, а где изменения поставщика.

Удаление объектов

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

Правка программного кода в модулях

Код хранится в модулях. У каждого объекта их несколько, и важно открыть нужный:

МодульГде открытьЧто в нём пишут
Модуль объектаКонтекстное меню объекта → Открыть модуль объектаОбработчики записи и проведения: ПередЗаписью, ОбработкаПроведения
Модуль менеджераКонтекстное меню → Открыть модуль менеджераПроцедуры, не привязанные к конкретному элементу
Модуль формыРедактор формы, вкладка «Модуль»Реакция на действия пользователя на форме
Общий модульВетка Общие → Общие модулиПроцедуры, которые вызываются из разных мест

Пример: запрет записи без ответственного

В модуле объекта справочника добавьте обработчик:

Процедура ПередЗаписью(Отказ)

    Если ОбменДанными.Загрузка Тогда
        Возврат;
    КонецЕсли;

    Если НЕ ЗначениеЗаполнено(мк_ОтветственныйМенеджер) Тогда
        Сообщить("Укажите ответственного менеджера.");
        Отказ = Истина;
    КонецЕсли;

КонецПроцедуры

Проверка ОбменДанными.Загрузка нужна, чтобы контроль не мешал обменам и загрузке данных: при загрузке платформа пишет объекты без пользовательских проверок.

Полезные клавиши редактора

  • ⌨️ Ctrl+Пробел — контекстная подсказка: методы, реквизиты, переменные.
  • 🔎 F12 — перейти к определению процедуры.
  • ✅ Ctrl+F7 — синтаксический контроль текущего модуля.
  • 🐞 F9 — точка останова, F5 — запуск отладки.

Перед тем как сохранять, прогоните общую проверку: Конфигурация → Проверка конфигурации. Она находит ссылки на удалённые реквизиты, ошибки в модулях и проблемы в формах, которые синтаксический контроль одного модуля не видит.

Отладка в тестовом режиме

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

Формы и интерфейс пользователя

Добавленный реквизит сам на форме не появится, если форма уже создана. Его нужно вывести вручную.

  1. Откройте объект, вкладка «Формы», двойной щелчок по нужной форме.
  2. В редакторе формы справа вкладка «Реквизиты»: раскройте основной реквизит Объект и найдите своё поле.
  3. Перетащите его мышью в дерево элементов слева, в нужную группу.
  4. В свойствах элемента при необходимости поправьте заголовок, ширину и подсказку.

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

Команды и кнопки на форме

Кнопка на форме — это связка «команда + обработчик»:

  • на вкладке «Команды» редактора формы создайте команду;
  • в её свойстве Действие нажмите кнопку с лупой — платформа создаст процедуру в модуле формы;
  • перетащите команду в командную панель или в дерево элементов.

В процедуре с директивой &НаКлиенте нельзя напрямую работать с базой. Чтение данных выносите в отдельную процедуру &НаСервере или &НаСервереБезКонтекста и вызывайте её с клиента.

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

Обновление конфигурации базы данных: как применить изменения

Пока вы не выполнили обновление, пользователи работают по-старому. Команда Конфигурация → Обновить конфигурацию базы данных (или F7) сравнивает основную конфигурацию с конфигурацией базы и показывает, что изменится.

Что произойдёт после нажатия F7

  1. Платформа проверит конфигурацию. Если есть ошибки в модулях, обновление остановится, а ошибки появятся в окне сообщений.
  2. Откроется окно «Реорганизация информации» со списком изменений структуры: новые поля, таблицы, удаляемые данные.
  3. После кнопки Принять платформа перестроит таблицы базы.

Изменения, которые меняют структуру хранения (новый реквизит, табличная часть, регистр), требуют, чтобы в базе не было других пользователей. Если они есть, платформа сообщит, что не удалось установить монопольный режим.

Если менялись только модули и формы, без изменения структуры данных, платформа может предложить динамическое обновление — без выгона пользователей. Работающие сеансы увидят новую версию после перезапуска программы.

Как освободить базу

  • 📢 Предупредите пользователей заранее и назначьте время, например обеденный перерыв или вечер.
  • 🛑 В типовых конфигурациях есть штатная блокировка сеансов: Администрирование → Обслуживание → Блокировка работы пользователей. Она мягко завершает работу и не пускает новых.
  • ⚙️ В клиент-серверном варианте сеансы видны и в консоли администрирования кластера.

Принудительное завершение сеанса обрывает работу пользователя: несохранённый документ пропадёт. Делайте это только после предупреждения и вне рабочего пика.

Реорганизация большой базы может занять от нескольких минут до часа и дольше. Не прерывайте её и не закрывайте конфигуратор принудительно.

Сохранение, выгрузка и перенос изменений

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

ЧтоКомандаЧто внутриКогда использовать
.cfКонфигурация → Сохранить конфигурацию в файлТолько конфигурация, без данныхПеренос доработки в рабочую базу, архив версии
.dtАдминистрирование → Выгрузить информационную базуКонфигурация и все данныеРезервная копия, копия для тестов
.cfeКонфигурация → Расширения конфигурации, меню расширенияТолько расширениеПеренос доработок, сделанных расширением

Перенос доработки из тестовой базы в рабочую

Есть два пути, и выбор зависит от того, правил ли кто-то рабочую базу параллельно.

  • 🔁 Полная замена. Конфигурация → Загрузить конфигурацию из файла и выбор .cf. Основная конфигурация рабочей базы будет заменена целиком. Подходит, если рабочую базу никто не трогал.
  • 🧮 Сравнение и объединение. Конфигурация → Сравнить, объединить с конфигурацией из файла. Платформа покажет дерево различий, и вы отметите галочками только свои изменения. Подходит, если в рабочей базе есть свои правки или она новее.

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

Групповая разработка: хранилище конфигурации

Если правят двое и больше, работайте через хранилище: Конфигурация → Хранилище конфигурации. Разработчик захватывает объект, правит его и помещает обратно с комментарием. Хранилище ведёт историю версий, и любую правку можно откатить или посмотреть, кто и когда её сделал.

Рабочая база при этом обычно не подключается к хранилищу напрямую. В неё переносят готовую версию через .cf или через объединение.

Расширение конфигурации вместо правки основной

Расширения появились в платформе 8.3.6. Это отдельный слой поверх конфигурации: вы добавляете в расширение свои реквизиты, формы, обработчики, а основная конфигурация остаётся на поддержке и обновляется в обычном режиме.

Создать расширение : Конфигурация → Расширения конфигурации, кнопка добавления. В дереве расширения заимствуйте объект из основной конфигурации (контекстное меню объекта основной конфигурации, команда Добавить в расширение) и дорабатывайте его.

Когда что выбирать:

  • ✅ Расширение — новые реквизиты, правки форм, дополнительные проверки при записи, свои отчёты и обработки для типовой конфигурации.
  • 🛠️ Правка основной конфигурации — самописные конфигурации без поставщика, глубокие изменения логики, которые расширение не позволяет сделать, или когда конфигурация уже снята с поддержки.

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

Частые ошибки при доработке конфигурации

  • ❌ Сохранили, но не обновили базу. Пользователи жалуются, что «ничего не поменялось». Звёздочка в заголовке дерева подскажет, что F7 ещё не нажата.
  • ❌ Новый объект не виден пользователям. Не выданы права в ролях или объект не включён в подсистему.
  • ❌ Сняли объекты с поддержки целиком. Правило «снят с поддержки» на всю конфигурацию отрезает её от обновлений. Выбирайте сохранение поддержки или расширение.
  • ❌ Загрузили .cf поверх рабочей базы с чужими правками. Полная загрузка стирает всё, чего не было в файле. Когда сомневаетесь — объединение.
  • ❌ Удалили реквизит с данными. При реорганизации данные пропадут без возврата. Сначала префикс Удалить, потом удаление.
Перед обновлением рабочей базы
Выполнено: 0 / 5

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

Можно ли править конфигурацию, пока пользователи работают в базе?
Да, редактировать основную конфигурацию можно. Ограничение касается только применения изменений структуры данных: для этого в базе не должно быть других сеансов.
Почему кнопка «Обновить конфигурацию базы данных» неактивна?
Основная конфигурация совпадает с конфигурацией базы: изменений нет или они не сохранены. Сохраните конфигурацию через Ctrl+S и повторите.
Как вернуть типовую конфигурацию на поддержку после правок?
Полностью вернуть исходное состояние можно загрузкой чистого .cf поставщика, но доработки при этом пропадут. Поэтому перед включением изменений сохраните исходную конфигурацию в файл.
Слетят ли мои изменения после обновления типовой?
При правиле «редактируется с сохранением поддержки» не слетят: при обновлении платформа покажет сравнение, и вы сохраните свои правки при объединении. Изменения в расширении обновление основной конфигурации не затрагивает, но после него расширение стоит проверить на совместимость.
Где посмотреть, что именно изменено относительно типовой?
В Конфигурация → Сравнить конфигурации: выберите для сравнения основную конфигурацию и конфигурацию поставщика. Отчёт о сравнении покажет все отличия по объектам.