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