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