Top.Mail.Ru

1C БСП. ВНЕШНИЕ ОТЧЕТЫ И ОБРАБОТКИ

Дополнительные отчеты и обработки — подсистема 1С БСП, предназначена для расширения функционала без изменения конфигурации.

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

Что можно подключить

  • внешние обработки (файлы с расширением “epf”) ;
  • внешние отчеты (файлы с расширением «erf»).

Виды разработок

  • Дополнительная обработка.
  • Дополнительный отчет.
  • Заполнение объекта. Возможность установить свои кнопки по заполнению документа (ранее были только кнопки по заполнению табличной части).
  • Печатная форма. Дополнительная печатная форма. Добавляется кнопка «Дополнительные печатные формы».
  • Отчет. Прикрепляемый к справочникам и документам.
  • Создание связанных объектов. Свой ввод на основании. В пункт меню «Ввод на основании» добавляется кнопка «Создание связанных объектов…».

Возможности БСП:

  • В документах можно добавлять кнопки по заполнению всего документа, кнопки по вводу на основании.
  • Обработка может содержать несколько команд меню.
  • Вводить на основании и заполнять объекты сразу на основании нескольких объектов.
  • Задавать расписание выполнение серверных команд (на сервере).
  • Задавать режим «Безопасный» или «Небезопасный», т.е. запускать обработку с учетом ограничением прав или полные права
  • Задать режим использования: «Не использовать», «Отладка», «Использовать».
  • Включить использование в формах объекта и в форма списков
  • Привязать ко всем указанным объектам обработку или отчет.
  • Настроить быстрый доступ к определенным командам внешних обработок.
  • Возможность указать в каких разделах интерфейса должны появляться дополнительные обработки и отчеты.

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

«Вид»

Минимальным условием для регистрации разработки является заполнение поля «Вид».

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

Таблица. Поле «ВИД».

 Значение поля «Вид»  Расположение команды  Расширение

 файла

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

«Назначение»

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

«Наименование»

Строка. Подставляется в наименование при создании элемента справочника «Дополнительные отчеты и обработки». Если не заполнено, то используется синоним внешней обработки/отчета.

 «Команды»

Таблица значений. Загружается в одноименную табличную часть элемента справочника «Дополнительные отчеты и обработки» при регистрации внешней обработки.

Эту табличную часть можно заполнить и вручную.

Колонки таблицы:

Идентификатор – строка (идентификатор команды).

Представление – описание команды.

Модификатор — строка (используется для дополнительных печатных форм).

ПоказыватьОповещение – окно оповещение будет появляться перед началом и после окончания выполнения (для команд клиентских и серверных без формы).

Использование – режим запуска обработки.

В колонке «Использование» указывается тип вызываемой команды. По сочетанию Вид-Тип команды система определяет какая предопределенная процедура будет вызвана из внешней обработки/отчета, и где она будет объявлена — на клиенте или на сервере.

Наиболее часто используются процедуры Печать() и ВыполнитьКоманду(), а также открытие формы без обращения к методу.

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

Таблица. Возможные варианты использования в таблице.

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

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

«Версия БСП»

Строка, версия встроенной в конфигурации БСП. Необходима для поддержки совместимости. Можно не заполнять.

«Безопасный Режим»

Булево, отображает режим запуска обработка. В безопасном режиме недоступен привилегированный режим, COM-соединение, загрузка dll, доступ к файловой системе и интернету.

«Информация»

Строка, комментарий, который характеризует обработку.

«Версия»

Строка, версия обработки.

Подготовка разработки к подключению.

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

Пример

Функция СведенияОВнешнейОбработке() Экспорт

         ОбъектыНазначенияФормы = Новый Массив;
         ОбъектыНазначенияФормы.Добавить("Документ.РеализацияТоваровУслуг");

         ПараметрыРегистрации = ПолучитьПараметрыРегистрации(ОбъектыНазначенияФормы, "ТОРГ - 12 (альтернативная)");
         ПараметрыРегистрации.Версия = "2017.03.07";
         ПараметрыРегистрации.Информация = "Внешняя печатная форма документа реализации товаров и услуг ТОРГ - 12 (альтернативная)";

         ТаблицаКоманд = ПолучитьТаблицуКоманд();

         ДобавитьКоманду(ТаблицаКоманд,
         "ТОРГ - 12 (альтернативная)",      // Представление команды в пользовательском интерфейсе
         "ТОРГ_12_альтернативная",          // Уникальный идентификатор команды
         "ВызовСерверногоМетода",           // Использование команды //ОткрытиеФормы
         Истина,                            // Показывать оповещение.
         "ПечатьMXL"                        // Дополнительный модификатор команды.);

         ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

         Возврат ПараметрыРегистрации;

КонецФункции
Функция ПолучитьПараметрыРегистрации(ОбъектыНазначенияФормы = Неопределено, НаименованиеОбработки = "", Информация = "", Версия = "1.0.0")

         Если ТипЗнч(ОбъектыНазначенияФормы) = Тип("Строка") Тогда
                  ОбъектНазначенияФормы = ОбъектыНазначенияФормы;
                  ОбъектыНазначенияФормы = Новый Массив;
                  ОбъектыНазначенияФормы.Добавить(ОбъектНазначенияФормы);
         КонецЕсли;

         ПараметрыРегистрации = Новый Структура;
         ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
         ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
         ПараметрыРегистрации.Вставить("Назначение", ОбъектыНазначенияФормы);

         Если Не ЗначениеЗаполнено(НаименованиеОбработки) Тогда
                  НаименованиеОбработки = ЭтотОбъект.Метаданные().Представление();
         КонецЕсли;

         ПараметрыРегистрации.Вставить("Наименование", НаименованиеОбработки);

         Если Не ЗначениеЗаполнено(Информация) Тогда
                  Информация = ЭтотОбъект.Метаданные().Комментарий;
         КонецЕсли;

         ПараметрыРегистрации.Вставить("Информация", Информация);
         ПараметрыРегистрации.Вставить("Версия", Версия);

         Возврат ПараметрыРегистрации;

КонецФункции
Функция ПолучитьТаблицуКоманд()

         Команды = Новый ТаблицаЗначений;
                  Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
                  Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
                  Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
                  Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
                  Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));

         Возврат Команды;

КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")

// Добавляем команду в таблицу команд по переданному описанию.
// Параметры и их значения можно посмотреть в функции ПолучитьТаблицуКоманд

         НоваяКоманда = ТаблицаКоманд.Добавить();
                  НоваяКоманда.Представление = Представление;
                  НоваяКоманда.Идентификатор = Идентификатор;
                  НоваяКоманда.Использование = Использование;
                  НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
                  НоваяКоманда.Модификатор = Модификатор;

КонецПроцедуры
Функция Печать(СсылкаНаОбъект, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт // Запускается при печати

         КоллекцияПечатныхФорм = Новый ТаблицаЗначений;
                  КоллекцияПечатныхФорм.Колонки.Добавить("ИмяМакета");
                  КоллекцияПечатныхФорм.Колонки.Добавить("ИмяВРЕГ");
                  КоллекцияПечатныхФорм.Колонки.Добавить("СинонимМакета");
                  КоллекцияПечатныхФорм.Колонки.Добавить("ТабличныйДокумент");
                  КоллекцияПечатныхФорм.Колонки.Добавить("Экземпляров");
                  КоллекцияПечатныхФорм.Колонки.Добавить("Картинка");
                  КоллекцияПечатныхФорм.Колонки.Добавить("ПолныйПутьКМакету");

         Настройка=КоллекцияПечатныхФорм.Добавить();
                  Настройка.ИмяВРЕГ= "ТОРГ_12_АЛЬТЕРНАТИВНАЯ";
                  Настройка.Экземпляров = 1;

         Возврат УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
                  "ТОРГ_12_Альтернативная", "ТОРГ 12 (Альтернативная)",
                  ПолучитьТабличныйДокументТорг12(СсылкаНаОбъект, ОбъектыПечати)); // Функция «ПолучитьТабличныйДокументТорг12» вернет табличный документ для печати

КонецФункции

Подключение к базе.

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

Отладка

Единственный минус дополнительных отчетов и обработок заключается в том, что внутри них не работает встроенный в платформу отладчик.

Связано это в первую очередь с тем, что, запуская такую форму, система создает временный файл, и точки останова не срабатывают.

Способы отладки

  1. Создать форму. Реквизит ссылочного типа на объект. Вызвать экспортную функцию модуля объекта и необходимыми параметрами.
  2. Внести изменения в общий модуль «ДополнительныеОтчетыИОбработки». По владельцу формы организовать выбор действия.
  3. В разработку добавить код с ошибкой внутри «Попытка Исключения КонецПопытки». Для режима отладки устанавливаем флаг «Останавливаться по ошибке»
  4. В СведенияОВнешнейОбработке устанавливаете БезопасныйРежим = Ложь. Загружаете в справочник ДополнительныеОтчетыИОбработки. Запускаете эту обработку через Файл-Открыть. Закрываете обработку. Запускаете подключенную команду. Точки останова сработают в файле.
  5. Открывать разработку через обработку в которой вызывается разработка из справочника «Дополнительный отчеты и обработки». То же самое что п. 2 только в обработке.
  6. Тот же пункт 5 только в расширение конфигурауции.

Не забывайте обновить обработку в базе.

Comments

So empty here ... leave a comment!

Добавить комментарий

Sidebar