Как найти отчет в 1с по ссылке

найти отчет 1с по его названию в режиме предприятия (через вариант отчетов)

Задание:

Нужно доработать типовой отчет 1С «Динамика продаж».

Проблема в том что в конфигураторе 1С нет отчета с названием или синонимом «Димика продаж» .

 Таких отчетов много и сейчас мы узнаем как нам найти их в конфигураторе.

Решение:

Ищем этот отчет в режиме 1с предприятие:

1с отчет в режиме предприятие

 либо так:

3

4

В конфигураторе по названию мы этот отчет не найдем:

5

Запустим отчет «динамика продаж» и кликнем на «получить ссылку»:

получить ссылку на отчет

Получаем ссылку на справочник — варианты отчетов.

Найдем справочник варианты отчетов :

1с все функции

8

Вот нужный справочник, найдем в нем отчет(вариант отчета) «Динамика продаж»:

1с варианты отчетов

Открываем элемент «Динамика продаж» , на реквизите отчет нажимаем открыть:

10

Вот наш отчет:

11

открываем его и открываем скд:

12

Наш искомый отчет «Динамика продаж» всего лишь один из его вариантов:

13

Как найти отчет по ссылке

Бывает продвинутый клиент скидывает ссылку на отчет в таком виде:

e1cib/data/Справочник.ВариантыОтчетов?ref=ada700151711599111e4c4ff626ef8ea

Но возникает вопрос, а что это за отчет?

  1. если нет специфического наименования сохраненного варианта, то сохраняем вариант с уникальным наименованием
  2. открываем обработку «УстановкаЗначенийРеквизитовОбъекта» и выбираем объект «Вариант отчета» (иногда «Отчеты»)
  3. Находим наш вариант
  4. смотрим реквизит «Отчет, (Отчет)»

БСП отчеты — как определить какой отчет открыт (открыть в конфигураторе)

Я
   RomaH

01.04.21 — 08:45

Собственно — встроенные отчеты (в конфигурации) и доп отчеты — внешние файлы

у отчетов куча вариантов отчетов — названия пишут пользователи

читая СКД (нет выполняемого кода)

вот звонит пользователь — открыт отчет — что-то надо исправить — как определить что за отчет открыт?

   acht

1 — 01.04.21 — 08:51

Какая хорошая первоапрельская тема.

Спросить пользователя, если не сможет объяснить откуда он это взял — значит оно ему и не надо.

   dka80

2 — 01.04.21 — 08:53

Справа три точки вертикальные — Информация для технического специалиста

   RomaH

3 — 01.04.21 — 09:09

(2) о — это для встроенных отчетов

остались дополнительные — там такого нет

   dka80

4 — 01.04.21 — 09:13

С дополнительными все проще — просто спроси у пользователя. Потому что со встроенными отчет может называться «супер отборка», а на самом деле это один из вариантов строенного отчета «мегаотчет»

   RomaH

5 — 01.04.21 — 09:18

(4) что спросить?

пользователь открывает из панели отчетов — «Отчет имени Ивана Васильевича», а на самом дела это внешний отчет «СреднееПоМаксимумам»

   acht

6 — 01.04.21 — 09:19

(5) >  что спросить?

Порядок действий, который пользователь совершал для достижения результата. Ваш К.О.

   RomaH

7 — 01.04.21 — 09:22

(6) ты БСП вообще видел — иди мальчик отсюда, не мешай взрослым дядям разговаривать

   RomaH

8 — 01.04.21 — 11:02

нашел идентификатор я только тут:

https://ibb.co/tH7Pr5V

только костыль в общую форму? или этот идентификатор можно в типовой увидеть?

   Mikeware

9 — 01.04.21 — 11:09

(1) хы… «он у меня под звездочкой!!!»

   Mikeware

10 — 01.04.21 — 11:10

(8) поищи в справочнике Отчеты

   RomaH

11 — 01.04.21 — 11:12

(10) что искать? еще раз — ты же сам пишешь в (9)

у пользователя отчет «под звездочкой» «Отчет имени Ивана Ивановича»

я подключаюсь к рабочему столу пользователя вижу этот открытый отчет

как найти его в конфигураторе?

   Kassern

12 — 01.04.21 — 11:16

(11) Смотришь, куда юзверг нажал, чтобы открыть отчет. Ставишь точку останова у себя и нажимаешь на этот отчет, а дальше прыгаешь по процедурам и находишь куда обращается 1ска, чтобы его открыть. Профит…

   Mikeware

13 — 01.04.21 — 11:19

   Mikeware

14 — 01.04.21 — 11:20

(12) тоже вариант. Но если юзверг нажал у себя «под звездочкой», то только под его сеансом смотреть..

   Kassern

15 — 01.04.21 — 11:20

(12) а на будущее, умные люди придумали справку, создаешь внешний отчет и пишешь в справке, что за отчет и откуда ноги растут и будет тебе счастье

   Kassern

16 — 01.04.21 — 11:20

(15) надо хоть немного документировать доработки в том числе и отчеты…

   RomaH

17 — 01.04.21 — 11:21

(12) это надо зайти в администрирование, установить пользователю вход по паролю

из конфигуратора выполнить запуск под пользователем .. долго и печально

(13) а как в этот список попасть из формы отчета?

   Kassern

18 — 01.04.21 — 11:21

(17) а разве нельзя тупо в конфигураторе подключить сеанс юзверга в отладку?

   Mikeware

19 — 01.04.21 — 11:24

(17) из формы отчета — никак. а найти по названию, которое отображается — можно

   FIXXXL

20 — 01.04.21 — 11:24

(11) пользователи сами варианты накручивают-сохраняют?

   Mikeware

21 — 01.04.21 — 11:27

(20) еще как… более того, дошли уже до такого ТЗ:

Еще есть одна задача, её решение тоже может сохранить ресурс времени, в результате ускорить в целом выполнение процессов.

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

Я мог бы сохранять каждый вариант отчета с настройками, которые бы я для него делал, но работать с вариантами отчетов в текущем интерфейсе неудобно.

Все варианты одного отчета вываливаются неструктурированным списком, их могут быть сотни. Их уже сотни.

По названию тоже не всегда удобно ориентироваться.

Нужно сделать следующее:

Создать структурированное хранилище вариантов отчетов на месте кнопки перебора листа вариантов отчетов.

Дать возможность создавать в нем папки, называть их.

Создавать папки с автоматически сохраненными вариантами отчетов с указанием даты создания. — система может чистить те, к которым не обратился пользователь спустя некоторое время, например, в течение недели.

   Mikeware

22 — 01.04.21 — 11:28

+(21) «я уже джва года хочу…»   :-)

   FIXXXL

23 — 01.04.21 — 11:34

(21) ну ссылку справочник ВариантыОтчетов храни сбоку в каком придумаешь виде и показывай как надо :)

   Kassern

24 — 01.04.21 — 11:34

(17) ладно, так уж и быть научу тебя магии)

Жмякаешь на значок «Получить ссылку», копируешь ссылку на отчет.

У себя можешь создать обработку и там написать что то типа:

&НаКлиенте

Процедура Пуск(Команда)

    ПерейтиПоНавигационнойСсылке(Ссылка);

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

Поставить точку останова и посмотреть откуда вызывается отчет)

   Kassern

25 — 01.04.21 — 11:35

(24) тут полюбому можно еще поковырять и выдать уже имя отчета внешнего

   FIXXXL

26 — 01.04.21 — 11:40

(25) в форме элемента справочника ВариантыОтчетов ИзменитьФорму и галки на Родитель и группу Техническая информация

   Dmitry77

27 — 01.04.21 — 11:42

У либо о отчета есть уникальная ссылка. Просишь её прислать тебе У пользователя.

   FIXXXL

28 — 01.04.21 — 11:44

(27) ему в конфигураторе нужен очет

   Kassern

29 — 01.04.21 — 11:47

(28) а что мешает в конфигураторе перейти по ссылке и найти, что за отчет?

   Mikeware

30 — 01.04.21 — 11:50

(23) это переписывать типовой механизм придется.

или я туплю и чего-то не понял?

   FIXXXL

31 — 01.04.21 — 11:51

(30) ну не сильно, добавить менюху свою в общую форму, обработчики сохранения вариантов подогнуть

   FIXXXL

32 — 01.04.21 — 11:52

(29) по какой ссылке?

   Mikeware

33 — 01.04.21 — 11:53

(32) по присланной…

(31) я смотрел — многовато получалось.

сказал, что «зашито в платформу»… в общем, «тактично послал»…

   Kassern

34 — 01.04.21 — 11:54

(32) у любой открытой формы есть ссылка в 1с. К примеру «e1cib/data/Справочник.ВариантыОтчетов?ref=b2670cc47aaa3e5611e94b0cb5208d3e» с помощью процедуры ПерейтиПоНавигационнойСсылке можно в конфигураторе глянуть куда 1ска долбится чтобы открыть данную форму. В данном случае, какой отчет запускает

   RomaH

35 — 01.04.21 — 12:10

костыль:

ОтчетыПереопределяемый:

Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт

    
    Форма.НавигационнаяСсылкаОтчета = ПолучитьНавигационнуюСсылку(Форма.Параметры.Отчет);

    
    НоваяКоманда = Форма.Команды.Добавить(«ПерейтиПоНавигационнойСсылкеОтчета»);

    НоваяКоманда.Действие = «ПерейтиПоНавигационнойСсылкеОтчета»;//Имя процедуры

    НоваяКоманда.Заголовок = «Перейти к отчету»;

    
    НовыйЭлемент = Форма.Элементы.Добавить(«ПерейтиПоНавигационнойСсылкеОтчета»,

                                     Тип(«КнопкаФормы»),

                                     Форма.Элементы.ГруппаПрограммныйИнтерфейс);

    НовыйЭлемент.ИмяКоманды = «ПерейтиПоНавигационнойСсылкеОтчета»;    

    
    НовыйЭлемент.ПоложениеВКоманднойПанели = ПоложениеКнопкиВКоманднойПанели.ВДополнительномПодменю;

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

в модуле формы ФормаОтчета добавить:

&НаКлиенте

Процедура ПерейтиПоНавигационнойСсылкеОтчета(Команда)

    
    ПерейтиПоНавигационнойСсылке(НавигационнаяСсылкаОтчета);

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

… можно конечно переопределить навигационную ссылку формы — но тогда ссылку на вариант отчета будет сложно послать

а так пользователь шлет навигационную варианта — а я уже перехожу либо в ИдентификаторыОбъектовМетаданных

либо в Доп обработки и отчеты

   Dmitry77

36 — 01.04.21 — 12:14

(34) есть меню перейти по ссылке. И замер производительности в отладчике.

  

RomaH

37 — 01.04.21 — 12:17

+(35) надо еще реквизит формы программно добавить

«НавигационнаяСсылкаОтчета»

Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт

    
    ДобавляемыеРеквизиты    = Новый Массив;

        
    // Опишем ревизиты формы

    НавигационнаяСсылкаОтчета = Новый РеквизитФормы(«НавигационнаяСсылкаОтчета»,    Новый ОписаниеТипов(«Строка», , , Новый КвалификаторыСтроки(200)));

        
    // Заполним массив после описания реквизитов формы

    ДобавляемыеРеквизиты.Добавить(НавигационнаяСсылкаОтчета);

        
        // Добавим новые реквизиты в форму

    Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);    

    
    Форма.НавигационнаяСсылкаОтчета = ПолучитьНавигационнуюСсылку(Форма.Параметры.Отчет);

    
    
    НоваяКоманда = Форма.Команды.Добавить(«ПерейтиПоНавигационнойСсылкеОтчета»);

    НоваяКоманда.Действие = «ПерейтиПоНавигационнойСсылкеОтчета»;//Имя процедуры

    НоваяКоманда.Заголовок = «Перейти к отчету»;

    
    НовыйЭлемент = Форма.Элементы.Добавить(«ПерейтиПоНавигационнойСсылкеОтчета»,

                                     Тип(«КнопкаФормы»),

                                     Форма.Элементы.ГруппаПрограммныйИнтерфейс);

    НовыйЭлемент.ИмяКоманды = «ПерейтиПоНавигационнойСсылкеОтчета»;    

    
    НовыйЭлемент.ПоложениеВКоманднойПанели = ПоложениеКнопкиВКоманднойПанели.ВДополнительномПодменю;

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

В статье будет описано, как в 1с открыть ссылку на документ, справочник и т.д. В данном случае имеется в виду открытие формы объекта, используя ссылку на него. Рассмотрим три способа решения поставленной задачи.

Открыть ссылку используя ПоказатьЗначение

Самый простой способ, использовать метод глобального контекста ПоказатьЗначение. Который показывает в диалоге значение переданное в параметре.

ПоказатьЗначение(<ОписаниеОповещенияОЗавершении>, <Значение>)

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

Таким образом открытие ссылки будет выглядеть следующим образом:

ПоказатьЗначение(, Ссылка);

Если в вашей конфигурации разрешено открытие модальных окон (Свойства конфигурации -> Режим использования модальности, принимает значения Использовать или Использовать с предупреждениями), то можно использовать метод ОткрытьЗначение.

ОткрытьЗначение(<Значение>)

Открытие формы по ссылке

Также в 1с открыть ссылку можно при помощи метода ОткрытьФорму. Этот способ более сложен в реализации, но зато универсален. У него довольно много параметров, но для данной задачи нас интересуют первые два.

ОткрытьФорму(<ИмяФормы>, <Параметры>)

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

Пример 1. Можно указать форму, которая является формой объекта по умолчанию:

"Документ.ПоступлениеТоваров.ФормаОбъекта"

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

"Документ.ПоступлениеТоваров.Форма.МояФормаОбъекта"

Параметры — структура параметров, которая передается в форму. Набор параметров разработчик выбирает сам, исходя их своих целей. Но некоторые параметры являются стандартными и используются для конкретных целей. Например, параметр Ключ, используется для указания платформе, форму какого объекта следует открыть (если Ключ, не указан, то будет открыта форма нового объекта). Таким образом в данный параметр необходимо передать ссылку на открываемый объект.

Пример 3. Открыть форму объекта для документа Поступление товаров.

ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Ключ", Ссылка);
	
ОткрытьФорму("Документ.ПоступлениеТоваров.ФормаОбъекта", ПараметрыФормы);

Получить более подробную информацию по методу ОткрытьФорму можно в статье Как в 1с открыть форму программно

Открытие формы по навигационной ссылке

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

ПерейтиПоНавигационнойСсылке(<НавигационнаяСсылка>)

Пример 4.

НавигационнаяСсылка = "e1cib/data/Документ._ДемоПоступлениеТоваров?ref=acb79eb068770e2511e47c89f0b33406";
ПерейтиПоНавигационнойСсылке(НавигационнаяСсылка);

Также навигационную ссылку можно получить из обычной ссылки. Для этого используется метод ПолучитьНавигационнуюСсылку.

ПолучитьНавигационнуюСсылку(<Объект>, <ИмяРеквизита>, <Индекс>)

В параметр Объект, в том числе, можно передать ссылку на документ или справочник.

Пример 5. Получить навигационную ссылку, используя обычную ссылку и открыть форму объекта.

НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(Ссылка);
ПерейтиПоНавигационнойСсылке(НавигационнаяСсылка);


Пусть переменная СсылкаНаОбъект принадлежит любому ссылочному типу: справочнику, документу, плану счетов и т.д. Получить объект по ссылке можно так:

Объект = СсылкаНаОбъект.ПолучитьОбъект();

Пусть переменная Объект принадлежит любому объектному типу. Получить ссылку из объекта можно так:

СсылкаНаОбъект = Объект.Ссылка;

Будьте внимательны, реквизит “Ссылка” заполняется только при записи объекта. Если объект не записан — ссылки не будет.

Понравилась статья? Поделить с друзьями:
  • Gta iv requires a sound card in order to run как исправить
  • Как исправить ошибку в электронной трудовой книжке
  • Как составить бизнес план для маникюрного салона
  • Как найти координаты точки если известно отношение
  • Как найти тетрадку по окружающему миру