Как создать команду в 1с
Перейти к содержимому

Как создать команду в 1с

  • автор:

Команда

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

Существуют общие команды — команды, которые не имеют объектной специфики или служат для выполнения действий с объектами, которые не используют стандартные команды.

Команда

Также команды могут существовать и у отдельных объектов конфигурации. Они служат для выполнения операций, связанных именно с этим объектом.

Команда

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

Команда

Действия, выполняемые командой, описываются на встроенном языке в модуле команды.

Команда

Авторы: В.А. Ажеронок, А.В. Островерх, М.Г. Радченко, Е.Ю. Хрусталева

1С 8.3 Как добавить команду на форму программно

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

Программное добавление команд

Для примера я создам простой документ «Поступление» в котором будет только два стандартных реквизита это «Номер» и «Дата» а также три стандартные команды «Провести и закрыть», «Записать» и «Провести». В качестве примера давайте добавим еще одну команду на форму программно, которая например, будет выводить нам какое то сообщение.

1C добавление команды

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

1С 8.3 Как добавить команду на форму программно

Далее пишем следующий код.

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

Обязательно пишите комментарии к своему коду.

Как добавить команду на форму программно

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

1С Как добавить команду программно

Можно изменить внешний вид кнопки сделать её например ссылкой для этого в коде в процедуре на сервере меняем «ОбычнаяКнопка» на «Гиперссылка».

КнопкаФормы.Вид = ВидКнопкиФормы.Гиперссылка; // Вот тут

Как создать команду программно

Вариантов настройки внешнего вида и расположения очень много более подробно об этом можно почитать в синтаксис помощнике.

В большинстве случаев все не стандартные реквизите добавляются именно программно. Если мы откроем команды и саму форму в конфигураторе то увидим что их нет.

1С 8.3 Как добавить команду программно

Это основа которую должен знать каждый.

Как программно добавить команду и разместить на управляемой форме

Код добавляет команду. Назначает ей обработчик. Добавляет кнопку и связывает ее с командой.

При нажатии на кнопку открывается форма списка регистра сведений с отбором по текущему обьъекту.

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

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

— Джон Кеннет Гэлбрейт

1С. Программное добавление кнопки с обработчиком

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

Реализация

Для наглядности создадим новую обработку с «Пустой» формой. Её внешний вид будет следующим

Программное добавление кнопки с обработчиком

В обработчике события формы ПриСозданииНаСервере() добавим код генерации команды и кнопки

&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // Создадим команду Команда = ЭтаФорма.Команды.Добавить("МояКоманда"); Команда.Действие = "ОбработчикМоейКоманды"; // Создадим кнопку и привяжем к ней команду Кнопка = ЭтаФорма.Элементы.Добавить("ВыполнитьМоюКоманду", Тип("КнопкаФормы"), ЭтаФорма.Элементы.ФормаКоманднаяПанель); Кнопка.Заголовок = "Выполнить мою команду"; Кнопка.ИмяКоманды = "МояКоманда"; КонецПроцедуры 

И создадим обработчик нашей команды

&НаКлиенте Процедура ОбработчикМоейКоманды(Команда) // Наш произвольный код для выполнения КонецПроцедуры 

В итоге на форме появится кнопка выполняющая наш обработчик. Выглядеть все это будет как добавленная кнопка в конфигураторе

Программное добавление кнопки с обработчиком

Так же кнопки формы имеют свойство КнопкаПоУмолчанию, если присвоить значение Истина

Кнопка.КнопкаПоУмолчанию = Истина; 

тогда кнопка будет выделена цветом и шрифтом

1С. Программное добавление кнопки с обработчиком

Понравилась статья? Поделиться с друзьями:
Комментарии: 2
Алексей 17.12.2019

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

Guesto (автор) 22.12.2019

Алексей, доброго времени суток! Хороший вопрос! Все верно, код обработчика придется добавить в модуль формы. А теперь давайте посмотрим не только на разработку, но и на сопровождение и дальнейшее обновление доработанной конфигурации. Если добавить команду «руками», то при обновлении дважды измененной формы команда будет потеряна. Ведь, модули формы мы можем сравнить, а формы нет. Если команду добавить программно в модуле формы или соответствующем модуле БСП, а обработчик в модуле формы. При этом выделив все свои процедуры префиксом и поместив их в отдельную область, то мы получим ситуацию, когда все наши изменения можно легко увидеть в сравнении модулей. Не придется держать чек-лист со списком команд/реквизитов/элементов для ручного добавления и перепроверки после обновления. И тут мы приходим к правилу — формы «руками» не правятся вообще. Все «ручные» изменения выявляются на этапе ревью, вносивший такие изменения бурно порицается. Обдумав данный механизм, просится к добавлению:
1. Автотест с открытием форм и исполнением программного изменения;
2. Корректная обработка ситуаций, когда программное изменение не получилось. С соответствующим выводом на этапе тестирования. Не долго думая пишем придуманное выше и наслаждаемся результатом.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *