|
СКД, расшифровка: как получить получить данные полей текущей строки? |
☑ |
0
dave2000
29.03.18
✎
18:50
|
Есть простой отчет на СКД:
Работник | Подразделение | Начислено | Удержано | Премия
Иванов Бухгалтерия 5000 100 200
Петров Бухгалтерия 7000 200 800
Сидоров Бухгалтерия 6000 100 300
При клике на любой сумме нужно получить расшифровку данной строки. В обработке расшифровки я могу получить значение текущей ячейки.
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ЗначениеВЯчейке = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля()[0].Значение;
ИмяТекущегоПоля = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля()[0].Поле;
РаботникВСтроке = как получить работника??????
КонецПроцедуры
А как получить ссылку на работника, который находится в данной строке? Т.е. если кликаем на 7000, как нам определеить, что это Петров?
|
|
1
Boleev
29.03.18
✎
19:07
|
&НаКлиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
СтруктураРасшифровки = Новый Структура("Работник,Подразделение");
ПолучитьДанныеРасшифровкиСоСтруктурой(Расшифровка,СтруктураРасшифровки);
КонецПроцедуры
|
|
2
Boleev
29.03.18
✎
19:08
|
&НаСервере
Процедура ПолучитьСтруктуруВозврата(ПолеИлиГруппировка,СтруктураПолей)
МассивРодителей = ПолеИлиГруппировка.ПолучитьРодителей();
Для Каждого Стр из МассивРодителей Цикл
Если ТипЗнч(Стр) = Тип("ЭлементРасшифровкиКомпоновкиДанныхГруппировка") Тогда
ПолучитьСтруктуруВозврата(Стр,СтруктураПолей);
ИначеЕсли ТипЗнч(Стр) = Тип("ЭлементРасшифровкиКомпоновкиДанныхПоля") Тогда
ПоляГруппировки = Стр.ПолучитьПоля();
Для Каждого гСтр из ПоляГруппировки Цикл
Если СтруктураПолей.Свойство(гСтр.Поле) Тогда
Если Не ЗначениеЗаполнено(СтруктураПолей[гСтр.Поле]) Тогда
СтруктураПолей[гСтр.Поле] = гСтр.Значение;
КонецЕсли;
КонецЕсли;
ПолучитьСтруктуруВозврата(Стр,СтруктураПолей);
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция ПолучитьДанныеРасшифровкиСоСтруктурой(Расшифровка,СтруктураВозврата);
Данные = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);
ПолучитьСтруктуруВозврата(Данные.Элементы[Расшифровка],СтруктураВозврата);
КонецФункции // ПолучитьДанныеРасшифровки()
|
|
3
dave2000
29.03.18
✎
19:38
|
(1) (2) Спасибо, попробую!
|
|
4
dave2000
29.03.18
✎
20:14
|
(3) К сожалению не сработало.
Дело в том, что
ПоляРасшифровки = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля()
содержит лишь один элемент - колонку и значение ячейки, по которой мы кликнули. Поля "Работник" и "Подразделение" там отсутствуют :(
|
|
5
dave2000
29.03.18
✎
20:33
|
Всё, разобрался! Нужно было создать макет поля и в качестве расшифровки указать, какие поля я там хочу видеть.
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший