Кнопка «Создать» в 1С: добавляем на панель формы и в навигацию
Содержание
Кнопка «Создать» в 1С — это не одна сущность, а три разные задачи. Пользователю нужно вернуть пропавшую кнопку в списке. Администратору — вывести её в удобное место. Разработчику — написать собственную команду, которая создаёт документ с уже заполненными полями. Метод для каждого случая свой, и смешивать их не надо.
Начните с простого: чаще всего кнопку не нужно «добавлять», её достаточно включить в настройках формы. Если же стандартной команды не хватает (нужно создать документ на основании другого, с готовым контрагентом и складом), понадобится Конфигуратор. Ниже — все варианты, от безопасного к сложному.
Всё написано для платформы 8.3 с интерфейсом «Такси». Примеры кода проверены на типовых конфигурациях: БП 3.0, ЗУП 3.1, УТ 11.
Какой способ выбрать
| Задача | Способ | Нужен Конфигуратор |
|---|---|---|
| Вернуть или переместить кнопку в списке | Настройка формы пользователем | Нет |
| Вывести команду в панель разделов или действий | Настройка навигации и действий | Нет |
| Кнопка запускает свою обработку | Внешняя обработка с командой | Да (для создания) |
| Создать документ с заполнением | Команда формы и код | Да |
| Изменить типовую форму без потери обновлений | Расширение конфигурации | Да |
Типовую конфигурацию на поддержке напрямую не правьте. После очередного обновления изменения либо слетят, либо заблокируют обновление. Для доработок выбирайте расширение (последний способ в статье).
Настройка панели действий в форме списка
Сначала проверьте, что кнопка не просто спрятана. В большинстве типовых списков «Создать» стоит первой в командной панели, но её можно убрать через настройку формы.
- Откройте список (например, «Поступление (акты, накладные)»).
- В правом верхнем углу нажмите «Ещё» и выберите
Изменить форму.... - В открывшемся окне настройки найдите в дереве элементов командную панель списка.
- Поставьте галочку у команды «Создать», если она снята, либо добавьте её через кнопку добавления.
- Нажмите «ОК» или «Применить» и вернитесь в список.
Команду можно перетащить в начало панели, а лишние убрать. Настройка сохраняется для вашего пользователя и не влияет на остальных.
Если пункта Изменить форму... нет, у профиля пользователя не включено право на настройку интерфейса. Его выдаёт администратор через профиль групп доступа.
Если кнопка на месте, но недоступна (серая), дело не в настройке. Обычно причина одна из трёх:
- 🔒 у вашей роли нет права «Добавление» на этот документ или справочник;
- 📂 список открыт как подчинённый (например, из отбора по договору), и платформа не знает, что создавать;
- 🧾 период закрыт, и документ нельзя добавить задним числом.
Сбросить пользовательскую настройку формы тоже можно: в том же меню «Ещё» есть пункт возврата стандартных настроек. Он помогает, если кнопка пропала после чьих-то экспериментов.
Кнопка в панели навигации и панели действий раздела
Это второй уровень: не форма списка, а раздел программы. Здесь «Создать» выглядит как команда в верхней части раздела, например «Создать → Поступление».
Пользователь настраивает это сам:
- Откройте главное меню (значок с тремя полосками) и найдите группу
Вид. - Выберите настройку панели действий для текущего раздела.
- В левой части окна — доступные команды, в правой — уже выведенные. Перенесите нужную стрелкой.
- Порядок команд меняется кнопками вверх и вниз.
Для навигации (левая панель раздела) есть аналогичный пункт «Настройка навигации». Там же можно скрыть команды, которыми вы не пользуетесь, и освободить место.
У разработчика путь другой. В Конфигураторе откройте нужную подсистему, перейдите на закладку «Командный интерфейс» и добавьте команду в группу «Панель действий» (создание) или «Панель навигации » (переход к спискам). Для каждой команды можно задать видимость по ролям и функциональным опциям, поэтому у бухгалтера и у кладовщика один и тот же раздел может выглядеть по-разному.
Команда в подсистеме появится только если у неё включено свойство «Использование» и команда принадлежит объекту, входящему в состав этой подсистемы. Это частая причина «пустой» панели.
Создание внешней обработки с кнопкой запуска
Когда нужна собственная кнопка, но трогать конфигурацию нельзя, подойдёт внешняя обработка. Она живёт отдельным файлом .epf и подключается без обновления базы.
Порядок такой:
- В Конфигураторе:
Файл → Новый → Внешняя обработка. - Задайте имя и синоним. Синоним увидит пользователь.
- Добавьте форму обработки. Мастер предложит основную форму: оставьте её.
- На закладке «Команды» формы создайте команду, например «СоздатьЗаказ», и привяжите к ней действие (обработчик на клиенте).
- Перетащите команду в командную панель формы. Кнопка появится на форме.
- Сохраните файл:
Файл → Сохранить.
Простейший обработчик, который открывает форму нового документа:
&НаКлиенте
Процедура СоздатьЗаказ(Команда)
ОткрытьФорму("Документ.ЗаказПокупателя.ФормаОбъекта");
КонецПроцедуры
Имя документа подставьте своё. В БП 3.0 заказа покупателя нет, там используется, например, Документ.РеализацияТоваровУслуг.ФормаОбъекта.
Как подключить обработку, чтобы кнопка была у всех
Чтобы пользователи запускали её из программы, не открывая файл вручную, используйте механизм дополнительных обработок. В типовых конфигурациях он есть: раздел Администрирование → Печатные формы, отчёты и обработки → Дополнительные отчёты и обработки.
- Добавьте файл
.epfв справочник дополнительных обработок. - Укажите вид (например, заполнение объекта или создание связанных объектов).
- Выберите, в каких списках и формах команда будет показана.
- Назначьте доступ по пользователям или группам.
После этого в нужном списке появится пункт в меню, привязанный к вашей обработке. Если у пользователя команда не видна, проверьте доступ и включён ли режим работы с дополнительными обработками в настройках программы.
Внешняя обработка выполняется с правами пользователя и может изменять данные. Запускайте только файлы, в которых уверены, и держите их под контролем. Не подключайте обработки из случайных источников.
Программный вызов создания документа
Кнопка «Создать» в вашей форме часто должна не просто открыть пустой документ, а заполнить его. Для этого передают значения заполнения параметром формы.
Пример: создать реализацию с уже выбранным контрагентом из текущей строки списка.
&НаКлиенте
Процедура СоздатьРеализацию(Команда)
ТекущиеДанные = Элементы.Список.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
ПоказатьПредупреждение(, "Выберите строку в списке.");
Возврат;
КонецЕсли;
ЗначенияЗаполнения = Новый Структура("Контрагент", ТекущиеДанные.Контрагент);
ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ЗначенияЗаполнения);
ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаОбъекта", ПараметрыФормы, ЭтотОбъект);
КонецПроцедуры
Что здесь важно:
- 🔹
ТекущиеДанныеможет бытьНеопределено, если в списке ничего не выделено. Проверка обязательна. - 🔹 Имя реквизита в структуре заполнения должно совпадать с именем реквизита документа. Опечатка не даст ошибки, поле просто останется пустым.
- 🔹 Если в списке нет колонки «Контрагент», обращение к ней вызовет ошибку. Добавьте её в запрос списка или возьмите значение другим способом.
Другой вариант, когда документ нужно создать «в фоне», без показа формы. Тогда код выносят на сервер:
&НаСервереБезКонтекста
Функция СоздатьДокументНаСервере(Контрагент)
Документ = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
Документ.Дата = ТекущаяДатаСеанса();
Документ.Контрагент = Контрагент;
Документ.Записать();
Возврат Документ.Ссылка;
КонецФункции
Запись без проведения (Записать() по умолчанию) безопасна. Проведение через Записать(РежимЗаписиДокумента.Проведение) делайте только после проверки заполнения: иначе получите ошибки контроля или неверные проводки.
Для создания «на основании» используйте штатный механизм: в документе-источнике есть команда создания на основании, и обычно она настроена как раз в панели формы. Своя обработка вам нужна, только если штатной команды нет.
Расширение конфигурации: кнопка без правки типовой
Расширения появились в платформе 8.3.6. Они позволяют добавить кнопку в типовую форму, а конфигурация остаётся «на поддержке».
Порядок действий:
Конфигурация → Расширения конфигурации → Добавить. Дайте имя и префикс (он защитит ваши объекты от конфликта имён).- В дереве расширения заимствуйте нужный объект (например, справочник «Номенклатура») через контекстное меню.
- Заимствуйте его форму списка.
- В заимствованной форме добавьте команду и перетащите её на командную панель.
- Напишите обработчик в модуле формы расширения. Для перехвата типовых процедур используются аннотации вроде
&После,&Вместо,&Перед. - Сохраните расширение в базу: за это отвечает обновление конфигурации
базы данных (F7 или
Конфигурация → Обновить конфигурацию базы данных).
Загрузка файла .cfe в рабочую базу и применение изменений — это два отдельных действия. Если пользователи не видят кнопку, чаще всего расширение просто не сохранено в базу или отключено в списке расширений.
Что стоит учесть:
- 🧩 имена команд и элементов в расширении получают ваш префикс;
- 🔁 при обновлении типовой конфигурации заимствованная форма синхронизируется, поэтому после релиза зайдите в расширение и проверьте, не появилось ли сообщение о расхождении;
- 🧪 сначала проверьте расширение на копии базы, и только потом включайте в рабочей.
Куда лучше поставить кнопку
Место зависит от того, как часто ею пользуются, и от того, кому она нужна.
- 📌 Команда нужна каждый день одному отделу: выводите в панель действий раздела и ограничивайте ролью.
- 📌 Команда относится к конкретному списку: ставьте в командную панель этой формы, рядом со стандартным «Создать».
- 📌 Команда редкая, служебная: оставьте в подменю «Ещё», чтобы не загромождать панель.
- 📌 Кнопка нужна всем и везде: подумайте, не проще ли обучить людей штатной команде. Каждая лишняя кнопка делает форму тяжелее для новичка.
Кнопки с похожими названиями сбивают с толку. «Создать» и «Создать документ» рядом — плохое решение. Дайте своей команде понятное имя: «Создать реализацию по строке», «Создать заказ поставщику ».
Отладка и тестирование кнопки
Кнопка добавлена, но ничего не происходит или появляется ошибка. Проверьте по порядку.
Кнопка не видна.
- Проверьте видимость элемента формы в Конфигураторе (свойство «Видимость»).
- Посмотрите, не ограничена ли команда ролью или функциональной опцией.
- Закройте и откройте программу заново: часть изменений интерфейса применяется только после перезапуска.
Кнопка видна, но не работает .
- Запустите базу в режиме отладки:
Отладка → Начать отладку(клавиша F5). - Поставьте точку останова в обработчике команды (клавиша F9 на нужной строке).
- Нажмите кнопку в программе. Выполнение остановится на точке.
- Идите по коду клавишей F11 (шаг с заходом) и смотрите значения переменных в окне «Вычислить выражение».
Если точка не срабатывает, значит, команда привязана не к тому обработчику или выполняется в другом контексте (клиент вместо сервера). Сверьте директивы &НаКлиенте и &НаСервере.
Контрольные проверки перед выдачей пользователям
Типичные ошибки
- 🚫 Поле заполнения названо не так, как реквизит документа: форма открывается, а поле пустое.
- 🚫 Обращение к колонке, которой нет в списке: ошибка в момент нажатия.
- 🚫 Код вызывается на клиенте, а использует серверный объект. Нужен вызов серверной процедуры.
- 🚫 Расширение добавлено, но не применено к базе.
Частые вопросы
Почему «Создать» в списке серая?
Можно ли добавить кнопку только себе, не трогая других пользователей?
Нужны ли права программиста, чтобы вернуть пропавшую кнопку?
Чем внешняя обработка лучше расширения?
Как открыть форму нового документа с заполненным полем?
ЗначенияЗаполнения в ОткрытьФорму, как показано в примере с реализацией. Имена реквизитов должны совпадать с документом.