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

Публикация № 1014039

Разработка - Обработки - Менеджеры внешних отчетов

УНФ внешний отчет СКД

Добавляем внешний отчет в УНФ 1.6, Устанавливаем "тэги" для внешнего отчета в УНФ 1.6; устанавливаем "изображение образца" для внешнего отчета в УНФ 1.6.

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

 

Тэги

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

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

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

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

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

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

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

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

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

Процедура ПриОпределенииНастроекОтчета(НастройкиОтчета, НастройкиВариантов) Экспорт
	
	Для Каждого НастройкиТекВарианта Из НастройкиВариантов Цикл

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

	КонецЦикла;
	
КонецПроцедуры

В моём примере два варианта отчета: "Основной" и "Подробный" (см. рис. 6), и нет необходимости указывать разные "тэги", для разных вариантов отчета, поэтому будем использовать второй вариант.

 

Изображение образца отчета

Теперь разберёмся с изображениями образцов для внешних отчетов. Для того, чтобы добавить изображение образца в отчете нужно добавить макет с типом "Двоичные данные" (см. рис. 7). Далее нужно загрузить, заранее подготовленное изображение, в макет "Двоичные данные". Для этого кликаем два раза по макету, в появившемся окне жмём "Загрузить из файла" (см. рис. 8), указываем картинку и жмём "ОК". Изображение должно быть размером 580 x 366 пикселей, формат может быть: PNG или JPG, без разницы.

Далее, чтобы программа поняла, что ваше изображение нужно показывать пользователю в режиме "Предприятие" можно пойти двумя путями:  

1ый - указать имя макета образца следующим образом "Образец" + Имя варианта отчета.

Например, у нас два варианта отчета: "Основной" и "Подробный", и мы хотим для каждого варианта отдельную картинку, поэтому добавляем два макета типа "Двоичные данные", в каждый загружаем своё изображение и называем макеты "ОбразецОсновной" и "ОбразецПодробный" соответственно. Больше никаких "строк кода" не надо, всё уже заранее описано в общих модулях, при загрузке внешнего отчета в базу, у каждого варианта отчета будет своё изображение.

2ой - указать имя макета образца в, ранее описанной, экспортной процедуре "ПриОпределенииНастроекОтчета".

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

Процедура ПриОпределенииНастроекОтчета(НастройкиОтчета, НастройкиВариантов) Экспорт
	
	//Указываем "Изображение образца" для варианта отчета "Основной"
	НастройкиВариантов["Основной"].Вставить("ИмяМакетаОбразца", "ОбразецОсновной");
	
	//Указываем "Изображение образца" для варианта отчета "Подробный"
	НастройкиВариантов["Подробный"].Вставить("ИмяМакетаОбразца", "Подробный");
	
КонецПроцедуры

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

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

В прилагаемом отчете, для варианта отчета "Основной" указано имя макета образца "ОбразецОсновной", то есть отработает общий модуль и для этого варианта изображение будет "выводиться само", а для варианта отчета "Подробный" указано имя макета образца "Подробный", поэтому для второго варианта отчета назначаем имя макета в процедуре "ПриОпределенииНастроекОтчета".

 

ЭтоОтчетУНФ

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

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

 

Очень важный момент!

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

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


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


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

Процедура ПриОпределенииНастроекОтчета(НастройкиОтчета, НастройкиВариантов) Экспорт
	
	//Указываем "Теги" для варианта отчета "Основной"
	//НастройкиВариантов["Основной"].Теги = НСтр("ru = 'Продажи,CRM'");
	//не используем, так как добавляем "Тэги" для всех вариантов ниже
	
	//Указываем "Теги" для варианта отчета "Подробный"
	//НастройкиВариантов["Подробный"].Теги = НСтр("ru = 'Продажи,CRM'");
	//не используем, так как добавляем "Тэги" для всех вариантов ниже
	
	
	//Указываем "Изображение образца" для варианта отчета "Основной"
	//НастройкиВариантов["Основной"].Вставить("ИмяМакетаОбразца", "ОбразецОсновной");
	//не используем, так как с указанным именем макета отработает Общий модуль
	
	//Указываем "Изображение образца" для варианта отчета "Подробный"
	НастройкиВариантов["Подробный"].Вставить("ИмяМакетаОбразца", "Подробный");
	
	
	Для Каждого НастройкиТекВарианта Из НастройкиВариантов Цикл
		
		//Указываем "Теги" для всех вариантов отчета
		НастройкиТекВарианта.Значение.Теги = НСтр("ru = 'Продажи,CRM'");
		
		//Указываем "Изображение образца" для всех вариантов отчета
		//НастройкиТекВарианта.Значение.ИмяМакетаОбразца = "ОбразецОсновной";
		//не используем, так как для каждого варианта отчета выводим своё изображение
		
	КонецЦикла;
	
КонецПроцедуры

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

 

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

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

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

Скачать файлы

Наименование Файл Версия Размер
УНФ - Внешний отчет - Анализ состояний заказов покупателей

.erf 36,65Kb
22
.erf 36,65Kb 22 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. sdemon72 20 02.07.19 18:58 Сейчас в теме
Что-то не получается. Версия 1.6.17.174. Глобальным поиском не нашел даже вызов процедуры "ПриОпределенииНастроекОтчета"
2. d.saladin 78 03.07.19 11:32 Сейчас в теме
(1) Процедура "ПриОпределенииНастроекОтчета" находится в модуле объекта почти каждого отчета в конфигурации УНФ, и аналогичную нужно создать в модуле объекта внешнего отчета.
Desnyanka; sdemon72; +2 Ответить
3. sdemon72 20 03.07.19 16:04 Сейчас в теме
Ага. Прошу прощения, в поиске стояли фильтры, поэтому сначала ничего не нашел. Разобрался, вот этот текст я у вас прозевал: "для начала нужно создать реквизит отчета "ЭтоОтчетУНФ" с типом булево".
Создал реквизит, теперь все работает.
Большое спасибо!
4. d.saladin 78 03.07.19 16:06 Сейчас в теме
5. transt 1 16.07.19 05:26 Сейчас в теме
Ага, тоже на первом заходе пропустил про доп реквизит...
Сейчас "без гонки" внимательно перечитал и всё получилось!
Для справки: проверял сейчас на версии 1.6.9.36
6. Stepka1206 02.08.19 01:10 Сейчас в теме
Спасибо тебе добрый человек! думал уже я такой, а не лыжи...
7. Sersh2010 3 01.10.19 22:52 Сейчас в теме
В параметры регистрации для отчетов, команды передавать не обязательно, поэтому, если быть более кратким, то:
Функция СведенияОВнешнейОбработке() Экспорт
	
	Сведения = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(СтандартныеПодсистемыСервер.ВерсияБиблиотеки());
	Сведения.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиОтчет();
	Сведения.Версия = "1.0";
	Сведения.Наименование = "Мой отчет";
	
	Возврат Сведения;
	
КонецФункции

Процедура ПриОпределенииНастроекОтчета(НастройкиОтчета, НастройкиВариантов) Экспорт
	НастройкиВариантов["ИмяВарианта"].Теги = "Продажи";
КонецПроцедуры

ЭтоОтчетУНФ = Истина;
Показать
d.saladin; +1 Ответить
8. d.saladin 78 08.10.19 10:43 Сейчас в теме
(7) Не совсем так, таблицу команд всё равно необходимо создать, но вот заполнять, действительно не обязательно.
В функции "СведенияОВнешнейОбработке", таблица как раз и создаётся.
9. pyrkin_vanya 382 02.12.19 21:46 Сейчас в теме
10. d.saladin 78 30.12.19 15:41 Сейчас в теме
Недавно кто-то спрашивал про вывод изображения образца, но правда после удалил комментарий. Всё же решил дописать статью, надеюсь кому-нибудь пригодится.
11. PavelKolobkov 25.03.20 17:27 Сейчас в теме
(10) Спасибо за подробную статью! Очень пригодилось!
12. Hellen_Aleksandrova 30.03.20 18:32 Сейчас в теме
Добрый день.

Релиз УНФ 1.6.18.145, платформы 8.3.15.1830.

Сделала внешний отчет с использованием ФормаОтчетаУНФ. При открытии через меню Файл-Открыть отчет отрабатывает "как надо".
Теперь нужно поместить отчет в расширение - добавила, туда же перенесла общую форму. Теперь при открытии ошибка :

Неверный первый параметр Ссылка в функции ОбщегоНазначения.ЗначенияРеквизитовОбъекта:
- Значение должно быть ссылкой или именем предопределенного элемента
{ОбщийМодуль.ОбщегоНазначения.Модуль(173)}: НСтр("ru = 'Неверный первый параметр Ссылка в функции ОбщегоНазначения.ЗначенияРеквизитовОбъекта:
{ОбщийМодуль.ОбщегоНазначения.Модуль(347)}: Результат = ЗначенияРеквизитовОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные);
{ОбщаяФорма.ФормаОтчетаУНФ.Форма(323)}: ЗначениеРеквизитаПользовательский = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДопВариант, "Пользовательский");


Попробовала вынести во внешний отчет - ошибка такая же. Спасите помогите.
13. d.saladin 78 30.03.20 20:08 Сейчас в теме
(12) Вы выбрали в качестве формы отчета общую форму: "ФормаОтчетаУНФ".
Попробуйте выбрать общую форму "ФормаОтчета".
14. Hellen_Aleksandrova 30.03.20 22:04 Сейчас в теме
(13) Форма открылась, но данные теперь неверно заполняются. Работа с параметрами периодов в этой форме отличается. Спасибо
15. user1338598 29.04.20 14:59 Сейчас в теме
Есть совсем простой способ. Возможно, кому-то подойдет.

Добавить теги и изображение внешнего отчета можно в режиме предприятия.

1. Добавляем внешний отчет
2. Через любой раздел открываем все отчеты, устанавливаем фильтр "Внешние", фильтр по разделу убираем
3. Вызываем контекстное меню нашего отчета, выбираем пункт "Настройки отчета"
4. Добавляем нужные теги (у меня - CRM и Продажи), описание, изображение
5. Теперь в разделах, указанных в тегах, в списке отчетов будет наш отчет с изображением

Минус этого способа - при обновлении внешнего отчета установленные выше настройки слетят и нужно будет их устанавливать заново.





16. user1338598 29.04.20 15:00 Сейчас в теме
Есть совсем простой способ. Возможно, кому-то подойдет.

Добавить теги и изображение внешнего отчета можно в режиме предприятия.

1. Добавляем внешний отчет
2. Через любой раздел открываем все отчеты, устанавливаем фильтр "Внешние", фильтр по разделу убираем
3. Вызываем контекстное меню нашего отчета, выбираем пункт "Настройки отчета"
4. Добавляем нужные теги (у меня - CRM и Продажи), описание, изображение
5. Теперь в разделах, указанных в тегах, в списке отчетов будет наш отчет с изображением

Минус этого способа - при обновлении внешнего отчета установленные выше настройки слетят и нужно будет их устанавливать заново.
Прикрепленные файлы:
d.saladin; user1401084; +2 Ответить
17. d.saladin 78 30.04.20 17:06 Сейчас в теме
(16) Да, но этот единственный минус, перекрывает все плюсы))
Бывает клиент говорит, а добавьте то, а переделайте это и т.д. и каждый раз эта свистопляска с тегами утомила. Поэтому решил разобраться, интересно же докопаться до истины, понять как это всё устроено и как работает.
18. ulterior 05.09.20 17:26 Сейчас в теме
Спасибо за статью.

через внешний отчет все получилось, а вот если отчёт добавить в конфигурацию, то не показывает в списке "Все отчёты" (т.е в регистр сведения "Настройки варианта отчетов УНФ" не попадают данные по моему отчёту), а отображается в Панели действий -> Отчёты (рис. в приложении)

редакция 1.6 (1.6.10.55)
Прикрепленные файлы:
19. d.saladin 78 07.09.20 09:11 Сейчас в теме
(18) Добрый день!
Статья и писалась именно про добавление внешнего отчета.
Плюс версия конфигурации у вас достаточно старая, возможно на тот момент использовались немного другие механизмы.
Могу лишь посоветовать посмотреть какой-либо встроенный отчет в вашей конфигурации и по аналогии сделать свой.
20. compaud 28.10.20 13:32 Сейчас в теме
Пока не добавил в сведенияОВнешнейОбработки


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


отчет так и не появился в программе.


Еще вопрос чем вид "отчет" отличается от вида "ДополнительныйОтчет"?
У себя поставил "ДополнительныйОтчет"
21. d.saladin 78 29.10.20 10:54 Сейчас в теме
(20) В прочих конфигурациях (например в БП 3.0), если указать вид дополнительной обработки "Отчет", то отчет появляется в меню "Отчеты" на форме объекта или списка.
Если выбрать "Дополнительный отчет", то в списке соответствующих подсистем в меню "Сервис" - "Дополнительные отчеты".

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

По поводу команды, только что всё проверил на последней УНФ (1.6.23.61), всё отлично работает и без неё.
22. zif74 9 05.11.20 21:09 Сейчас в теме
23. d.saladin 78 05.11.20 22:18 Сейчас в теме
24. user1232351 08.11.20 19:01 Сейчас в теме
Оставьте свое сообщение