Вход | Регистрация

1С:Предприятие ::

Метки: 

СКД, расшифровка: как получить получить данные полей текущей строки?

Я
   dave2000
 
29.03.18 - 18:50
Есть простой отчет на СКД:

  Работник    |   Подразделение    |    Начислено    |    Удержано    |    Премия
Иванов             Бухгалтерия           5000              100              200
Петров             Бухгалтерия           7000              200              800
Сидоров            Бухгалтерия           6000              100              300


При клике на любой сумме нужно получить расшифровку данной строки. В обработке расшифровки я могу получить значение текущей ячейки.


Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;
    
    ЗначениеВЯчейке = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля()[0].Значение;
    ИмяТекущегоПоля = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля()[0].Поле;

    РаботникВСтроке = как получить работника??????

    
КонецПроцедуры


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

Дело в том, что 

ПоляРасшифровки = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля()

содержит лишь один элемент - колонку и значение ячейки, по которой мы кликнули. Поля "Работник" и "Подразделение" там отсутствуют :(
   dave2000
 
5 - 29.03.18 - 20:33
Всё, разобрался! Нужно было создать макет поля и в качестве расшифровки указать, какие поля я там хочу видеть.


Список тем форума
  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует