Особенность при добавлении внешних отчетов в УНФ 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 не будет опубликован. Обязательные поля помечены *