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

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

И кнопка уже добавлена!
Но не всегда такой вариант приемлем. Для некоторых задач нужно изменять форму программным образом, например, для формирования кнопок команд печати документов, где для каждой печатной формы создается собственная кнопка. Заранее знать состав всех печатных форм (включая внешние) мы не можем, поэтому добавление кнопок выполняется автоматичкески.
Программное добавление
И так, то что мы сделали в 2 клика сделаем с помощью нескольких строк кода. Перед тем как добавлять команду формы, нам нужно определить процедуру-обработчик этой команды. Добавим в модуль формы следующую процедуру:
&НаКлиенте Процедура Предупредить(Элемент) Предупреждение("Предупреждаю!"); КонецПроцедуры
Теперь нам нужно добавить команду формы и присвоить в качестве обработчика процедуру выше. Добавлять команду нужно на стороне сервера, поэтому используем событие формы «ПриСозданиинаСервере»:
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // Добвляем команду формы НоваяКоманда = ЭтаФорма.Команды.Добавить("Предупредить"); // Свойство "Действие" содержит имя процедуры-обработчика команды НоваяКоманда.Действие = "Предупредить"; КонецПроцедуры
Отлично, осталось добавить элемент формы типа «Кнопка формы» для команды формы «Предупредить». Дополним обработчик события «ПриСозданииНаСервере»:
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // Добвляем команду формы НоваяКоманда = ЭтаФорма.Команды.Добавить("Предупредить"); // Свойство "Действие" содержит имя процедуры-обработчика команды НоваяКоманда.Действие = "Предупредить"; // Добавляем элемент "КомандаПредупредить" с типом "Кнопка формы" НовыйЭлемент = Элементы.Добавить("КомандаПредупредить", Тип("КнопкаФормы")); // Присваиваем команду для созданной кнопке НовыйЭлемент.ИмяКоманды = "Предупредить"; КонецПроцедуры
На этом все. Если мы откроем эту форму в режиме 1С:Предприятия, то увидим следующее:

Пример небольшой и врятли даст ответы нв все вопросы по программной модификации форм. Он лишь может подсказать общий принцип.
Читайте также
Когда количество изменений на предприятии превышает критический уровень в сторону необновляемых конфигураций — 1С предлагает создание управляемого приложения
Настройка отчета на СКД без кодирования
Возможность отбора по подстроке реквизитов
Разработки

Как свернуть все активные окна
Обработка — Как сворачивать активные окна

Табло для управляемого приложения, тонкий клиент
Обработка — табло управляемого приложения

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

Теперь, если пользователь открыл, например, список быстрого выбора и обнаружил, что среди показанных элементов нет нужного, он может, не покидая эту форму, сразу же нажать на кнопку создания нового элемента. Будет открыта форма нового элемента, в которой он может заполнить нужные поля. А когда он запишет и закроет форму нового элемента, ссылка на этот элемент автоматически подставится в поле ввода.

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

Тогда он нажимает кнопку создания нового элемента и обнаруживает, что наименование, которое он искал, система уже подставила в поле Наименование нового элемента!

По большому счёту остаётся только нажать кнопку Записать и закрыть, — и всё!
Таким образом от того чтобы в базе данных появился новый элемент с искомым наименованием, а в поле ввода ссылка на него, пользователя отделяет теперь всего лишь нажатие двух кнопок!
Эта замечательная возможность доступна не только в новом интерфейсе Такси, но и в старом интерфейсе тоже.

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

Не устроил ответ?
Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.
Реклама
Новые вакансии
- Вакансия: Разработчик 1С, Москва, удалёнка/гибрид, 200-300 net от yskinkurogova
Вчера в 13:25 - Вакансия аналитика 1с УТ от 200K, гибрид от Татьяна Астахова
25 января 2024 г. - Вакансия Программист 1С (Москва, гибрид) 250-300т.р. от paulaja03@gmail.com
23 января 2024 г.
Как создать кнопку в 1с
The service you’ve requested couldn’t be identified
No matches have been found between requested website and protected IP address
If you are trying to visit this site, please try again later.
If you are a target website owner please make sure that:
— DNS A record points to the protected IP address for the requested website
— The DDoS protection and optimization service is active for the requested website
Protection and Acceleration by DDoS-Guard