Руководитель отдела разработки 1С в Техномарин · 04.04
Универсальный поиск значения в дереве значений в 1С
🔧 Где деньги, Лебовски посты?
Что-то я редко здесь пишу. Пора исправляться! Держите свежий кейс из работы и полезную, на мой взгляд, «монтировку».
Задача Ковырял механизм ЭДО — нужно было найти место, где заполняется один реквизит в электронной УПД, и подменить его.
Под капотом — дикое развесистое дерево значений, в дебрях которого в какой-то момент заполняется нужный мне реквизит. Захотелось без лишнего напряжения понять, когда именно он заполняется и есть ли вообще значение в дереве.
Решение Погуглил, нашёл болванку функции, немного допилил для универсальности — и вот что получилось.
Как использовать: 1. Добавляем функцию как экспортную в общий модуль (я кинул в одноразовое расширение). 2. В отладке, в табло, вызываем функцию с нужным деревом значений. 3. Шагаем отладчиком — и локализуем нужное место!
Код функции:
// Ищет значение в дереве значений. // // Параметры: // СтрокиДерева - КоллекцияСтрокДереваЗначений // Значение - Произвольный // ОбластьПоиска - Строка - для поиска по конкретной колонке // - КоллекцияКолонокДереваЗначений - для поиска по всем колонкам // // Возвращаемое значение: // СтрокаДереваЗначений - если значение найдено // Строка - если значение не найдено, возвращает строку "!Значение не найдено!" // Функция НайтиЗначениеВДеревеЗначений(СтрокиДерева, Значение, ОбластьПоиска) Экспорт ЗначениеНеНайдено = "!Значение не найдено!"; ИщемПоВсемКолонкам = ТипЗнч(ОбластьПоиска) = Тип("КоллекцияКолонокДереваЗначений"); Для Каждого Строка из СтрокиДерева Цикл Если ИщемПоВсемКолонкам Тогда Для Каждого Колонка Из ОбластьПоиска Цикл Если Строка[Колонка.Имя] = Значение Тогда Возврат Строка; КонецЕсли; КонецЦикла; Иначе Если Строка[ОбластьПоиска] = Значение Тогда Возврат Строка; КонецЕсли; КонецЕсли; КонецЦикла; Для каждого Строка из СтрокиДерева Цикл НайденнаяСтрока = НайтиОтмеченноеЗначениеВДеревеЗначений(Строка.Строки, Значение, ОбластьПоиска); Если НайденнаяСтрока <> ЗначениеНеНайдено Тогда Возврат НайденнаяСтрока; КонецЕсли; КонецЦикла; Возврат ЗначениеНеНайдено; КонецФункции
📩 Мои контакты: 🔹 Телеграм-канал 🔹 Сайт-визитка
еще контент автора
еще контент автора
Руководитель отдела разработки 1С в Техномарин · 04.04
войдите, чтобы увидеть
и подписаться на интересных профи