Получить значения из Соответствия

1. ivnik 617 23.04.22 17:05 Сейчас в теме
Добрый день!
В ЗУП-3.1 есть такая замечательная функция:
ТекущиеДанныеОплатыТруда = КадровыйУчетРасширенный.ТекущиеНачисленияСотрудника(Сотрудник, ТекущаяДата(),,);


ТекущиеДанныеОплатыТруда - это Соответствие. Кто-нибудь может сказать, как это Соответствие "конвертировать" в Таблицу значений? Содержимое вижу, а "вынуть" значения мозгов не хватает. Заранее спасибо!
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
6. ishelper 24.04.22 13:45 Сейчас в теме +1 $m
(5)
там несколько "вложенных" ТЗ и в "самой глубине" есть соответствие, в котором находится % доплаты (который мне нужно извлечь).
Понятно, тогда лично я бы не мучался с "кучей запросов", а использовал бы цикл и рекурсию: перебираем элементы соответствия, если тип значения - не соответствие, то проверяем ключ и, если он такой, как нужен, считываем значение. А если тип значения - соответствие, то проваливаемся глубже, и в той же функции обрабатываем его.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ishelper 23.04.22 18:25 Сейчас в теме
(1)
Кто-нибудь может сказать, как это Соответствие "конвертировать" в Таблицу значений?

Берем за образец вот это и вот это и склеиваем, исключая промежуточное преобразование в структуру:

Функция СоответствиеВТЗ(Соотв) 
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Значение");
ТЗ.Колонки.Добавить("Описание");
Для Каждого ТекЭлем из Соотв Цикл
      НовСтр=ТЗ.Добавить();
      НовСтр.Значение = ТекЭлем.Ключ;
      НовСтр.Описание = ТекЭлем.Значение;                          
КонецЦикла;
Возврат ТЗ;
КонецФункции
Показать
Chinga050; +1 Ответить
3. ivnik 617 23.04.22 22:49 Сейчас в теме
(2) Дело в том, что решение "зарыто" гораздо глубже: Ключ видим, а значение - в Таблице значений - а там опять Соответствие..... Одним словом на примере: в Плановых начислениях у сотрудника есть Доплата за вредность 12%, что в сумме составляет 730 руб. Вот мне и нужно получить Вид начисления, % и сумму, т.е. три показателя.
P.S. В принципе можно любым способом, просто надеялся получить "одной строкой" кода.
4. ishelper 24.04.22 02:55 Сейчас в теме
(3)
значение - в Таблице значений - а там опять Соответствие.....
Не понял, в в полученном соответствии - таблица значений (с еще одним соответствием)? Или сразу соответствие, без ТЗ?
надеялся получить "одной строкой" кода.
Ну, если в таблице значений (см.выше) только одна строка, или ТЗ нет совсем, а во вложенном соответствии - только один элемент, ключ которого точно известен, тогда теоретически можно уложиться в одну строку.

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

А если во вложенном соответствии больше одного элемента или в ТЗ больше одной строки, то об "одной строке кода" можно смело забыть.
5. ivnik 617 24.04.22 12:40 Сейчас в теме
(4)
Не понял, в в полученном соответствии - таблица значений (с еще одним соответствием)? Или сразу соответствие, без ТЗ?

В данном случае/примере несколько Видов начислений, но даже если взять из них конкретное, то и там несколько "вложенных" ТЗ и в "самой глубине" есть соответствие, в котором находится % доплаты (который мне нужно извлечь).
P.S. Насчет "одной строкой кода" - это просто условно (чтоб не городить кучу запросов).
6. ishelper 24.04.22 13:45 Сейчас в теме +1 $m
(5)
там несколько "вложенных" ТЗ и в "самой глубине" есть соответствие, в котором находится % доплаты (который мне нужно извлечь).
Понятно, тогда лично я бы не мучался с "кучей запросов", а использовал бы цикл и рекурсию: перебираем элементы соответствия, если тип значения - не соответствие, то проверяем ключ и, если он такой, как нужен, считываем значение. А если тип значения - соответствие, то проваливаемся глубже, и в той же функции обрабатываем его.
7. ivnik 617 24.04.22 18:10 Сейчас в теме
(6) Можно Вас попросить написать это в коде, (у меня не получается/не отрабатывает, видимо совсем отупел).
8. ivnik 617 24.04.22 18:44 Сейчас в теме
(7)
Прикрепленные файлы:
9. ishelper 24.04.22 19:50 Сейчас в теме
(7) Примерно так:
Процедура СоответствиеВТЗ(Соотв) 
// ТЗ = Новый ТаблицаЗначений;
// ТЗ.Колонки.Добавить("Значение");
// ТЗ.Колонки.Добавить("Описание");
// ТЗ должна быть создана и описана ВНЕ процедуры!
// колонки: ВидНачисления, ПроцентНачисления, Сумма
Для Каждого ТекЭлем из Соотв Цикл
      Если ТипЗнч(ТекЭлем.Значение)=Тип("Соответствие") Тогда // вложенное соответствие
            СоответствиеВТЗ(ТекЭлем.Значение);
      ИначеЕсли ТекЭлем.Ключ="Вид начисления" Тогда // новое начисление, ключ - описание вида
            НовСтр = ТЗ.Добавить();
            НовСтр.ВидНачисления = ТекЭлем.Значение;
      ИначеЕсли ТекЭлем.Ключ="Процент начисления" Тогда // ключ - % доплаты
            НовСтр.ПроцентНачисления = ТекЭлем.Значение;
      ИначеЕсли ТекЭлем.Ключ="Сумма начисления" Тогда // ключ - сумма доплаты
            НовСтр.Сумма = ТекЭлем.Значение;
      КонецЕсли;                  
КонецЦикла;
КонецПроцедуры
Показать
Точнее написать не могу - ЗУП под рукой нет, но думаю, что алгоритм понятен.
10. ivnik 617 25.04.22 16:56 Сейчас в теме
(9) Большое Спасибо! Займусь отладкой....
11. user1665312 3 18.07.24 10:49 Сейчас в теме
Ключ = ПланыВидовРасчета.Начисления.НайтиПоНаименованию("Надбавка за мед стаж");
ТекущиеДанныеОплатыТруда = КадровыйУчетРасширенный.ТекущиеНачисленияСотрудника(СсылкаНаОбъект, ТекущаяДата(),,);
Сумма = ТекущиеДанныеОплатыТруда.Получить(Ключ);
Значение = Сумма[0].Размер;
12. maxrubtsoff 19 29.03.25 22:47 Сейчас в теме
В БСП есть метод ОбщегоНазначения.ВыгрузитьКолонку(Соответствие, "Значение") - выгрузит все значения из соответствия, чтобы выгрузить ключи вместо "Значение" пишем "Ключ"
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот