Кнопка «Создать» в 1С: добавляем на панель формы и в навигацию

· 9 мин

Содержание

Кнопка «Создать» в 1С — это не одна сущность, а три разные задачи. Пользователю нужно вернуть пропавшую кнопку в списке. Администратору — вывести её в удобное место. Разработчику — написать собственную команду, которая создаёт документ с уже заполненными полями. Метод для каждого случая свой, и смешивать их не надо.

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

Всё написано для платформы 8.3 с интерфейсом «Такси». Примеры кода проверены на типовых конфигурациях: БП 3.0, ЗУП 3.1, УТ 11.

Какой способ выбрать

ЗадачаСпособНужен Конфигуратор
Вернуть или переместить кнопку в спискеНастройка формы пользователемНет
Вывести команду в панель разделов или действийНастройка навигации и действийНет
Кнопка запускает свою обработкуВнешняя обработка с командойДа (для создания)
Создать документ с заполнениемКоманда формы и кодДа
Изменить типовую форму без потери обновленийРасширение конфигурацииДа

Типовую конфигурацию на поддержке напрямую не правьте. После очередного обновления изменения либо слетят, либо заблокируют обновление. Для доработок выбирайте расширение (последний способ в статье).

Настройка панели действий в форме списка

Сначала проверьте, что кнопка не просто спрятана. В большинстве типовых списков «Создать» стоит первой в командной панели, но её можно убрать через настройку формы.

  1. Откройте список (например, «Поступление (акты, накладные)»).
  2. В правом верхнем углу нажмите «Ещё» и выберите Изменить форму....
  3. В открывшемся окне настройки найдите в дереве элементов командную панель списка.
  4. Поставьте галочку у команды «Создать», если она снята, либо добавьте её через кнопку добавления.
  5. Нажмите «ОК» или «Применить» и вернитесь в список.

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

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

Если кнопка на месте, но недоступна (серая), дело не в настройке. Обычно причина одна из трёх:

  • 🔒 у вашей роли нет права «Добавление» на этот документ или справочник;
  • 📂 список открыт как подчинённый (например, из отбора по договору), и платформа не знает, что создавать;
  • 🧾 период закрыт, и документ нельзя добавить задним числом.

Сбросить пользовательскую настройку формы тоже можно: в том же меню «Ещё» есть пункт возврата стандартных настроек. Он помогает, если кнопка пропала после чьих-то экспериментов.

Кнопка в панели навигации и панели действий раздела

Это второй уровень: не форма списка, а раздел программы. Здесь «Создать» выглядит как команда в верхней части раздела, например «Создать → Поступление».

Пользователь настраивает это сам:

  1. Откройте главное меню (значок с тремя полосками) и найдите группу Вид.
  2. Выберите настройку панели действий для текущего раздела.
  3. В левой части окна — доступные команды, в правой — уже выведенные. Перенесите нужную стрелкой.
  4. Порядок команд меняется кнопками вверх и вниз.

Для навигации (левая панель раздела) есть аналогичный пункт «Настройка навигации». Там же можно скрыть команды, которыми вы не пользуетесь, и освободить место.

У разработчика путь другой. В Конфигураторе откройте нужную подсистему, перейдите на закладку «Командный интерфейс» и добавьте команду в группу «Панель действий» (создание) или «Панель навигации » (переход к спискам). Для каждой команды можно задать видимость по ролям и функциональным опциям, поэтому у бухгалтера и у кладовщика один и тот же раздел может выглядеть по-разному.

Команда в подсистеме появится только если у неё включено свойство «Использование» и команда принадлежит объекту, входящему в состав этой подсистемы. Это частая причина «пустой» панели.

Создание внешней обработки с кнопкой запуска

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

Порядок такой:

  1. В Конфигураторе: Файл → Новый → Внешняя обработка.
  2. Задайте имя и синоним. Синоним увидит пользователь.
  3. Добавьте форму обработки. Мастер предложит основную форму: оставьте её.
  4. На закладке «Команды» формы создайте команду, например «СоздатьЗаказ», и привяжите к ней действие (обработчик на клиенте).
  5. Перетащите команду в командную панель формы. Кнопка появится на форме.
  6. Сохраните файл: Файл → Сохранить.

Простейший обработчик, который открывает форму нового документа:

&НаКлиенте
Процедура СоздатьЗаказ(Команда)
    ОткрытьФорму("Документ.ЗаказПокупателя.ФормаОбъекта");
КонецПроцедуры

Имя документа подставьте своё. В БП 3.0 заказа покупателя нет, там используется, например, Документ.РеализацияТоваровУслуг.ФормаОбъекта.

Как подключить обработку, чтобы кнопка была у всех

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

  • Добавьте файл .epf в справочник дополнительных обработок.
  • Укажите вид (например, заполнение объекта или создание связанных объектов).
  • Выберите, в каких списках и формах команда будет показана.
  • Назначьте доступ по пользователям или группам.

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

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

Программный вызов создания документа

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

Пример: создать реализацию с уже выбранным контрагентом из текущей строки списка.

&НаКлиенте
Процедура СоздатьРеализацию(Команда)
    ТекущиеДанные = Элементы.Список.ТекущиеДанные;
    Если ТекущиеДанные = Неопределено Тогда
        ПоказатьПредупреждение(, "Выберите строку в списке.");
        Возврат;
    КонецЕсли;

    ЗначенияЗаполнения = Новый Структура("Контрагент", ТекущиеДанные.Контрагент);
    ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ЗначенияЗаполнения);
    ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаОбъекта", ПараметрыФормы, ЭтотОбъект);
КонецПроцедуры

Что здесь важно:

  • 🔹 ТекущиеДанные может быть Неопределено, если в списке ничего не выделено. Проверка обязательна.
  • 🔹 Имя реквизита в структуре заполнения должно совпадать с именем реквизита документа. Опечатка не даст ошибки, поле просто останется пустым.
  • 🔹 Если в списке нет колонки «Контрагент», обращение к ней вызовет ошибку. Добавьте её в запрос списка или возьмите значение другим способом.

Другой вариант, когда документ нужно создать «в фоне», без показа формы. Тогда код выносят на сервер:

&НаСервереБезКонтекста
Функция СоздатьДокументНаСервере(Контрагент)
    Документ = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
    Документ.Дата = ТекущаяДатаСеанса();
    Документ.Контрагент = Контрагент;
    Документ.Записать();
    Возврат Документ.Ссылка;
КонецФункции

Запись без проведения (Записать() по умолчанию) безопасна. Проведение через Записать(РежимЗаписиДокумента.Проведение) делайте только после проверки заполнения: иначе получите ошибки контроля или неверные проводки.

Для создания «на основании» используйте штатный механизм: в документе-источнике есть команда создания на основании, и обычно она настроена как раз в панели формы. Своя обработка вам нужна, только если штатной команды нет.

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

Расширения появились в платформе 8.3.6. Они позволяют добавить кнопку в типовую форму, а конфигурация остаётся «на поддержке».

Порядок действий:

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

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

Что стоит учесть:

  • 🧩 имена команд и элементов в расширении получают ваш префикс;
  • 🔁 при обновлении типовой конфигурации заимствованная форма синхронизируется, поэтому после релиза зайдите в расширение и проверьте, не появилось ли сообщение о расхождении;
  • 🧪 сначала проверьте расширение на копии базы, и только потом включайте в рабочей.

Куда лучше поставить кнопку

Место зависит от того, как часто ею пользуются, и от того, кому она нужна.

  • 📌 Команда нужна каждый день одному отделу: выводите в панель действий раздела и ограничивайте ролью.
  • 📌 Команда относится к конкретному списку: ставьте в командную панель этой формы, рядом со стандартным «Создать».
  • 📌 Команда редкая, служебная: оставьте в подменю «Ещё», чтобы не загромождать панель.
  • 📌 Кнопка нужна всем и везде: подумайте, не проще ли обучить людей штатной команде. Каждая лишняя кнопка делает форму тяжелее для новичка.

Кнопки с похожими названиями сбивают с толку. «Создать» и «Создать документ» рядом — плохое решение. Дайте своей команде понятное имя: «Создать реализацию по строке», «Создать заказ поставщику ».

Отладка и тестирование кнопки

Кнопка добавлена, но ничего не происходит или появляется ошибка. Проверьте по порядку.

Кнопка не видна.

  • Проверьте видимость элемента формы в Конфигураторе (свойство «Видимость»).
  • Посмотрите, не ограничена ли команда ролью или функциональной опцией.
  • Закройте и откройте программу заново: часть изменений интерфейса применяется только после перезапуска.

Кнопка видна, но не работает .

  1. Запустите базу в режиме отладки: Отладка → Начать отладку (клавиша F5).
  2. Поставьте точку останова в обработчике команды (клавиша F9 на нужной строке).
  3. Нажмите кнопку в программе. Выполнение остановится на точке.
  4. Идите по коду клавишей F11 (шаг с заходом) и смотрите значения переменных в окне «Вычислить выражение».

Если точка не срабатывает, значит, команда привязана не к тому обработчику или выполняется в другом контексте (клиент вместо сервера). Сверьте директивы &НаКлиенте и &НаСервере.

Контрольные проверки перед выдачей пользователям

Проверка кнопки
Выполнено: 0 / 6

Типичные ошибки

  • 🚫 Поле заполнения названо не так, как реквизит документа: форма открывается, а поле пустое.
  • 🚫 Обращение к колонке, которой нет в списке: ошибка в момент нажатия.
  • 🚫 Код вызывается на клиенте, а использует серверный объект. Нужен вызов серверной процедуры.
  • 🚫 Расширение добавлено, но не применено к базе.

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

Почему «Создать» в списке серая?
Чаще всего не хватает права «Добавление» у роли, либо список открыт с отбором, при котором платформа не может создать элемент. Проверьте права в профиле пользователя.
Можно ли добавить кнопку только себе, не трогая других пользователей?
Да. Настройка формы и панели действий через меню «Ещё» и главное меню хранится на пользователя и не влияет на остальных.
Нужны ли права программиста, чтобы вернуть пропавшую кнопку?
Нет. Достаточно права на настройку интерфейса. Права разработчика требуются для Конфигуратора.
Чем внешняя обработка лучше расширения?
Она проще и не требует обновления базы, но слабее встроена в формы. Если кнопка должна жить прямо в типовой форме и работать со всем её контекстом, выбирайте расширение.
Как открыть форму нового документа с заполненным полем?
Передайте параметр ЗначенияЗаполнения в ОткрытьФорму, как показано в примере с реализацией. Имена реквизитов должны совпадать с документом.