Использование библиотеки БСП «Подключаемые команды» для подключения команд на форму.
Испытывалось на платформе 8.3.15.1830 и конфигурации УТ 11.4.8.92.
Источники:
Разработка команд контекстных отчетов (итс, нужна подписка)
Подключить контекстные отчеты к объектам конфигурации (итс, нужна подписка)
Особенности использования 1С БСП «Подключаемые команды» при переходе на версию 2.4 (programstore.ru)
При переходе на версию 1С БСП 2.4, приходится переписывать процедуру инициализации подключения стандартной подсистемы «Подключаемые команды».
Если в предыдущих версиях использовались процедуры общих модулей «УправлениеПечатью», «ВводНаОснование», «МенюОтчеты», то в версии 2.4 требуется вызывать процедуры одного общего модуля «ПодключаемыеКоманды».
1. Инициализация подключаемых команд в процедуре ПриСозданииНаСервере в модуле формы объекта (или списка).
В вызываемой процедуре ПодключаемыеКоманды.ПриСозданииНаСервере() происходит:
а) программное добавление всех необходимых команд формы
б) расположение их в нужных подменю
в) назначение в качестве действия команд формы процедуры Подключаемый_ВыполнитьКоманду()
1 2 3 4 5 |
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ... ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект); ... КонецПроцедуры |
2. Описание подключаемых команд в модуле формы объекта (списка).
Подключаемый_ВыполнитьКоманду() – назначается всем подключаемым командам. Подключаемый_ВыполнитьКомандуНаСервере() – используется, когда требуется контекстный вызов сервера. Подключаемый_ОбновитьКоманды() – служит для обновления команд формы.
1 2 3 4 5 |
// СтандартныеПодсистемы.ПодключаемыеКоманды &НаКлиенте Процедура Подключаемый_ВыполнитьКоманду(Команда) ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект); КонецПроцедуры |
3. В командной панели формы объекта (списка) должны присутствовать отмеченные пункты подменю. Их можно скопировать у стандартных объектов (например, из формы документа ЗаказКлиента).
Это требование не изменилось в версии 2.4
4. В модуле менеджера объекта создаются экспортные процедуры для добавления нужных команды на формы объектов.
В версии БСП 2.4 есть небольшие изменения, касающиеся параметров процедур.
ДобавитьКомандыСозданияНаОсновании() – экспортная процедура, в которой заполняется таблица КомандыСозданияНаОсновании. Команды из этой таблицы выводятся на форму в ПодменюСоздатьНаОсновании.
Примечание:
Отчеты ДвиженияДокумента и МестаИспользования добавятся автоматически. А отчет СтруктураПодчиненности нужно добавлять вручную.
Пример:
1 2 3 |
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт Документы.РасходныйОрдерНаТовары.ДобавитьКомандуСоздатьНаОснованииРеализацию(КомандыСозданияНаОсновании); КонецПроцедуры |
ДобавитьКомандуСоздатьНаОсновании() – экспортная функция, которая используется для добавления команды создания текущего объекта на основании других объектов.
Т.е. эта функция будет использоваться в модуле менеджера других объектов (в процедурах ДобавитьКомандыСозданияНаОсновании()).
Пример:
1 2 3 4 5 6 7 8 9 10 11 |
Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт Если ПравоДоступа("Добавление", Метаданные.Документы.Заказ) Тогда КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить(); КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.Заказ.ПолноеИмя(); КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.Заказ); КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить"; КомандаСоздатьНаОсновании.ФункциональныеОпции = "Использоватьзаказы,ИспользоватьПроизводство"; Возврат КомандаСоздатьНаОсновании; КонецЕсли; Возврат Неопределено; КонецФункции |
ДобавитьКомандыОтчетов() – экспортная процедура, в которой заполняется таблица КомандыОтчетов. Команды из этой таблицы выводятся на форму в ПодменюОтчеты .
Пример:
1 2 3 4 |
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт ВариантыОтчетовУТПереопределяемый.ДобавитьКомандуСтруктураПодчиненности(КомандыОтчетов); ВариантыОтчетовУТПереопределяемый.ДобавитьКомандуДвиженияДокумента(КомандыОтчетов); КонецПроцедуры |
ДобавитьКомандыПечати() – экспортная процедура, в которой заполняется таблица КомандыПечати. Команды из этой таблицы выводятся на форму в ПодменюПечать .
Пример:
1 2 3 4 5 6 7 8 |
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт // Задание на производство КомандаПечати = КомандыПечати.Добавить(); КомандаПечати.Идентификатор = "ЗаданиеНаПроизводство"; КомандаПечати.Представление = НСтр("ru = 'Задание на производство'"); КомандаПечати.ПроверкаПроведенияПередПечатью = Истина; КомандаПечати.Обработчик = "УправлениеПечатьюУПКлиент.ПечатьЗаданиеНаПроизводство"; КонецПроцедуры |
Все предыдущие шаги можно сделать по аналогии типовых объектов. При переходе на версию БСП 2.4 во всех типовых объектах разработчики проводят указанные выше модификации.
Но для вывода на форму СВОИХ (добавленных) объектов этого будет не достаточно, подключаемые команды не появятся на формах. В версии БСП 2.4 необходимо сделать еще следующие доработки:
5. В процедуре общего модуля ВариантыОтчетовПереопределяемый.ОпределитьОбъектыСКомандамиОтчетов() формируется список объектов метаданных, для которых требуется добавить команды открытия отчетов.
В этот список надо добавить новый (не типовой) объект.
Например:
1 |
Объекты.Добавить(Метаданные.Документы.Заявка); |
6. В процедуре общего модуля СозданиеНаОснованииПереопределяемый.ПриОпределенииОбъектовСКомандамиСозданияНаОсновании() формируется список объектов метаданных, для которых требуется добавить команды создания на основании.
В этот список надо добавить новый (не типовой) объект.
Например:
1 |
Объекты.Добавить(Метаданные.Документы.Заявка); |
7. В процедуре общего модуля УправлениеПечатьюПереопределяемый.ПриОпределенииОбъектовСКомандамиПечати() формируется список объектов метаданных, для которых требуется добавить команды печати.
В этот список надо добавить новый (не типовой) объект.
8. Для формы списка нужно, чтобы была добавлена колонка Ссылка.
Ссылка понадобится, чтобы выполнить команду для текущей строки в методе:
1 |
ПодключаемыеКомандыКлиент.ВыполнитьКоманду() |
Для этого можно у ссылки установить ИспользоватьВсегда :
Также, отключить у нее пользовательскую видимость:
Все работает, но есть один нюанс:
если добавлять ввод на основании нетипового документа из другого нетипового документа, то в модуле менеджера обязательно должны быть вставлена конструкция в начале:
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
И в конце:
#КонецЕсли
Иначе 1с не видит общий модуль ОбщегоНазначенияУТ
Спасибо
очень помогло со списком – ! реквизит ссылка – колонку можно не добавлять. УНФ.