Дополнительные отчеты и обработки в БСП: различия между версиями

Материал из system.c
Перейти к навигации Перейти к поиску
(Новая страница: «[https://infostart.ru/public/558559/ Авторская статья] =====Сведения о внешней обработке===== Чтобы подключ...»)
 
 
(не показаны 3 промежуточные версии этого же участника)
Строка 32: Строка 32:
 
! Значение поля "Вид" !! Расположение команды !! Расширение файла
 
! Значение поля "Вид" !! Расположение команды !! Расширение файла
 
|-
 
|-
| ПечатнаяФорма | В меню "Печать" на форме объекта или списка | epf
+
| ПечатнаяФорма || В меню "Печать" на форме объекта или списка || epf
 
|-
 
|-
| ЗаполнениеОбъекта | В меню "Заполнить" на форме объекта или списка | epf
+
| ЗаполнениеОбъекта || В меню "Заполнить" на форме объекта или списка || epf
 
|-
 
|-
| СозданиеСвязанныхОбъектов | В меню "Создать на основании" - "Создание связанных объектов.." на форме объекта или списка | epf
+
| СозданиеСвязанныхОбъектов || В меню "Создать на основании" - "Создание связанных объектов.." на форме объекта или списка || epf
 
|-
 
|-
| Отчет | В меню "Отчеты" на форме объекта или списка | erf
+
| Отчет || В меню "Отчеты" на форме объекта или списка || erf
 
|-
 
|-
| ДополнительнаяОбработкаВ списке соответствующих подсистем в меню "Сервис" - "Дополнительные обработки" | epf
+
| ДополнительнаяОбработка || В списке соответствующих подсистем в меню "Сервис" - "Дополнительные обработки" || epf
 
|-
 
|-
| ДополнительныйОтчет | В списке соответствующих подсистем в меню "Сервис" - "Дополнительные отчеты" | erf
+
| ДополнительныйОтчет || В списке соответствующих подсистем в меню "Сервис" - "Дополнительные отчеты" || erf
 
|}
 
|}
  
Строка 101: Строка 101:
 
! Тип команды !! Значение поля "Вид" !! Вызываемая экспортная процедура   
 
! Тип команды !! Значение поля "Вид" !! Вызываемая экспортная процедура   
 
|-
 
|-
| ВызовСерверногоМетода | ПечатнаяФорма | Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода)  
+
| ВызовСерверногоМетода || ПечатнаяФорма || Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода)  
 
|-
 
|-
| | ДополнительнаяОбработка<br>ДополнительныйОтчет<br>Отчет | ВыполнитьКоманду(ИдентификаторКоманды,ПараметрыВыполнения)  
+
| || ДополнительнаяОбработка<br>ДополнительныйОтчет<br>Отчет || ВыполнитьКоманду(ИдентификаторКоманды,ПараметрыВыполнения)  
 
|-
 
|-
| | СозданиеСвязанныхОбъектов | ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, СозданныеОбъекты, ПараметрыВыполнения)  
+
| || СозданиеСвязанныхОбъектов || ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, СозданныеОбъекты, ПараметрыВыполнения)  
 
|-
 
|-
| | ЗаполнениеОбъекта | ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, ПараметрыВыполнения)  
+
| || ЗаполнениеОбъекта || ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, ПараметрыВыполнения)  
 
|-
 
|-
| ВызовКлиентскогоМетода | ПечатнаяФорма | &НаКлиенте<br>Печать(ИдентификаторКоманды, ОбъектыНазначенияМассив)  
+
| ВызовКлиентскогоМетода || ПечатнаяФорма || &НаКлиенте<br>Печать(ИдентификаторКоманды, ОбъектыНазначенияМассив)  
 
|-
 
|-
| | ДополнительнаяОбработка<br>ДополнительныйОтчет | &НаКлиенте<br>ВыполнитьКоманду(ИдентификаторКоманды)  
+
| || ДополнительнаяОбработка<br>ДополнительныйОтчет || &НаКлиенте<br>ВыполнитьКоманду(ИдентификаторКоманды)  
 
|-
 
|-
| | СозданиеСвязанныхОбъектов | &НаКлиенте<br>ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив, СозданныеОбъекты)  
+
| || СозданиеСвязанныхОбъектов || &НаКлиенте<br>ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив, СозданныеОбъекты)  
 
|-
 
|-
| | ЗаполнениеОбъекта Отчет | &НаКлиенте<br>ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив)  
+
| || ЗаполнениеОбъекта Отчет || &НаКлиенте<br>ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив)  
 
|-
 
|-
| | Для всех видов | в форму передается параметр ДополнительнаяОбработкаСсылка  
+
| || Для всех видов || в форму передается параметр ДополнительнаяОбработкаСсылка  
 
|-
 
|-
| ОткрытиеФормы | СозданиеСвязанныхОбъектов<br>ЗаполнениеОбъекта<br>Отчет | в форму передается дополнительный параметр ОбъектыНазначения  
+
| ОткрытиеФормы || СозданиеСвязанныхОбъектов<br>ЗаполнениеОбъекта<br>Отчет || в форму передается дополнительный параметр ОбъектыНазначения  
 
|-
 
|-
| | Для всех видов | в форму передаются параметры:<br>ИдентификаторКоманды,<br>ДополнительнаяОбработкаСсылка,<br>ИмяФормы  
+
| || Для всех видов || в форму передаются параметры:<br>ИдентификаторКоманды,<br>ДополнительнаяОбработкаСсылка,<br>ИмяФормы  
 
|-
 
|-
| | Отчет | Отчет с макетом СКД может не иметь форму, тогда будет использована общая форма для отчетов по умолчанию |-
+
| || Отчет || Отчет с макетом СКД может не иметь форму, тогда будет использована общая форма для отчетов по умолчанию
| ЗаполнениеФормы | ЗаполнениеОбъекта | ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, ПараметрыВыполнения)
 
 
|-
 
|-
| СценарийВБезопасномРежиме | Для всех видов | см. описание в комментарии к функции ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыСценарийВБезопасномРежиме()
+
| ЗаполнениеФормы || ЗаполнениеОбъекта || ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, ПараметрыВыполнения)  
 
|-
 
|-
| ЗагрузкаДанныхИзФайла | ДополнительнаяОбработка | см. описание в комментарии к функции ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыЗагрузкаДанныхИзФайла()  
+
| СценарийВБезопасномРежиме || Для всех видов || см. описание в комментарии к функции ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыСценарийВБезопасномРежиме()
 +
|-
 +
| ЗагрузкаДанныхИзФайла || ДополнительнаяОбработка || см. описание в комментарии к функции ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыЗагрузкаДанныхИзФайла()  
 
|}
 
|}
  
Строка 143: Строка 144:
  
 
Также будет полезно развернуть демо конфигурацию по БСП. В ней есть примеры внешних обработок и отчетов в справочнике внешних обработок.
 
Также будет полезно развернуть демо конфигурацию по БСП. В ней есть примеры внешних обработок и отчетов в справочнике внешних обработок.
 
 
=====Файлы=====
 
 
 
Прикладываю шаблоны для наиболее востребованных на мой взгляд вариантов использования.
 
Шаблоны тестировались на БСП 2.3.2.35 в режиме совместимости с 8.3.6. Версию библиотек в своей конфигурации можно посмотреть в регистре сведений '''Версии подсистем'''.
 
В шаблонах присутствует минимально необходимый код и убрано все лишнее.
 
Если обнаружите недочеты или возникнут вопросы по применению - пишите в комментариях, постараюсь по возможности исправить/ответить.
 
Данный список файлов предполагаю расширять по мере необходимости
 
 
 
 
=====Внешняя печатная форма (шаблон)=====
 
 
 
Реализованы типы команд: '''ВызовСерверногоМетода''', '''ВызовКлиентскогоМетода''', '''ОткрытиеФормы'''.
 
Сам шаблон в неизменном виде регистрируется для всех видов документов и выдает печатную форму, содержащую список переданных в него объектов и идентификатор команды.
 
То есть все используемые в нем методы рабочие, их останется только заполнить своими данными.
 
 
 
 
=====Внешняя обработка Создание связанных объектов (шаблон)=====
 
 
 
Реализованы типы команд: '''ВызовСерверногоМетода''', '''ВызовКлиентскогоМетода''', '''ОткрытиеФормы'''.
 
Сам шаблон в неизменном виде регистрируется для всех видов документов и выводит переданные данные через сообщить.
 
 
 
 
 
=====Внешняя обработка Заполнение объекта (шаблон)=====
 
 
 
Реализованы типы команд: '''ВызовСерверногоМетода''', '''ВызовКлиентскогоМетода''', '''ОткрытиеФормы''', '''ЗаполнениеФормы'''.
 
Сам шаблон в неизменном виде регистрируется для всех видов документов и увеличивает на один день дату выбранного документа (или документов).
 
 
 
 
=====Внешний отчет СКД по объекту (шаблон)=====
 
 
Реализован тип команд: '''ОткрытиеФормы'''.
 
Сам шаблон в неизменном виде регистрируется для справочника Организаци и выводит поля Ссылка, Код, Наименование с отбором по организации (или организациям), для которой вызван отчет.
 

Текущая версия на 10:54, 31 декабря 2019

Авторская статья

Сведения о внешней обработке

Чтобы подключить внешний отчет или обработку в справочник Дополнительные отчеты и обработки необходимо описать экспортную функцию СведенияОВнешнейОбработке() в модуле. Вот шаблон такой функции:

 Функция СведенияОВнешнейОбработке() Экспорт
 	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
 	// заполняем структуру ПараметрыРегистрации
 	Возврат ПараметрыРегистрации;
 КонецФункции

Описание полей возвращаемой структуры можно посмотреть в комментарии к функции ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(). Там можно получить актуальную информацию для вашей версии БСП. Опишу основные поля структуры сведений о внешней обработке. При этом буду по минимуму повторять информацию в упомянутом комментарии, а постараюсь дополнить ее.

Поле "Вид"

Минимальным условием для регистрации внешнего отчета или обработки является заполненность поля "Вид". То есть, если вы создадите внешнюю обработку и пропишете в ней следующий код, то этого будет достаточно, чтобы добавить ее в справочник Дополнительные отчеты и обработки

 // Минимальное описание параметров регистрации
 Функция СведенияОВнешнейОбработке() Экспорт
 	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
 	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиЗаполнениеОбъекта();
 	Возврат ПараметрыРегистрации;
 КонецФункции

Это поле определяет откуда будет вызываться команда, из какого пункта меню на форме объекта или списка. Возможные значения этого поля приведу в виде таблицы

Значение поля "Вид" Расположение команды Расширение файла
ПечатнаяФорма В меню "Печать" на форме объекта или списка epf
ЗаполнениеОбъекта В меню "Заполнить" на форме объекта или списка epf
СозданиеСвязанныхОбъектов В меню "Создать на основании" - "Создание связанных объектов.." на форме объекта или списка epf
Отчет В меню "Отчеты" на форме объекта или списка erf
ДополнительнаяОбработка В списке соответствующих подсистем в меню "Сервис" - "Дополнительные обработки" epf
ДополнительныйОтчет В списке соответствующих подсистем в меню "Сервис" - "Дополнительные отчеты" erf

Это поле может принимать одно из значений, возвращаемых функциями ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработки<Вид>(). Например, для вида "ПечатнаяФорма" есть функция ВидОбработкиПечатнаяФорма().

 // рекомендуется заполнять поле "Вид" таким способом
 ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
 
 // а не вот таким
 ПараметрыРегистрации.Вид = "ПечатнаяФорма";


Поле "Назначение"

Содержит массив объектов конфигурации в формате "<Тип>.<Вид>", для которых будет назначен внешний отчет/обработка.

 // для конкретных видов
 ПараметрыРегистрации.Назначение.Добавить("Документ.Счет");
 
 // для всех документов
 ПараметрыРегистрации.Назначение.Добавить("Документ.*"); 

Этот параметр игнорируется, если поле "Вид" имеет значение "ДополнительнаяОбработка" или "ДополнительныйОтчет".


Поле "Наименование"

Это значение подставляется в наименование элемента справочника Дополнительные отчеты и обработки при создании. Если не заполнено, то используется синоним внешней обработки/отчета. Используется только для администрирования, а при добавлении в пункт меню, например, Печать будет подставляться наименование команды из таблицы команд, а не значение этого поля.


Поле "Команды"

Таблица значений, которая загружается в одноименную табличную часть элемента справочника Дополнительные отчеты и обработки при регистрации внешней обработки. Эту табличную часть можно заполнить и вручную. Каждой строке соответствует один пункт в соответствующих меню, описанных в таблице выше. Чтобы команда внешней обработки появилась в нужном меню, обязательно нужно добавить хотя бы одну строку в эту таблицу.

 НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
 НоваяКоманда.Представление = "Заказ с характеристиками (сервер)";
 НоваяКоманда.Идентификатор = "ЗаказСХарактеристикамиСервер";
 НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();


Таблица "Команды", колонка "Использование"

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

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

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


Полезные процедуры

Рекомендую обратить внимание на следующие процедуры и функции:

 ДополнительныеОтчетыИОбработки.ЗарегистрироватьОбработку(ОбъектСправочника, ПараметрыРегистрации)
 ДополнительныеОтчетыИОбработки.ПолучитьОбъектВнешнейОбработки(Ссылка)
 ДополнительныеОтчетыИОбработки.ВыполнитьКомандуИзФормыВнешнегоОбъекта(ИдентификаторКоманды, ПараметрыКоманды, ЭтаФорма)

Также будет полезно развернуть демо конфигурацию по БСП. В ней есть примеры внешних обработок и отчетов в справочнике внешних обработок.