Добрый день!
В ЗУП-3.1 есть такая замечательная функция:

```1c
    ТекущиеДанныеОплатыТруда = КадровыйУчетРасширенный.ТекущиеНачисленияСотрудника(Сотрудник, ТекущаяДата(),,);
```

ТекущиеДанныеОплатыТруда - это Соответствие. Кто-нибудь может сказать, как это Соответствие "конвертировать" в Таблицу значений? Содержимое вижу, а "вынуть" значения мозгов не хватает. Заранее спасибо!
---
там несколько "вложенных" ТЗ и в "самой глубине" есть соответствие, в котором находится % доплаты (который мне нужно извлечь). Понятно, тогда лично я бы не мучался с "кучей запросов", а использовал бы цикл и рекурсию: перебираем элементы соответствия, если тип значения - не соответствие, то проверяем ключ и, если он такой, как нужен, считываем значение. А если тип значения - соответствие, то проваливаемся глубже, и в той же функции обрабатываем его.
---
Кто-нибудь может сказать, как это Соответствие "конвертировать" в Таблицу значений?
Берем за образец вот это и вот это и склеиваем, исключая промежуточное преобразование в структуру:

```1c
    Функция СоответствиеВТЗ(Соотв)
    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("Значение");
    ТЗ.Колонки.Добавить("Описание");
    Для Каждого ТекЭлем из Соотв Цикл
    НовСтр=ТЗ.Добавить();
    НовСтр.Значение = ТекЭлем.Ключ;
    НовСтр.Описание = ТекЭлем.Значение;
    КонецЦикла;
    Возврат ТЗ;
    КонецФункции
```
---
Дело в том, что решение "зарыто" гораздо глубже: Ключ видим, а значение - в Таблице значений - а там опять Соответствие..... Одним словом на примере: в Плановых начислениях у сотрудника есть Доплата за вредность 12%, что в сумме составляет 730 руб. Вот мне и нужно получить Вид начисления, % и сумму, т.е. три показателя.
P.S. В принципе можно любым способом, просто надеялся получить "одной строкой" кода.
---
значение - в Таблице значений - а там опять Соответствие..... Не понял, в в полученном соответствии - таблица значений (с еще одним соответствием)? Или сразу соответствие, без ТЗ?
надеялся получить "одной строкой" кода. Ну, если в таблице значений (см.выше) только одна строка, или ТЗ нет совсем, а во вложенном соответствии - только один элемент, ключ которого точно известен, тогда теоретически можно уложиться в одну строку.

Только в этой строке кода будет дофига точек... что не есть гут.

А если во вложенном соответствии больше одного элемента или в ТЗ больше одной строки, то об "одной строке кода" можно смело забыть.
---
Не понял, в в полученном соответствии - таблица значений (с еще одним соответствием)? Или сразу соответствие, без ТЗ?
В данном случае/примере несколько Видов начислений, но даже если взять из них конкретное, то и там несколько "вложенных" ТЗ и в "самой глубине" есть соответствие, в котором находится % доплаты (который мне нужно извлечь).
P.S. Насчет "одной строкой кода" - это просто условно (чтоб не городить кучу запросов).
---
там несколько "вложенных" ТЗ и в "самой глубине" есть соответствие, в котором находится % доплаты (который мне нужно извлечь). Понятно, тогда лично я бы не мучался с "кучей запросов", а использовал бы цикл и рекурсию: перебираем элементы соответствия, если тип значения - не соответствие, то проверяем ключ и, если он такой, как нужен, считываем значение. А если тип значения - соответствие, то проваливаемся глубже, и в той же функции обрабатываем его.
---
Можно Вас попросить написать это в коде, (у меня не получается/не отрабатывает, видимо совсем отупел).
---
Примерно так:

```1c
    Процедура СоответствиеВТЗ(Соотв)
    // ТЗ = Новый ТаблицаЗначений;
    // ТЗ.Колонки.Добавить("Значение");
    // ТЗ.Колонки.Добавить("Описание");
    // ТЗ должна быть создана и описана ВНЕ процедуры!
    // колонки: ВидНачисления, ПроцентНачисления, Сумма
    Для Каждого ТекЭлем из Соотв Цикл
    Если ТипЗнч(ТекЭлем.Значение)=Тип("Соответствие") Тогда // вложенное соответствие
    СоответствиеВТЗ(ТекЭлем.Значение);
    ИначеЕсли ТекЭлем.Ключ="Вид начисления" Тогда // новое начисление, ключ - описание вида
    НовСтр = ТЗ.Добавить();
    НовСтр.ВидНачисления = ТекЭлем.Значение;
    ИначеЕсли ТекЭлем.Ключ="Процент начисления" Тогда // ключ - % доплаты
    НовСтр.ПроцентНачисления = ТекЭлем.Значение;
    ИначеЕсли ТекЭлем.Ключ="Сумма начисления" Тогда // ключ - сумма доплаты
    НовСтр.Сумма = ТекЭлем.Значение;
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
```
 Точнее написать не могу - ЗУП под рукой нет, но думаю, что алгоритм понятен.
---
Большое Спасибо! Займусь отладкой....
---
Ключ = ПланыВидовРасчета.Начисления.НайтиПоНаименованию("Надбавка за мед стаж");
 ТекущиеДанныеОплатыТруда = КадровыйУчетРасширенный.ТекущиеНачисленияСотрудника(СсылкаНаОбъект, ТекущаяДата(),,);
 Сумма = ТекущиеДанныеОплатыТруда.Получить(Ключ);
 Значение = Сумма[0].Размер;
---
В БСП есть метод ОбщегоНазначения.ВыгрузитьКолонку(Соответствие, "Значение") - выгрузит все значения из соответствия, чтобы выгрузить ключи вместо "Значение" пишем "Ключ"