Вход | Регистрация
 

Расшифровка отчета на скд

Расшифровка отчета на скд
Я
   СинийКот
 
21.11.19 - 10:07
Здравствуйте. Не подскажет кто-нибудь, как сделать расшифровку отчета, написанного на СКД, в случае, когда по двойному клику на ячейку должен открываться другой СКД-макет этого же отчета? Или макет - табличный документ созданной формы отчета. Ни то ни другое не получается.
   toypaul
 
1 - 21.11.19 - 10:22
наверное надо начать с того, что успел сделать. и описать стартовые условия - УФ/ОФ, внешний/встроенный
   toypaul
 
2 - 21.11.19 - 10:26
возможно это чем-то поможет http://catalog.mista.ru/public/1058110/
   fisher
 
3 - 21.11.19 - 10:31
Гугл, Хрусталева. Тема заезженная.
Что такое "другой СКД-макет"? Другой вариант?
   СинийКот
 
4 - 21.11.19 - 11:10
УФ. Внешний. Облазил весь инет. Помимо макета "ОсновнаяСхемаКомпоновкиДанных" есть еще два макета, один собран руками, другой сделан на СКД - они одинаковые, пытаюсь хоть какой-нибудь запустить. Это не другой вариант, если конкретно - там детализация по сотрудникам, количество которых указано в самом отчете (то есть имена, телефоны и т.д.). Есть форма отчета. Пытался в процедуре "ОбработкаРасшифровки" что-нибудь написать. Получалось вывести то идентификатор ячейки, то пустой табличный документ, но дальше этого не продвинулся.
   toypaul
 
5 - 21.11.19 - 11:11
(4) так и напиши = "не понимаю как работает расшифровка". тогда книжки, яндекс, инфостарт
   fisher
 
6 - 21.11.19 - 14:56
(4) А! Вообще другая схема СКД? Это сложнее. Но если у тебя не получается расшифровать с использованием обычного макета, то в эту сторону даже не суйся пока. А с обычным макетом я не очень понимаю, какие у тебя проблемы могут быть. Это же вывод обычной печатной формы, просто из события расшифровки?
   fisher
 
7 - 21.11.19 - 14:57
Или проблема с получением нужных данных из расшифровки в событии расшифровки?
   fisher
 
8 - 21.11.19 - 14:57
Тут могу пару заготовок подбросить.
   СинийКот
 
9 - 21.11.19 - 15:45
(6) По сути да, табличный документ. Сформирован в модуле формы. Хотел в том же модуле формы сделать обработку расшифровки.
(7) И да, нужные данные не могу получить, в лучшем случае получаю идентификатор ячейки.
(8) Если не жалко чем-то поделиться, поделитесь.
   fisher
 
10 - 21.11.19 - 16:05
(9) Это не идентификатор ячейки. Это индекс элемента данных расшифровки, которые лежат во временном хранилище. Адрес хранилища лежит в реквизите отчета "ДанныеРасшифровки" (обычно с таким именем его создает мастер, ссылка на него прописывается в свойствах отчета).
И вот оттуда уже достаешь чего надо. В БСП или в блоке работы с отчетами в типовых какие-то наработки на эту тему уже есть. Но под рукой вот что-то сам когда-то писал.
Вызываешь ПолучитьПараметрыРасшифровываемогоПоля(Расшифровка, ДанныеРасшифровки) и на выходе получаешь структуру, у которой в "ПоляГруппировок" будут значения всех группировок от текущей до вышестоящих.
Функция ПолучитьПараметрыРасшифровываемогоПоля(ИндексЭлементаРасшифровки, АдресДанныхРасшифровкиВоВременномХранилище) Экспорт
    
    СтруктураРезультата = Новый Структура;
    
    ДанныеРасшифровкиОтчета = ПолучитьИзВременногоХранилища(АдресДанныхРасшифровкиВоВременномХранилище);
    
    ЭлементРасшифровки = ДанныеРасшифровкиОтчета.Элементы[ИндексЭлементаРасшифровки];
    
    ИмяРасшифровываемогоПоля = Неопределено;
    ПоляЭлементаРасшифровки = ЭлементРасшифровки.ПолучитьПоля();
    Если ПоляЭлементаРасшифровки.Количество() > 0 Тогда
        ИмяРасшифровываемогоПоля = ПоляЭлементаРасшифровки[0].Поле;
    КонецЕсли;
    
    СтруктураРезультата.Вставить("ИмяПоля", ИмяРасшифровываемогоПоля);
        СтруктураРезультата.Вставить("ПоляГруппировок", ПолучитьСтруктуруПолейРасшифровки(ЭлементРасшифровки));
    
    Возврат СтруктураРезультата;
    
КонецФункции

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

Функция ПолучитьМассивРодительскихЭлементовРасшифровки(ЭлементРасшифровки) Экспорт
    
    МассивРодителей = Новый Массив;
    
    МассивПрямыхРодителей = ЭлементРасшифровки.ПолучитьРодителей();
    
    Для Каждого РодительскийЭлементРасшифровки Из МассивПрямыхРодителей Цикл
        МассивВышестоящихРодителей = ПолучитьМассивРодительскихЭлементовРасшифровки(РодительскийЭлементРасшифровки);
        Для Каждого ЭлементРасшифровкиВышестоящегоРодителя Из МассивВышестоящихРодителей Цикл
            Если ТипЗнч(ЭлементРасшифровкиВышестоящегоРодителя) = Тип("ЭлементРасшифровкиКомпоновкиДанныхПоля") Тогда
                МассивРодителей.Добавить(ЭлементРасшифровкиВышестоящегоРодителя);
            КонецЕсли;    
        КонецЦикла;
    КонецЦикла;
    
    Для Каждого ПрямойРодитель Из МассивПрямыхРодителей Цикл
        Если ТипЗнч(ПрямойРодитель) = Тип("ЭлементРасшифровкиКомпоновкиДанныхПоля") Тогда
            МассивРодителей.Добавить(ПрямойРодитель);
        КонецЕсли;    
    КонецЦикла;
    
    Возврат МассивРодителей;
    
КонецФункции
   СинийКот
 
11 - 22.11.19 - 17:19
(10) Спасибо огромное, с этим кодом все сделал.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.