8.3. Обычное приложение.Обработка расшифровки.Получить значение всей тек строки #722230


#0 by SeiOkami
Здравия всем! Никак разобраться не могу. Как получить значение всех полей тек. строки? Получаю поля так: ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля Поле там одно - то, по которому пользователь и клацнул А как получить значение всей строки, по полю которой клацнули? Могу получить значения группировок, в которые входит тек. поле, но вот как красиво получить тек. строку не пойму. Единственное, что нашёл: если уменьшить выполнить ДанныеРасшифровки.Элементы[Расшифровка-1], то получишь предыдущее поле. Но это ужасный способ.
#1 by DmitrO
ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей
#2 by SeiOkami
, писал в Это получение родителя, а не тек. строки
#3 by DmitrO
ну строка идентифицируется, ведь группировкой по какому-то полю (ну или несколько полей)
#4 by DmitrO
если это не детальные записи конечно..
#5 by SeiOkami
, это детальные записи. Получив группировку, к которой они относятся, я не получу значение тек. строки. По крайней мере не знаю как получить.
#6 by DmitrO
а точно у родителя (группировка детальных записей) в полях пусто?
#7 by SeiOkami
, у родителя в полях только он сам
#8 by DmitrO
а, т.е. это верхняя группировка, понял..
#9 by SeiOkami
Таблица      <Детальные записи> (Документ, сумма и др.) Пользователь клацает на сумму в детальных записях Нужно получить в обработке расшифровке значение не только суммы, но и документа и других полей в тек. строке
#10 by DmitrO
тут тогда только по тупому можно: сначала получаем родителя берем его идентификатор увеличиваем на 1 и получаем значения элементов расшифровки и его поля и так далее пока не получим тип ЭлементРасшифровкиКомпоновкиДанныхГруппировка (это значит пошла следующая строка), либо исключение - это значит отчет кончился..
#11 by DmitrO
вообще говоря в твоей задаче действия по расшифровке зависят от состава выбранных полей, а если среди них не окажется нужных?
#12 by DmitrO
например пользователь удалит поле на присутствие которого расшифровка рассчитывает?
#13 by SeiOkami
, Если я получу все значения строки, то смогу определить есть ли в ней нужное, аль нет.
#14 by SeiOkami
, если я дойду до след. группировки, то не факт, что это след. строка. В одной группировке может быть штук 10 строк. Я нажимаю на 5ую, а след. группировка идёт после 10ой
#15 by DmitrO
ну, определишь.. что нет какого-то поля, и что дальше? предупреждение пользователю: "невозможно отработать расшифровку потому что нет такого-то поля"?
#16 by DmitrO
это да, надо еще проанализировать настроки и определить сколько полей выводится в строке :)
#17 by DmitrO
*проанализировать настройки
#18 by DmitrO
короче, гадость так-то ))
#19 by DmitrO
получается они зря не сделали для группировки детальных записей формирование элемента расшифровки типа ЭлементРасшифровкиКомпоновкиДанныхГруппировка, ибо в настройках это все таки группировка(!)
#20 by SeiOkami
Самое обидное, что я помню, что уже как-то делал подобную фигню... А как и где не помню (
#21 by DmitrO
да я тоже делал что-то подобное, и пришел к выводу что никакие соседние выведенные значения лучше не использовать а по данным родителей расшифровки надо получать (возможно уже посчитанные и выведенные) данные снова из базы
#22 by SeiOkami
Кто-нибудь же должен знать? Ап
#23 by SeiOkami
Вот когда троллить, то сразу куча-мала )
#24 by hhhh
ну, в типовой слабО глянуть?     ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
#25 by SeiOkami
, не слабо. Эта функция возвращает массив родителей. А мне нужны поля текущей строки
#26 by hhhh
ну пробуйте
#27 by SeiOkami
, ну он выведет мне в добавок к родителю ещё и ресурс. Но это мне не нужно
#28 by SeiOkami
Нашёл способ. Суровый, но всё же. 1. Добавляем вычисляемые поля на каждое поле, которое нужно получить в расшифровке. Вычисляемое поле просто дублирует оригинальное. 2. Эти вычисляемые поля делаем ресурсами с функцией "Массив(НашеВычисляемоеПоле)". 3. Далее создаём в СКД макет для того поля, по клацанию которого хотим получить все наши вычисляемые значения. И в макете в поле "Расшифровка" пишем что-нить, например, "ДанныеСтроки". В параметрах к полю появится таблица, которую можно заполнить нашими вычисляемыми полями. 4. В результате в обработке расшифровки при выполнении ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля  мы получаем не одно поле, а все те, которые указали в макете. Может быть ест способ лучше, но я пока не нашёл. P.S. махинации с вычисляемыми полями нужны для того, чтобы не делать настоящие поля ресурсами. Если я указываю поле НЕ ресурс, то отчет выпадает с ошибкой. Возможно это лишь потому, что я привязывал всё к полю, который является ресурсом. В общем, если кому поможет это, то буду рад =)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С