![]() |
|
Подскажите по поводу расшифровки СКД, как получить всю строку | ☑ | ||
---|---|---|---|---|
0
inkvizitr
17.03.20
✎
10:58
|
Имеется отчет СКД, в нем есть два макета, основной и подчиненный.
Если пользователь будет кликать в поле Код_мероприятия(основного макета), то будет вызывается расшифровка, собираются данные и передаются во второй макет(подчиненный) Все реализовал, все работает, но если пользователь поменяет в настройках СКД поля местами, данный алгоритм начинает ломаться, как правильнее получить все значения одной строки. РасшифровкаСтруктура = Новый Структура; РасшифровкаСтруктура.Вставить("Статья"); РасшифровкаСтруктура.Вставить("Код_мероприятия"); РасшифровкаСтруктура.Вставить("Код_статьи"); РасшифровкаСтруктура.Вставить("Подразделение"); ДанныеОтчета = ПолучитьИзВременногоХранилища(ДанныеРасшифровки); ПолеРасшифровки = ДанныеОтчета.Элементы.Получить(Расшифровка).ПолучитьПоля()[0]; СчетчикРасшифровки = Число(Расшифровка); Если Не ПолеРасшифровки = Неопределено Тогда Если ПолеРасшифровки.Поле = "Код_мероприятия" Тогда РасшифровкаСтруктура.Вставить("Код_мероприятия", ПолеРасшифровки.Значение); ЭлементРасшифровки = ДанныеОтчета.Элементы.Получить(СчетчикРасшифровки - 1); ПолеРасшифровки = ЭлементРасшифровки.ПолучитьПоля()[0]; РасшифровкаСтруктура.Вставить("Статья", ПолеРасшифровки.Значение); ЭлементРасшифровки = ДанныеОтчета.Элементы.Получить(СчетчикРасшифровки - 2); ПолеРасшифровки = ЭлементРасшифровки.ПолучитьПоля()[0]; РасшифровкаСтруктура.Вставить("Код_статьи", ПолеРасшифровки.Значение); ЭлементРасшифровки = ДанныеОтчета.Элементы.Получить(СчетчикРасшифровки - 3); ПолеРасшифровки = ЭлементРасшифровки.ПолучитьПоля()[0]; РасшифровкаСтруктура.Вставить("Подразделение", ПолеРасшифровки.Значение); Возврат РасшифровкаСтруктура; Иначе Возврат Расшифровка; КонецЕсли; Если ПолеРасшифровки.Поле = "Статья" Тогда РасшифровкаСтруктура.Вставить("Статья", ПолеРасшифровки.Значение); ЭлементРасшифровки = ДанныеОтчета.Элементы.Получить(СчетчикРасшифровки + 1); ПолеРасшифровки = ЭлементРасшифровки.ПолучитьПоля()[0]; РасшифровкаСтруктура.Вставить("Код_мероприятия", ПолеРасшифровки.Значение); ЭлементРасшифровки = ДанныеОтчета.Элементы.Получить(СчетчикРасшифровки - 1); ПолеРасшифровки = ЭлементРасшифровки.ПолучитьПоля()[0]; РасшифровкаСтруктура.Вставить("Код_статьи", ПолеРасшифровки.Значение); ЭлементРасшифровки = ДанныеОтчета.Элементы.Получить(СчетчикРасшифровки - 2); ПолеРасшифровки = ЭлементРасшифровки.ПолучитьПоля()[0]; РасшифровкаСтруктура.Вставить("Подразделение", ПолеРасшифровки.Значение); Возврат РасшифровкаСтруктура; Иначе Возврат Расшифровка; КонецЕсли; КонецЕсли; |
|||
1
inkvizitr
17.03.20
✎
11:03
|
может как то есть способ понять куда поле переместилось, сравнив пользовательские и начальные настройки
|
|||
2
fisher
17.03.20
✎
11:08
|
Это ты до расшифровок вышестоящих группировок так добираешься? :)
Извращенец. Гляди в сторону ПолучитьРодителей() у элемента расшифровки. |
|||
3
inkvizitr
17.03.20
✎
11:16
|
(2) у меня там родитель всего один, данные тупо выводятся табличкой в которой около тысяча строк
|
|||
4
fisher
17.03.20
✎
11:21
|
(3) Так у этого родителя есть свой родитель и так далее. Дерево, рекурсия - вот это все.
|
|||
5
inkvizitr
17.03.20
✎
11:34
|
(4) вот мой пример у меня выводятся только детальные записи, как получить родителя?
https://ibb.co/6gBfmmq |
|||
6
fisher
17.03.20
✎
11:48
|
(5) Если все в детальных записях, тогда не знаю. Не сталкивался...
|
|||
7
inkvizitr
17.03.20
✎
11:50
|
(6) а можно ли как то сделать, на вид как детальные записи, а по факту группировка используется к примеру
|
|||
8
fisher
17.03.20
✎
11:51
|
(7) Можно сделать составной группировкой. Но не уверен, что это решит проблему. С расшифровками по составной группировке я тоже не работал.
|
|||
9
fisher
17.03.20
✎
11:55
|
Еще можно попробовать в макетах СКД принудительно засунуть в данные расшифровки по каждому полю значения остальных нужных полей
|
|||
10
toypaul
гуру
17.03.20
✎
12:07
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |