ПриОпределенииКомандПодключенныхКОбъекту (БСП)

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

При определении команд подключенных объекту. См. ПодключаемыеКомандыПереопределяемый.ПриОпределенииКомандПодключенныхКОбъекту.

// См. ПодключаемыеКомандыПереопределяемый.ПриОпределенииКомандПодключенныхКОбъекту.
Процедура ПриОпределенииКомандПодключенныхКОбъекту(НастройкиФормы, Источники, ПодключенныеОтчетыИОбработки, Команды) Экспорт
	КомандыОтчетов = Команды.СкопироватьКолонки();
	КомандыОтчетов.Колонки.Добавить("КлючВарианта", Новый ОписаниеТипов("Строка, Null"));
	КомандыОтчетов.Колонки.Добавить("Обработана", Новый ОписаниеТипов("Булево"));
	КомандыОтчетов.Индексы.Добавить("Обработана");
	
	СтандартнаяОбработка = Источники.Строки.Количество() > 0;
	НастройкиФормы.Вставить("Источники", Источники);
	
	ИнтеграцияПодсистемБСП.ПередДобавлениемКомандОтчетов(КомандыОтчетов, НастройкиФормы, СтандартнаяОбработка);
	ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов(КомандыОтчетов, НастройкиФормы, СтандартнаяОбработка);
	КомандыОтчетов.ЗаполнитьЗначения(Истина, "Обработана");
	Если СтандартнаяОбработка Тогда
		ОбъектыСКомандамиОтчетов = ОбъектыСКомандамиОтчетов();
		Для Каждого Источник Из Источники.Строки Цикл
			Для Каждого ДокументРегистратор Из Источник.Строки Цикл
				Если ОбъектыСКомандамиОтчетов.Найти(ДокументРегистратор.Метаданные) <> Неопределено Тогда
					ПриДобавленииКомандОтчетов(КомандыОтчетов, ДокументРегистратор, НастройкиФормы);
				КонецЕсли;
			КонецЦикла;
			Если ОбъектыСКомандамиОтчетов.Найти(Источник.Метаданные) <> Неопределено Тогда
				ПриДобавленииКомандОтчетов(КомандыОтчетов, Источник, НастройкиФормы);
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	
	Найденные = ПодключенныеОтчетыИОбработки.НайтиСтроки(Новый Структура("ДобавитьКомандыОтчетов", Истина));
	Для Каждого ПодключенныйОбъект Из Найденные Цикл
		ПриДобавленииКомандОтчетов(КомандыОтчетов, ПодключенныйОбъект, НастройкиФормы);
	КонецЦикла;
	
	ИменаКлючевыхПараметровКоманды = "Идентификатор,Представление,ФункциональныеОпции,Менеджер,ИмяФормы,КлючВарианта,
	|ИмяПараметраФормы,ПараметрыФормы,Обработчик,ДополнительныеПараметры,ВидимостьВФормах";
	
	ДобавленныеКоманды = Новый Соответствие;
	
	Для Каждого КомандаОтчетов Из КомандыОтчетов Цикл
		КлючевыеПараметры = Новый Структура(ИменаКлючевыхПараметровКоманды);
		ЗаполнитьЗначенияСвойств(КлючевыеПараметры, КомандаОтчетов);
		УникальныйИдентификатор = ОбщегоНазначения.КонтрольнаяСуммаСтрокой(КлючевыеПараметры);
		
		НайденнаяКоманда = ДобавленныеКоманды[УникальныйИдентификатор];
		Если НайденнаяКоманда <> Неопределено И ЗначениеЗаполнено(НайденнаяКоманда.ТипПараметра) Тогда
			Если ЗначениеЗаполнено(КомандаОтчетов.ТипПараметра) Тогда
				НайденнаяКоманда.ТипПараметра = Новый ОписаниеТипов(НайденнаяКоманда.ТипПараметра, КомандаОтчетов.ТипПараметра.Типы());
			Иначе
				НайденнаяКоманда.ТипПараметра = Неопределено;
			КонецЕсли;
			Продолжить;
		КонецЕсли;
		
		Команда = Команды.Добавить();
		ДобавленныеКоманды.Вставить(УникальныйИдентификатор, Команда);
		
		ЗаполнитьЗначенияСвойств(Команда, КомандаОтчетов);
		Команда.Вид = "Отчеты";
		Если Команда.Порядок = 0 Тогда
			Команда.Порядок = 50;
		КонецЕсли;
		Если Команда.РежимЗаписи = "" Тогда
			Команда.РежимЗаписи = "ЗаписыватьТолькоНовые";
		КонецЕсли;
		Если Команда.МножественныйВыбор = Неопределено Тогда
			Команда.МножественныйВыбор = Истина;
		КонецЕсли;
		Если ПустаяСтрока(Команда.ИмяФормы) И ПустаяСтрока(Команда.Обработчик) Тогда
			Команда.ИмяФормы = "Форма";
		КонецЕсли;
		Если Команда.ПараметрыФормы = Неопределено Тогда
			Команда.ПараметрыФормы = Новый Структура;
		КонецЕсли;
		Команда.ПараметрыФормы.Вставить("КлючВарианта", КомандаОтчетов.КлючВарианта);
		Если ПустаяСтрока(Команда.Обработчик) Тогда
			Команда.ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);
			Команда.ПараметрыФормы.Вставить("ВидимостьКомандВариантовОтчетов", Ложь);
		КонецЕсли;
	КонецЦикла;
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

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

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

ТаблицаПодключаемыхОбъектов (БСП)

ПриОпределенииОбъектовСКомандамиОтчетов (БСП)

TurboConf 6 - расширение Конфигуратора 1С