Вывести команду. Выводит команду в форму отчета в виде кнопки в указанную группу.
// Выводит команду в форму отчета в виде кнопки в указанную группу.
// Также регистрирует команду, защищая ее от удаления при перерисовке формы.
// Для вызова из события ПриСозданииНаСервере формы отчета.
//
// Параметры:
// ФормаОтчета - ФормаКлиентскогоПриложения - форма отчета, в которую добавляется команда.
// КомандаИлиКоманды - КомандаФормы - команда, с которой будут связаны выводимые кнопки.
// Если в свойстве Действие указана пустая строка,
// то при выполнении команды будет вызвана процедура ОтчетыКлиентПереопределяемый.ОбработчикКоманды.
// Если в свойстве Действие указана строка вида "<ИмяКлиентскогоОбщегоМодуля>.<ИмяЭкспортнойПроцедуры>",
// то при выполнении команды в указанном модуле будет вызвана указанная процедура с двумя параметрами,
// аналогичным двум первым параметрам процедуры ОтчетыКлиентПереопределяемый.ОбработчикКоманды.
// - Массив - набор команд (КомандаФормы), которые будут выведены в указанную группу.
// ТипГруппы - Строка - условное имя группы, в которой требуется вывести кнопку.
// "Главное" - группа с кнопками "Сформировать" и "Формировать сразу".
// "Настройки" - группа с кнопками "Настройки", "Изменить вариант отчета" и т.п.
// "РаботаСТабличнымДокументом" - группа с кнопками "Найти", "Развернуть все группы" и т.п.
// "Интеграция" - группа такими кнопками как "Печать, Сохранить, Отправить" и т.п.
// "ПодменюОтправить" - подменю в группе "Интеграция" для отправки по почте.
// "Прочее" - группа с кнопками "Изменить форму", "Справка" и т.п.
// ВНачалоГруппы - Булево - если Истина, то кнопка будет выведена в начале группы. Иначе в конце группы.
// ТолькоВоВсехДействиях - Булево - если Истина, то кнопка будет выведена только в подменю "Еще".
// Иначе и в подменю "Еще", и в командной панели формы.
// СуффиксПодгруппы - Строка - если заполнен, то команды будут объединены в подгруппу.
// СуффиксПодгруппы добавляется к имени группы справа.
//
Процедура ВывестиКоманду(ФормаОтчета, КомандаИлиКоманды, ТипГруппы, ВНачалоГруппы = Ложь, ТолькоВоВсехДействиях = Ложь, СуффиксПодгруппы = "") Экспорт
ПередЧемВставить = Неопределено;
ГруппаЕще = Неопределено;
Если ТипГруппы = "Главное" Тогда
Группа = ФормаОтчета.Элементы.ГруппаГлавное;
ГруппаЕще = ФормаОтчета.Элементы.ГруппаГлавноеЕще;
ИначеЕсли ТипГруппы = "Настройки" Тогда
Группа = ФормаОтчета.Элементы.ГруппаНастройкиОтчета;
ГруппаЕще = ФормаОтчета.Элементы.ГруппаНастройкиОтчетаЕще;
ИначеЕсли ТипГруппы = "РаботаСТабличнымДокументом" Тогда
Группа = ФормаОтчета.Элементы.ГруппаРаботаВТаблице;
ГруппаЕще = ФормаОтчета.Элементы.ГруппаРаботаВТаблицеЕще;
ИначеЕсли ТипГруппы = "Интеграция" Тогда
Группа = ФормаОтчета.Элементы.ГруппаВывод;
ГруппаЕще = ФормаОтчета.Элементы.ГруппаВыводЕще;
ИначеЕсли ТипГруппы = "ПодменюОтправить" Тогда
Группа = ФормаОтчета.Элементы.ГруппаОтправить;
ГруппаЕще = ФормаОтчета.Элементы.ГруппаОтправитьЕще;
ИначеЕсли ТипГруппы = "Прочее" Тогда
Группа = ФормаОтчета.Элементы.ОсновнаяКоманднаяПанель;
ГруппаЕще = ФормаОтчета.Элементы.КоманднаяПанельЕще;
ПередЧемВставить = ?(ВНачалоГруппы, ФормаОтчета.Элементы.НовоеОкно, Неопределено);
Иначе
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'При вызове процедуры ""%1"" передано недопустимо значение параметра ""%2"".'"),
"ОтчетыСервер.ВывестиКоманду",
"ТипГруппы");
КонецЕсли;
Если ТолькоВоВсехДействиях Тогда
Группа = ГруппаЕще;
ГруппаЕще = Неопределено;
КонецЕсли;
Если ВНачалоГруппы И ПередЧемВставить = Неопределено Тогда
ПередЧемВставить = Группа.ПодчиненныеЭлементы[0];
КонецЕсли;
Если ТипЗнч(КомандаИлиКоманды) = Тип("КомандаФормы") Тогда
Команды = Новый Массив;
Команды.Добавить(КомандаИлиКоманды);
Иначе
Команды = КомандаИлиКоманды;
КонецЕсли;
Если СуффиксПодгруппы <> "" Тогда
Подгруппа = ФормаОтчета.Элементы.Найти(Группа.Имя + СуффиксПодгруппы);
Если Подгруппа = Неопределено Тогда
Подгруппа = ФормаОтчета.Элементы.Вставить(Группа.Имя + СуффиксПодгруппы, Тип("ГруппаФормы"), Группа, ПередЧемВставить);
Если Подгруппа.Вид = ВидГруппыФормы.Подменю Тогда
Подгруппа.Вид = ВидГруппыФормы.ГруппаКнопок;
КонецЕсли;
КонецЕсли;
Группа = Подгруппа;
ПередЧемВставить = Неопределено;
КонецЕсли;
Для Каждого Команда Из Команды Цикл
Обработчик = ?(СтрЧислоВхождений(Команда.Действие, ".") = 0, "", Команда.Действие);
ФормаОтчета.ПостоянныеКоманды.Добавить(Команда.Имя, Обработчик);
Команда.Действие = "Подключаемый_Команда";
Кнопка = ФормаОтчета.Элементы.Вставить(Команда.Имя, Тип("КнопкаФормы"), Группа, ПередЧемВставить);
Кнопка.ИмяКоманды = Команда.Имя;
Кнопка.ТолькоВоВсехДействиях = ТолькоВоВсехДействиях;
Если ГруппаЕще = Неопределено Тогда
Продолжить;
КонецЕсли;
Кнопка = ФормаОтчета.Элементы.Вставить(Команда.Имя + "Еще", Тип("КнопкаФормы"), ГруппаЕще);
Кнопка.ИмяКоманды = Команда.Имя;
Кнопка.ТолькоВоВсехДействиях = Истина;
КонецЦикла;
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
Вывести список пользователей с пустым паролем
ВывестиКонтекстныеСсылки (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)