|
v8: Расшифровка СКД - значение соседних полей по группировке | ☑ | ||
---|---|---|---|---|
0
Нуф-Нуф
23.09.13
✎
15:15
|
Простая СКД:
Группировка Контрагент Группировка ДетальныеЗаписи (с полями "НомерДоговора", "Наименование договора", "Дата Договора"). Сам запрос: ВЫБРАТЬ ДоговорыКонтрагентов.Владелец КАК Контрагент, ДоговорыКонтрагентов.Наименование КАК Наименование, ДоговорыКонтрагентов.Код КАК Номер, ДоговорыКонтрагентов.Дата КАК Дата ИЗ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов С помощью ПолучитьПоля() и значения - я получаю текущее значение ячейки - т.е. нажал на ячейку, содержащую наименование - получил наименование. но как в этот момент получить значение другого поля (например Контрагент или Дата)? |
|||
1
Нуф-Нуф
23.09.13
✎
15:18
|
вот этот механизм (спер откуда-то):
&НаСервере Функция ПолучитьРасшифровку(Знач Расшифровка, Знач ДанныеРасшифровкиОтчета, ЗначениеРасшифровки) Экспорт ДанныеРасшифровкиОбъект = ПолучитьИзВременногоХранилища(ДанныеРасшифровки); //Элемент =ДанныеРасшифровкиОбъект.Элементы[Расшифровка]; Возврат ПолучитьЗначенияГруппировокИзРасшифровки(ДанныеРасшифровкиОбъект,Расшифровка); КонецФункции &НаСервере Функция ПолучитьЗначенияГруппировокИзРасшифровки(ДанныеРасшифровки,ИдентификаторРасшифровки) Экспорт сооГруппировки=Новый Соответствие(); ПолучитьГруппировки( сооГруппировки, ДанныеРасшифровки, ИдентификаторРасшифровки ); Возврат сооГруппировки; КонецФункции &НаСервере Процедура ПолучитьГруппировки( сооГруппировки, Знач ДанныеРасшифровки, Знач ИдентификаторРасшифровки ) Родители=ДанныеРасшифровки.Элементы[ИдентификаторРасшифровки].ПолучитьРодителей(); Для Каждого Родитель Из Родители Цикл ИдРодителя=Родитель.Идентификатор; ЭлементРасшифровки=ДанныеРасшифровки.Элементы[ИдРодителя]; Если ТипЗнч( ЭлементРасшифровки )= Тип( "ЭлементРасшифровкиКомпоновкиДанныхПоля" ) Тогда ПоляРодителя = ЭлементРасшифровки.ПолучитьПоля(); Если ПоляРодителя.Количество() > 0 Тогда Для Каждого Поле Из ПоляРодителя Цикл сооГруппировки.Вставить(Поле.Поле,Поле.Значение); КонецЦикла; ПолучитьГруппировки( сооГруппировки, ДанныеРасшифровки, ИдРодителя ); КонецЕсли; ИначеЕсли ТипЗнч(ЭлементРасшифровки) = Тип( "ЭлементРасшифровкиКомпоновкиДанныхГруппировка" ) Тогда ПолучитьГруппировки( сооГруппировки, ДанныеРасшифровки, ИдРодителя ); Иначе // Странный тип КонецЕсли; КонецЦикла; КонецПроцедуры он таким образом я могу получить поля только у группировки. у детальных записей я не могу получить значение других полей. если же группировку "детальные записи" заменить на группировку "НомерДоговора, НаименованиеДоговора, ДатаДоговора" - тогда я могу получить значения соседних полей. Но дело в том, что мне нужны именно детальные записи |
|||
2
Feunoir
23.09.13
✎
15:19
|
Я делал через макеты и собственные расшифровки. Но куча ограничений у этого метода.
|
|||
3
Нуф-Нуф
23.09.13
✎
15:22
|
(2) вариант, но мне не подходит
|
|||
4
ИС-2
naïve
23.09.13
✎
15:30
|
(0) можно использовать свойство поля Выражение представления (на первой закладке скд).
Я в аналогичной задаче, тупо пробегался по полям (как в ПолучитьГруппировки() ), а вот получить всю детальную запись одним махом не смог. Если получиться, то выложите, пжс, решение |
|||
5
Нуф-Нуф
23.09.13
✎
15:32
|
(4) как можно использовать это свойство?
и что значит пробегался по полям? это как в варианте когда у меня вместо детальных записей конкретные группировки? |
|||
6
Нуф-Нуф
23.09.13
✎
15:41
|
как-то печально с активностью... в поиске полно тем про расшифровку, но такой постановкой вопроса всего несколько и без решений.
неужели никто не сталкивался с подобной задачей? |
|||
7
Feunoir
23.09.13
✎
15:48
|
(6) Что-то мне подсказывает, что нет адекватного универсального решения. Вот и молчит народ.
Из неуниверсальных способов могу предложить ещё пробежаться вверх-вниз по расшифровке, то есть получить расшифровки +1/-1 от текущей. Но как корректно ограничить область поиска, сразу и не скажу. |
|||
8
ИС-2
naïve
23.09.13
✎
15:51
|
(5) мне надо было сделать, чтобы в отчете выводился номер документа, а при расшифровке открывался сам документ.
да, тупо двигался влево или вправо по ДанныеРасшифровки.Элементы[ИдРодителя] можно еще вывести результат отчета в ТЗ, но думаю для (0) не подходит. Какая задача? |
|||
9
Нуф-Нуф
23.09.13
✎
16:03
|
(8) задача - получить объект (и выполнить с ним манипуляции) по наименованию (номеру, дате) которого кликнули
|
|||
10
Нуф-Нуф
23.09.13
✎
16:26
|
вообщем как чувствовал что придется идти путем гамнокода - так и пришлось.
сделал как в (8). вынес "СсылкуНаОбъект" в выводимые поля (поставил для этого поля выражение представление " " и максимальную ширину 1 - чтобы это поле выводилось маленькой пустой колонкой). установил это поле последним в полях. и теперь при клике по ячейке - в обработке расшифровки - просто тупо смещаюсь по индексу вправо (добавляю к индексу по 1), до тех по, пока не дойдут до поля с именем "СсылкаНаОбъект". И уже оттуда тягаю всю нужную мне инфу. жесть короче... |
|||
11
Feunoir
23.09.13
✎
17:18
|
(10) Попробуй ещё так поэкспериментировать:
Получить родительскую расшифровку текущей ячейки, которую расшифровывают, это должна быть группировка самого нижнего уровня (по логике), потом пробежаться вверх и вниз от текущей расшифровки собрать все поля с тем-же родителем. Это должны быть поля одной детальной записи. В принципе похоже на то, что ты и сделал, но без дополнительного поля. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |