Приветствую Вас ГостьПятница, 14.11.2025, 22:58

Каталог статей


БСП. Дополнительные отчеты и обработки

Установка типов объектов, для которых могут запускаться дополнительные обработки

в определяемом типе ОбъектСДополнительнымиКомандами для обработок:

  • заполнения
  • Отчет
  • Создание связанных объектов

в УправлениеПечатьюПереопределяемый.ПриОпределенииОбъектовСКомандамиПечати() для

  • печатных форм

в ДополнительныеОтчетыИОбработкиПереопределяемый.ОпределитьРазделыСДополнительнымиОбработками(Разделы) для

  • дополнительных обработок

в ДополнительныеОтчетыИОбработкиПереопределяемый.ОпределитьРазделыСДополнительнымиОтчетами() для 

  • дополнительных отчетов

Для отображения списка дополнительных отчетов и обработок в конфигураторе добавляют общие команды (Панель действий.Сервис), например в демо-базе _ДемоДополнительныеОбработкиИнтегрируемыеПодсистемы и _ДемоДополнительныеОтчетыИнтегрируемыеПодсистемы. 

 

Варианты запуска

ОткрытиеФормы

Открывается основная форма обработки, которая будет открываться при вызове дополнительной обработки. В обработке должны быть параметры:

  • ИдентификаторКоманды - тип Строка
  • ДополнительнаяОбработкаСсылки - тип СправочникСсылка.ДополнительныеОтчетыИОбработки
  • ОбъектыНазначения - тип Произвольный. В этот параметр система поместит массив объектов назначения

Все параметры лучше сделать ключевыми.

ВызовКлиентскогоМетода

В основной форме обработки должна быть:

Для глобальных отчетов и обработок экспортная процедура 

&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды) Экспорт
// Реализация логики команды 
// ...
КонецПроцедуры 

Для назначаемых обработок типа ПечатнаяФорма

&НаКлиенте
Процедура Печать(ИдентификаторКоманды,ОбъектыНазначенияМассив) Экспорт
// Реализация логики команды печати 
// ...
КонецПроцедуры 

Для назначаемых обработок типа «Создание связанных объектов» – реализовать экспортную процедуру «ВыполнитьКоманду» с параметрами «ИдентификаторКоманды», «ОбъектыНазначенияМассив» и «СозданныеОбъекты», где СозданныеОбъекты – массив ссылок на созданные объекты. 

&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды,ОбъектыНазначенияМассив,СозданныеОбъекты) Экспорт 
// Реализация логики команды по созданию связанных объектов 
// ...
КонецПроцедуры

СозданныеОбъекты – массив ссылок на созданные объекты. Его заполнение после выполнения основной логики приведет к тому, что открытые списки с этими объектам будут обновлены.

Для назначаемых обработок типа «Заполнение объекта» и «Отчет» – реализовать экспортную процедуру «ВыполнитьКоманду» с параметрами «ИдентификаторКоманды», «ОбъектыНазначенияМассив». 

&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды,ОбъектыНазначенияМассив) Экспорт 
// Реализация логики команды по заполнению объекта 
// ...
КонецПроцедуры

Так же посредством свойства формы «ВладелецФормы» можно добраться до контекста формы объекта назначения.

ВызовСерверногоМетода

Для глобальных отчетов и глобальных обработок – реализовать экспортную процедуру «ВыполнитьКоманду» с параметром «ИдентификаторКоманды» и «ПараметрыВыполненияКоманды».  Последний параметр  - это структура с ключом "ДополнительнаяОбработкаСсылка", в котором содержится ссылка на элемент справочника, содержащего данную обработку.

Процедура ВыполнитьКоманду(ИдентификаторКоманды,ПараметрыВыполненияКоманды) Экспорт 
// Реализация логики команды 
    Если ИдентификаторКоманды = ... Тогда 
        ...
    ИначеЕсли
        ...
    КонецЕсли
КонецПроцедуры

Для назначаемых обработок типа «Создание связанных объектов» – реализовать экспортную процедуру «ВыполнитьКоманду» с параметрами «ИдентификаторКоманды», «ОбъектыНазначения»,  «СозданныеОбъекты» и «ПараметрыВыполненияКоманды».

Процедура ВыполнитьКоманду(ИдентификаторКоманды,ОбъектыНазначения,СозданныеОбъекты,ПараметрыВыполненияКоманды) Экспорт 
    // Реализация логики команды по созданию связанных объектов 
    Если ИдентификаторКоманды = ... Тогда 
        ...
    ИначеЕсли
        ...
    КонецЕсли
КонецПроцедуры

Для назначаемых обработок типа «Печать» на основе табличных документов – реализовать экспортную процедуру «Печать» с параметрами «МассивОбъектов», «КоллекцияПечатныхФорм», «ОбъектыПечати», «ПараметрыВывода». 

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

Для назначаемых обработок типа «Заполнение объекта» и других типов обработок – реализовать экспортную процедуру «ВыполнитьКоманду» с параметрами «ИдентификаторКоманды»,  «ОбъектыНазначения» и «ПараметрыВыполненияКоманды»

Процедура ВыполнитьКоманду(ИдентификаторКоманды,ОбъектыНазначения,ПараметрыВыполненияКоманды) Экспорт 
// Реализация логики команды по заполнению объекта 
    Если ИдентификаторКоманды = ... Тогда 
        ...
    ИначеЕсли
        ...
    КонецЕсли
КонецПроцедуры

ЗаполнениеФормы

Это частный случай вызова серверного метода. Для этого вида запуска в  функции СведенияОВнешнейОбработке() надо обязательно указать значение ВерсияБСП. Если этого не сделать, то будет процедура обработки ВыполнитьКоманду() будет вызываться без третьего параметра ПараметрыКоманды, в котором хранятся данные формы.

Данный вид запуска не работает в форме списка, поэтому при добавлении обработки, в её свойствах убираем галку "Показывать в списках"

Процедура ВыполнитьКоманду(ИдентификаторКоманды,ОбъектыНазначения, ПараметрыКоманды) Экспорт 
    КонтекстФормыВызова = ПараметрыКоманды.ЭтаФорма; 
    ДанныеОбъекта = КонтекстФормыВызова.Объект;
    //теперь можно вносить изменения в ДанныеОбъекта
    ...
КонецПроцедуры

Добавление новых подсистем

При добавлении новых подсистем на их панелях нет команд "Дополнительные обработки и "Дополнительные отчеты". Чтобы они отображались надо:

1. Добавить в общем модуле ДополнительныеОтчетыИОбработкиПереопределяемый в процедурах ОпределитьРазделыСДополнительнымиОбработками(Разделы) и ОпределитьРазделыСДополнительнымиОтчетами(Разделы) добавить строку вида 

Разделы.Добавить(Метаданные.Подсистемы.<ИмяПодсистемы>);

2. Добавить общие команды:

2.1 ДополнительныеОбработки<ИмяПодсистемы>

  • Синоним - название, которое будет отображаться на панели. Обычно "Дополнительные обработки".
  • Группа = Панель действий.Сервис
  • Подсистема  - наша подсистема. Команды обязательно должны быть включены в подсистему
  • Текст команды:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    
    ДополнительныеОтчетыИОбработкиКлиент.ОткрытьФормуКомандДополнительныхОтчетовИОбработок(
        ПараметрКоманды,
        ПараметрыВыполненияКоманды,
        ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка(),
        "<ИмяПодсистемы>");
    
КонецПроцедуры

2.2 ДополнительныеОтчеты<ИмяПодсистемы>

  • Синоним - название, которое будет отображаться на панели. Обычно "Дополнительные отчеты".
  • Группа = Панель действий.Отчеты
  • Подсистема  - наша подсистема. 
  • Текст команды:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    
    ДополнительныеОтчетыИОбработкиКлиент.ОткрытьФормуКомандДополнительныхОтчетовИОбработок(
        ПараметрКоманды,
        ПараметрыВыполненияКоманды,
        ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет(),
        "<ИмяПодсистемы>");
    
КонецПроцедуры

 

 

Категория: Программирование | Добавил: leshic (08.08.2025)
Просмотров: 13 | Рейтинг: 0.0/0
Всего комментариев: 0
Вход на сайт
Поиск
Категории раздела
СКД [52]
Регистры [7]
Формы [50]
Администрирование [53]
Запросы [11]
Объекты конфигурации и типы данных [20]
Взаимодействие с другими базами, приложениями и источниками данных [16]
Программирование [57]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0