Новый документ в расширении конфигурации 1С 8.3: от создания до прав доступа

· 9 мин

Содержание

Чтобы добавить документ в расширение 1С, откройте Конфигуратор, перейдите в Конфигурация → Расширения конфигурации, откройте нужное расширение и в его дереве нажмите правой кнопкой на ветку «Документы» → «Добавить». Имя нового документа обязательно начнётся с префикса расширения, например Расш1_ЗаявкаНаЗакупку. Дальше документ настраивают так же, как в основной конфигурации, но с тремя отличиями: подсистемы и чужие справочники нужно заимствовать, права выдавать через роль расширения, а базу данных — обновлять отдельно для расширения.

Собственные объекты с данными (справочники, документы, регистры) в расширениях появились в платформе 8.3.11. На более ранних версиях расширение умеет только менять формы, модули и добавлять отчёты и обработки. Поэтому первым делом проверьте номер платформы: он должен быть не ниже 8.3.11, а режим совместимости расширения — не ниже этого же значения.

1. Подготовка: копия базы и создание расширения

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

Перед началом сделайте выгрузку базы в .dt или резервную копию SQL и отработайте всё на копии.

Что проверить заранее:

  • 🧩 Платформа — Справка → О программе, номер не ниже 8.3.11.
  • 🔒 Конфигурация — расширения работают и на конфигурации на поддержке, снимать её с поддержки не нужно. Это главный плюс подхода: обновления типовой не затирают ваш документ.
  • 👤 Права — нужен пользователь с административными правами, иначе пункт «Расширения конфигурации » будет недоступен.

Если расширения ещё нет, создайте его:

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

Свойство Безопасный режим в расширении включено по умолчанию. Для обычного документа с проведением этого достаточно. Отключать его нужно, только если модуль вызывает внешние компоненты, работает с файлами на сервере или COM-объектами.

2. Как добавить документ в расширение конфигурации

В дереве расширения найдите ветку «Документы» и через контекстное меню выберите «Добавить». Откроется окно редактирования объекта с вкладками.

Основные свойства

На вкладке «Основные» укажите:

  • Имя — платформа уже вписала префикс, допишите смысловую часть: Расш1_ЗаявкаНаЗакупку.
  • Синоним — «Заявка на закупку». Префикс в синоним не попадает, пользователь его не увидит.
  • Представление объекта и Представление списка — как документ называется в шапке формы и в заголовке журнала.

Реквизиты и табличные части

Вкладка «Данные» — главная. Здесь описывают, что хранит документ.

Что добавитьПримерТип
Реквизит шапкиОрганизацияСправочникСсылка.Организации
Реквизит шапкиОтветственныйСправочникСсылка.Пользователи
Реквизит шапкиКомментарийСтрока, 0 (неограниченная)
Табличная частьТовары—
Реквизит табличной частиНоменклатураСправочникСсылка.Номенклатура
Реквизит табличной частиКоличествоЧисло 15.3

Имена реквизитов собственного документа префикс не требуют. Префикс нужен только объектам верхнего уровня.

Ссылки на справочники основной конфигурации

Расширение не видит объекты типовой напрямую. Чтобы указать тип СправочникСсылка.Номенклатура, справочник нужно заимствовать: в дереве основной конфигурации нажмите на него правой кнопкой → «Добавить в расширение». Заимствованный объект появится в расширении с жёлтой пиктограммой, его структура не меняется.

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

3. Нумерация и место документа в подсистемах

Настройки номера

Вкладка «Нумерация» задаёт, как документ получает номер:

  • 🔢 Тип номера — «Строка» удобнее: можно добавлять префиксы организации или подразделения.
  • 📏 Длина номера — для строки обычно 11 символов, как у большинства типовых документов.
  • 📅 Периодичность — «В пределах года» сбрасывает нумерацию 1 января, «Непериодический» ведёт сквозной счёт.
  • ✅ Контроль уникальности — включите, чтобы платформа не дала записать два документа с одним номером в пределах периода.
  • ⚙️ Автонумерация — оставьте включённой, иначе номер придётся заполнять кодом.

Если документ должен нумероваться общим счётчиком с другими документами, создайте в расширении свой нумератор в ветке «Общие → Нумераторы» и укажите его в свойстве «Нумератор».

Подсистемы: свой раздел или типовой

Без подсистемы документ не появится ни в одном разделе интерфейса. Вариантов два.

Своя подсистема. В ветке «Общие → Подсистемы» расширения добавьте подсистему, например Расш1_Закупки, и на вкладке «Состав» отметьте документ. В интерфейсе появится новый раздел.

Типовая подсистема. Заимствуйте нужный раздел, например «Закупки», через «Добавить в расширение». Затем откройте заимствованную подсистему, перейдите на вкладку «Состав» и отметьте ваш документ. Типовая подсистема при этом не меняется — состав дополняется только в расширении.

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

4. Форма документа и командный интерфейс

Создание форм

На вкладке «Формы» нажмите «Добавить» рядом с основной формой документа. Запустится конструктор формы:

  1. Выберите тип — «Форма документа».
  2. Отметьте реквизиты шапки и табличную часть, которые нужно вывести.
  3. Нажмите «Готово». Платформа создаст форму и назначит её основной.

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

В редакторе формы реквизиты перетаскивают из правой панели в дерево элементов. Табличную часть выводят целиком — платформа сама создаст таблицу с колонками.

Обработчики формы

Модуль формы открывается на вкладке «Модуль» редактора формы. Типичный пример — заполнение организации и ответственного при создании нового документа:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	Если Объект.Ссылка.Пустая() Тогда
		Объект.Ответственный = Пользователи.ТекущийПользователь();
	КонецЕсли;

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

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

Командный интерфейс раздела

Когда документ включён в подсистему, команда открытия списка появляется в разделе автоматически. Чтобы вынести её на видное место:

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

5. Программная логика: модуль объекта и проведение

У собственного документа расширения модуль объекта пишется как обычный. Аннотации &Перед, &После и &Вместо здесь не нужны — они служат для перехвата методов заимствованных объектов.

Проверка заполнения

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)

	Если Товары.Количество() = 0 Тогда
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = "Заполните табличную часть ""Товары""";
		Сообщение.Поле = "Объект.Товары";
		Сообщение.Сообщить();
		Отказ = Истина;
	КонецЕсли;

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

Обязательность реквизитов проще задать без кода: в свойствах реквизита поставьте «Проверка заполнения» = «Выдавать ошибку».

Проведение по своему регистру

Чтобы документ проводился, на вкладке «Движения» включите «Проведение» = «Разрешить» и отметьте регистр. Регистр создайте в том же расширении. Пусть это регистр накопления Расш1_ЗаявкиКЗакупке вида «Остатки» с измерением Номенклатура и ресурсом Количество.

Кнопка «Конструктор движений» на той же вкладке сгенерирует заготовку. Итоговый код обработчика:

Процедура ОбработкаПроведения(Отказ, Режим)

	Движения.Расш1_ЗаявкиКЗакупке.Записывать = Истина;

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

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

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

Заполнение на основании

Если заявку создают из другого документа, заимствуйте его и на вкладке «Ввод на основании» вашего документа добавьте его в список «Вводится на основании». В модуле объекта опишите ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка) с проверкой типа ДанныеЗаполнения.

6. Права доступа: без роли документ никто не увидит

Самая частая жалоба после установки: «расширение подключено, а документа нет». Почти всегда причина в правах. Роли основной конфигурации ничего не знают о новом объекте, даже «Полные права».

Есть два способа выдать права.

СпособКак сделатьКогда выбирать
Своя роль в расширении«Общие → Роли» → добавить Расш1_ЗаявкиНаЗакупку, отметить права на документ и регистрНужен точный контроль, кто работает с документом
Заимствованная рольЗаимствовать типовую роль, в ней отметить права на новый документДокумент нужен всем, у кого уже есть эта роль

Минимальный набор прав для пользователя, который создаёт и проводит заявки:

  • 📖 Чтение, Добавление, Изменение;
  • ✅ Проведение, Отмена проведения;
  • 🖱 Интерактивное добавление, Интерактивное проведение, Просмотр, Редактирование;
  • 📊 На регистр — Чтение (для отчётов) и Просмотр.

Право «Удаление» обычным пользователям не давайте: хватит «Интерактивной пометки удаления».

В конфигурациях на БСП роль из расширения не назначается пользователю напрямую. Её добавляют в профиль групп доступа: Администрирование → Настройки пользователей и прав → Профили групп доступа. Откройте профиль, отметьте роль расширения, запишите — права получат все участники групп с этим профилем.

7. Обновление базы, тестирование и перенос

Применение изменений

Новый документ — это новые таблицы в базе. После настройки:

  1. В окне расширения выберите Конфигурация → Обновить конфигурацию базы данных (F7).
  2. Конфигуратор покажет список изменений структуры — проверьте, что там только объекты расширения.
  3. Подтвердите. Для обновления структуры нужен монопольный доступ к базе: на рабочей базе делайте это в нерабочее время, предупредив пользователей.

В списке «Расширения конфигурации» проверьте флаг Активно. Неактивное расширение не применяется.

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

Запустите Отладка → Начать отладку (F5) под пользователем с обычными правами, а не под администратором. Проверьте:

Проверка документа после добавления
Выполнено: 0 / 6

Записи регистра удобно смотреть через «Перейти → Расш1_ЗаявкиКЗакупке» в форме проведённого документа или через Функции для технического специалиста.

Перенос в рабочую базу

Расширение переносят файлом .cfe:

  1. В окне расширения — Конфигурация → Сохранить в файл.
  2. В рабочей базе — Конфигурация → Расширения конфигурации → «Добавить» → «Загрузить из файла».
  3. Обновите конфигурацию базы данных.

В конфигурациях на БСП то же можно сделать без Конфигуратора: Администрирование → Печатные формы, отчеты и обработки → Расширения.

Удаление расширения стирает таблицы его объектов вместе с данными. Если документ уже используется, для отключения снимайте флаг «Активно», а не удаляйте расширение.

Диагностика: выберите симптом

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

Можно ли добавить документ в расширение, если конфигурация на поддержке?
Да. Расширение не меняет основную конфигурацию, поэтому снимать её с поддержки не нужно. Типовую можно обновлять дальше.
Что будет с документами, если обновить типовую конфигурацию?
Данные собственного документа хранятся в таблицах расширения и обновлением типовой не затрагиваются. Риск один: если поставщик изменит заимствованные объекты, расширение придётся поправить.
Можно ли потом перенести документ из расширения в основную конфигурацию?
Готового механизма переноса с данными нет. Обычно в основной конфигурации создают такой же документ, переносят данные обработкой и только потом отключают расширение.
Работают ли расширения с собственными документами в облаке 1С:Фреш?
Ограничения зависят от сервиса и режима разделения данных. Перед разработкой уточните у провайдера, разрешены ли расширения, меняющие структуру данных.
Нужно ли отключать безопасный режим для проведения документа?
Нет. Запись документа и движений по регистрам работает в безопасном режиме. Отключение требуется для работы с файлами сервера, внешними компонентами и COM.