Установка типов объектов, для которых могут запускаться дополнительные обработки
в определяемом типе ОбъектСДополнительнымиКомандами для обработок:
- заполнения
- Отчет
- Создание связанных объектов
в УправлениеПечатьюПереопределяемый.ПриОпределенииОбъектовСКомандамиПечати() для
в ДополнительныеОтчетыИОбработкиПереопределяемый.ОпределитьРазделыСДополнительнымиОбработками(Разделы) для
в ДополнительныеОтчетыИОбработкиПереопределяемый.ОпределитьРазделыСДополнительнымиОтчетами() для
Для отображения списка дополнительных отчетов и обработок в конфигураторе добавляют общие команды (Панель действий.Сервис), например в демо-базе _ДемоДополнительныеОбработкиИнтегрируемыеПодсистемы и _ДемоДополнительныеОтчетыИнтегрируемыеПодсистемы.
Варианты запуска
ОткрытиеФормы
Открывается основная форма обработки, которая будет открываться при вызове дополнительной обработки. В обработке должны быть параметры:
- ИдентификаторКоманды - тип Строка
- ДополнительнаяОбработкаСсылки - тип СправочникСсылка.ДополнительныеОтчетыИОбработки
- ОбъектыНазначения - тип Произвольный. В этот параметр система поместит массив объектов назначения
Все параметры лучше сделать ключевыми.

ВызовКлиентскогоМетода
В основной форме обработки должна быть:
Для глобальных отчетов и обработок экспортная процедура
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды) Экспорт
// Реализация логики команды
// ...
КонецПроцедуры
Для назначаемых обработок типа ПечатнаяФорма
&НаКлиенте
Процедура Печать(ИдентификаторКоманды,ОбъектыНазначенияМассив) Экспорт
// Реализация логики команды печати
// ...
КонецПроцедуры
Для назначаемых обработок типа «Создание связанных объектов» – реализовать экспортную процедуру «ВыполнитьКоманду» с параметрами «ИдентификаторКоманды», «ОбъектыНазначенияМассив» и «СозданныеОбъекты», где СозданныеОбъекты – массив ссылок на созданные объекты.
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды,ОбъектыНазначенияМассив,СозданныеОбъекты) Экспорт
// Реализация логики команды по созданию связанных объектов
// ...
КонецПроцедуры
СозданныеОбъекты – массив ссылок на созданные объекты. Его заполнение после выполнения основной логики приведет к тому, что открытые списки с этими объектам будут обновлены.
Для назначаемых обработок типа «Заполнение объекта» и «Отчет» – реализовать экспортную процедуру «ВыполнитьКоманду» с параметрами «ИдентификаторКоманды», «ОбъектыНазначенияМассив».
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды,ОбъектыНазначенияМассив) Экспорт
// Реализация логики команды по заполнению объекта
// ...
КонецПроцедуры
Так же посредством свойства формы «ВладелецФормы» можно добраться до контекста формы объекта назначения.
ВызовСерверногоМетода
Для глобальных отчетов и глобальных обработок – реализовать экспортную процедуру «ВыполнитьКоманду» с параметром «ИдентификаторКоманды» и «ПараметрыВыполненияКоманды». Последний параметр - это структура с ключом "ДополнительнаяОбработкаСсылка", в котором содержится ссылка на элемент справочника, содержащего данную обработку.
Процедура ВыполнитьКоманду(ИдентификаторКоманды,ПараметрыВыполненияКоманды) Экспорт
// Реализация логики команды
Если ИдентификаторКоманды = ... Тогда
...
ИначеЕсли
...
КонецЕсли
КонецПроцедуры
Для назначаемых обработок типа «Создание связанных объектов» – реализовать экспортную процедуру «ВыполнитьКоманду» с параметрами «ИдентификаторКоманды», «ОбъектыНазначения», «СозданныеОбъекты» и «ПараметрыВыполненияКоманды».
Процедура ВыполнитьКоманду(ИдентификаторКоманды,ОбъектыНазначения,СозданныеОбъекты,ПараметрыВыполненияКоманды) Экспорт
// Реализация логики команды по созданию связанных объектов
Если ИдентификаторКоманды = ... Тогда
...
ИначеЕсли
...
КонецЕсли
КонецПроцедуры
Для назначаемых обработок типа «Печать» на основе табличных документов – реализовать экспортную процедуру «Печать» с параметрами «МассивОбъектов», «КоллекцияПечатныхФорм», «ОбъектыПечати», «ПараметрыВывода».
Процедура Печать(МассивОбъектов,КоллекцияПечатныхФорм,ОбъектыПечати,ПараметрыВывода) Экспорт
// Реализация логики команды печати
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ИдентификаторОтчета") Тогда
//или новый подход
ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "ИдентификаторОтчета");
Если ПечатнаяФорма <> Неопределено Тогда
...
ИначеЕсли
...
КонецЕсли
КонецПроцедуры
Для назначаемых обработок типа «Заполнение объекта» и других типов обработок – реализовать экспортную процедуру «ВыполнитьКоманду» с параметрами «ИдентификаторКоманды», «ОбъектыНазначения» и «ПараметрыВыполненияКоманды»
Процедура ВыполнитьКоманду(ИдентификаторКоманды,ОбъектыНазначения,ПараметрыВыполненияКоманды) Экспорт
// Реализация логики команды по заполнению объекта
Если ИдентификаторКоманды = ... Тогда
...
ИначеЕсли
...
КонецЕсли
КонецПроцедуры
ЗаполнениеФормы
Это частный случай вызова серверного метода. Для этого вида запуска в функции СведенияОВнешнейОбработке() надо обязательно указать значение ВерсияБСП. Если этого не сделать, то будет процедура обработки ВыполнитьКоманду() будет вызываться без третьего параметра ПараметрыКоманды, в котором хранятся данные формы.
Данный вид запуска не работает в форме списка, поэтому при добавлении обработки, в её свойствах убираем галку "Показывать в списках"
Процедура ВыполнитьКоманду(ИдентификаторКоманды,ОбъектыНазначения, ПараметрыКоманды) Экспорт
КонтекстФормыВызова = ПараметрыКоманды.ЭтаФорма;
ДанныеОбъекта = КонтекстФормыВызова.Объект;
//теперь можно вносить изменения в ДанныеОбъекта
...
КонецПроцедуры
Добавление новых подсистем
При добавлении новых подсистем на их панелях нет команд "Дополнительные обработки и "Дополнительные отчеты". Чтобы они отображались надо:
1. Добавить в общем модуле ДополнительныеОтчетыИОбработкиПереопределяемый в процедурах ОпределитьРазделыСДополнительнымиОбработками(Разделы) и ОпределитьРазделыСДополнительнымиОтчетами(Разделы) добавить строку вида
Разделы.Добавить(Метаданные.Подсистемы.<ИмяПодсистемы>);
2. Добавить общие команды:
2.1 ДополнительныеОбработки<ИмяПодсистемы>
- Синоним - название, которое будет отображаться на панели. Обычно "Дополнительные обработки".
- Группа = Панель действий.Сервис
- Подсистема - наша подсистема. Команды обязательно должны быть включены в подсистему
- Текст команды:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ДополнительныеОтчетыИОбработкиКлиент.ОткрытьФормуКомандДополнительныхОтчетовИОбработок(
ПараметрКоманды,
ПараметрыВыполненияКоманды,
ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка(),
"<ИмяПодсистемы>");
КонецПроцедуры
2.2 ДополнительныеОтчеты<ИмяПодсистемы>
- Синоним - название, которое будет отображаться на панели. Обычно "Дополнительные отчеты".
- Группа = Панель действий.Отчеты
- Подсистема - наша подсистема.
- Текст команды:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ДополнительныеОтчетыИОбработкиКлиент.ОткрытьФормуКомандДополнительныхОтчетовИОбработок(
ПараметрКоманды,
ПараметрыВыполненияКоманды,
ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет(),
"<ИмяПодсистемы>");
КонецПроцедуры
|