ВывестиКоманду (БСП)

Автор: 1С
ОбщийМодуль.ОтчетыСервер
БСП

Вывести команду. Выводит команду в форму отчета в виде кнопки в указанную группу.

// Выводит команду в форму отчета в виде кнопки в указанную группу.
// Также регистрирует команду, защищая ее от удаления при перерисовке формы.
// Для вызова из события ПриСозданииНаСервере формы отчета.
//
// Параметры:
//   ФормаОтчета       - ФормаКлиентскогоПриложения - форма отчета, в которую добавляется команда.
//   КомандаИлиКоманды - КомандаФормы     - команда, с которой будут связаны выводимые кнопки.
//					       Если в свойстве Действие указана пустая строка,
//					       то при выполнении команды будет вызвана процедура ОтчетыКлиентПереопределяемый.ОбработчикКоманды.
//					       Если в свойстве Действие указана строка вида "<ИмяКлиентскогоОбщегоМодуля>.<ИмяЭкспортнойПроцедуры>",
//					       то при выполнении команды в указанном модуле будет вызвана указанная процедура с двумя параметрами,
//					       аналогичным двум первым параметрам процедуры ОтчетыКлиентПереопределяемый.ОбработчикКоманды.
//				       - Массив - набор команд (КомандаФормы), которые будут выведены в указанную группу.
//   ТипГруппы         - Строка - условное имя группы, в которой требуется вывести кнопку.
//					       "Главное"          - группа с кнопками "Сформировать" и "Формировать сразу".
//					       "Настройки"        - группа с кнопками "Настройки", "Изменить вариант отчета" и т.п.
//					       "РаботаСТабличнымДокументом" - группа с кнопками "Найти", "Развернуть все группы" и т.п.
//					       "Интеграция"       - группа такими кнопками как "Печать, Сохранить, Отправить" и т.п.
//					       "ПодменюОтправить" - подменю в группе "Интеграция" для отправки по почте.
//					       "Прочее"           - группа с кнопками "Изменить форму", "Справка" и т.п.
//   ВНачалоГруппы      - Булево - если Истина, то кнопка будет выведена в начале группы. Иначе в конце группы.
//   ТолькоВоВсехДействиях - Булево - если Истина, то кнопка будет выведена только в подменю "Еще".
//                                    Иначе и в подменю "Еще", и в командной панели формы.
//   СуффиксПодгруппы   - Строка - если заполнен, то команды будут объединены в подгруппу.
//                                 СуффиксПодгруппы добавляется к имени группы справа.
//
Процедура ВывестиКоманду(ФормаОтчета, КомандаИлиКоманды, ТипГруппы, ВНачалоГруппы = Ложь, ТолькоВоВсехДействиях = Ложь, СуффиксПодгруппы = "") Экспорт
	ПередЧемВставить = Неопределено;
	ГруппаЕще = Неопределено;
	
	Если ТипГруппы = "Главное" Тогда
		Группа = ФормаОтчета.Элементы.ГруппаГлавное;
		ГруппаЕще = ФормаОтчета.Элементы.ГруппаГлавноеЕще;
	ИначеЕсли ТипГруппы = "Настройки" Тогда
		Группа = ФормаОтчета.Элементы.ГруппаНастройкиОтчета;
		ГруппаЕще = ФормаОтчета.Элементы.ГруппаНастройкиОтчетаЕще;
	ИначеЕсли ТипГруппы = "РаботаСТабличнымДокументом" Тогда
		Группа = ФормаОтчета.Элементы.ГруппаРаботаВТаблице;
		ГруппаЕще = ФормаОтчета.Элементы.ГруппаРаботаВТаблицеЕще;
	ИначеЕсли ТипГруппы = "Интеграция" Тогда
		Группа = ФормаОтчета.Элементы.ГруппаВывод;
		ГруппаЕще = ФормаОтчета.Элементы.ГруппаВыводЕще;
	ИначеЕсли ТипГруппы = "ПодменюОтправить" Тогда
		Группа = ФормаОтчета.Элементы.ГруппаОтправить;
		ГруппаЕще = ФормаОтчета.Элементы.ГруппаОтправитьЕще;
	ИначеЕсли ТипГруппы = "Прочее" Тогда
		Группа = ФормаОтчета.Элементы.ОсновнаяКоманднаяПанель;
		ГруппаЕще = ФормаОтчета.Элементы.КоманднаяПанельЕще;
		ПередЧемВставить = ?(ВНачалоГруппы, ФормаОтчета.Элементы.НовоеОкно, Неопределено);
	Иначе
		ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("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
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

Создание команды

Вывести список пользователей с пустым паролем

ВывестиКонтекстныеСсылки (БСП)

РаспечататьТабличныеДокументы (БСП)

ВыполнитьКоманду (БСП)

ОбработчикКоманды (БСП)

Синтакс-помощник БСП с нейросетевым ассистентом