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

Автор: 1С
ОбщийМодуль.ЗаполнениеОбъектов
БСП

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

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

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

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

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

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

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

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

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз