Особенность при добавлении внешних отчетов в УНФ 1.6








Добавляем внешний отчет в УНФ 1.6, Устанавливаем «тэги» для внешнего отчета в УНФ 1.6.

Коллеги, добрый день!

Кто пользовался УНФ 1.6 наверное видел, что в этой конфигурации расположение внешних отчетов несколько отличается от привычного многим. Команды "Дополнительные отчеты" как например в БП 3.0 или УТ 11 в УНФ 1.6 — нет. Вместо этого (если включена функциональная опция "Использовать дополнительные отчеты и обработки") при входе в подраздел "Отчеты" присутствует кнопка "Внешние" (см. рис.1).

Для того, чтобы добавленный нами в конфигурацию внешний отчет появился в перечне внешних отчетов, у него должен быть установлен соответствующий "Тэг" (см. рис.2).

Немного про "Тэги" отчетов: "Тэги" в отчетах УНФ 1.6 используются как для определения местоположения отчета в разделе программы (есть теги соответствующие наименованиям разделов: "Продажи", "Закупки", "Зарплата" и т.д.), так и для быстрого поиска необходимого отчета (теги: "Запасы", "Заказы" и т.д.) (см. рис.3). Список всех отчетов и установленных для них тегов хранится в регистре сведений "Настройки варианта отчетов УНФ" (см. рис.4), увидеть который можно через "Все функции". И наша задача заключается в том, чтобы при добавлении внешнего отчета в этот регистр сведений записался нужный нам "Тег". Конечно же можно просто вручную указать "Тэг" в этом регистре сведений, но при таком варианте каждый раз при добавлении/обновлении внешнего отчета, нужно не забывать заходить в регистр сведений и указывать "Тэг".

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

Пример кода, указываем теги для одного варианта отчета:

Процедура ПриОпределенииНастроекОтчета(НастройкиОтчета, НастройкиВариантов) Экспорт

//Указываем "Теги" для одного варианта отчета - "Основной"
НастройкиВариантов["Основной"].Теги = НСтр("ru = 'Продажи,CRM'");

КонецПроцедуры

Пример кода, указываем теги для всех вариантов отчета:

Процедура ПриОпределенииНастроекОтчета(НастройкиОтчета, НастройкиВариантов) Экспорт

//Указываем "Теги" для всех вариантов отчета
Для Каждого НастройкиТекВарианта Из НастройкиВариантов Цикл
НастройкиТекВарианта.Значение.Теги = НСтр("ru = 'Продажи,CRM'");
КонецЦикла;

КонецПроцедуры

В моём примере всего один вариант отчета — "Основной" (см. рис. 6), поэтому можно использовать любой из вариантов.

Далее в самом конце модуля объекта внешнего отчета после всех процедур и функций, нужно для ранее созданного реквизита "ЭтоОтчетУНФ" установить значение "Истина":

ЭтоОтчетУНФ = Истина;

Очень важный момент: в конфигураторе, в свойствах отчета (Действия — Свойства) не забываем указать "Хранилище вариантов" (см. рис. 7). Иначе, при добавлении отчета, программа будет ругаться, что не заполнено это свойство и отчет не будет виден.

После всего проделанного, когда внешний отчет будет добавлен в базу, в регистре сведений "Настройки варианта отчетов УНФ", для нашего отчета появятся теги: Продажи, CRM. Соответственно наш отчет будет виден в подразделе "Отчеты" в таких разделах как: "Продажи" и "CRM" (см. рис. 8).

Пример кода из модуля объекта целиком:

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

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

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

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

Процедура ПриОпределенииНастроекОтчета(НастройкиОтчета, НастройкиВариантов) Экспорт

//Указываем "Теги" для одного варианта отчета - "Основной"
//НастройкиВариантов["Основной"].Теги = НСтр("ru = 'Продажи,CRM'");  //не используем

//Указываем "Теги" для всех вариантов отчета
Для Каждого НастройкиТекВарианта Из НастройкиВариантов Цикл
НастройкиТекВарианта.Значение.Теги = НСтр("ru = 'Продажи,CRM'");
КонецЦикла;

КонецПроцедуры

ЭтоОтчетУНФ = Истина;

 

В качестве примера, прилагаю внешний отчет.

Про отчет: одному из клиентов очень важна корректность установки "Состояний" у заказов покупателей (на продажу), чтобы заказ покупателя был "успешно завершен", только когда полностью оплачен и отгружен. А так как в УНФ никак не контролируются состояния заказов покупателей и вручную можно установить что угодно, был написан этот простенький отчет.

Отчет тестировался на конфигурации УНФ 1.6, версии: 1.6.17.174; 1.6.18.88; 1.6.18.98; 1.6.18.168.

9 Comments

  1. sdemon72

    Что-то не получается. Версия 1.6.17.174. Глобальным поиском не нашел даже вызов процедуры «ПриОпределенииНастроекОтчета»

    Reply ↓
  2. d.saladin

    (1) Процедура «ПриОпределенииНастроекОтчета» находится в модуле объекта почти каждого отчета в конфигурации УНФ, и аналогичную нужно создать в модуле объекта внешнего отчета.

    Reply ↓
  3. sdemon72

    Ага. Прошу прощения, в поиске стояли фильтры, поэтому сначала ничего не нашел. Разобрался, вот этот текст я у вас прозевал: «для начала нужно создать реквизит отчета «ЭтоОтчетУНФ» с типом булево».

    Создал реквизит, теперь все работает.

    Большое спасибо!

    Reply ↓
  4. d.saladin

    (3) пожалуйста))

    Reply ↓
  5. transt

    Ага, тоже на первом заходе пропустил про доп реквизит…

    Сейчас «без гонки» внимательно перечитал и всё получилось!

    Для справки: проверял сейчас на версии 1.6.9.36

    Reply ↓
  6. Stepka1206

    Спасибо тебе добрый человек! думал уже я такой, а не лыжи…

    Reply ↓
  7. Sersh2010

    В параметры регистрации для отчетов, команды передавать не обязательно, поэтому, если быть более кратким, то:

    Функция СведенияОВнешнейОбработке() Экспорт
    
    Сведения = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(СтандартныеПодсистемыСервер.ВерсияБиблиотеки());
    Сведения.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиОтчет();
    Сведения.Версия = «1.0»;
    Сведения.Наименование = «Мой отчет»;
    
    Возврат Сведения;
    
    КонецФункции
    
    Процедура ПриОпределенииНастроекОтчета(НастройкиОтчета, НастройкиВариантов) Экспорт
    НастройкиВариантов[«ИмяВарианта»].Теги = «Продажи»;
    КонецПроцедуры
    
    ЭтоОтчетУНФ = Истина;
    

    Показать

    Reply ↓
  8. d.saladin

    (7) Не совсем так, таблицу команд всё равно необходимо создать, но вот заполнять, действительно не обязательно.

    В функции «СведенияОВнешнейОбработке», таблица как раз и создаётся.

    Reply ↓
  9. pyrkin_vanya

    Спасибо

    Reply ↓

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *