Универсальный поиск значения в дереве значений в 1С

🔧 Где деньги, Лебовски посты? 

Что-то я редко здесь пишу. Пора исправляться! Держите свежий кейс из работы и полезную, на мой взгляд, «монтировку». 

Задача  Ковырял механизм ЭДО — нужно было найти место, где заполняется один реквизит в электронной УПД, и подменить его. 

Под капотом — дикое развесистое дерево значений, в дебрях которого в какой-то момент заполняется нужный мне реквизит. Захотелось без лишнего напряжения понять, когда именно он заполняется и есть ли вообще значение в дереве

Решение  Погуглил, нашёл болванку функции, немного допилил для универсальности — и вот что получилось. 

Как использовать:  1. Добавляем функцию как экспортную в общий модуль (я кинул в одноразовое расширение).  2. В отладке, в табло, вызываем функцию с нужным деревом значений.  3. Шагаем отладчиком — и локализуем нужное место! 

Код  функции:

// Ищет значение в дереве значений. // // Параметры: //  СтрокиДерева - КоллекцияСтрокДереваЗначений //  Значение - Произвольный //  ОбластьПоиска - Строка - для поиска по конкретной колонке //                - КоллекцияКолонокДереваЗначений - для поиска по всем колонкам // // Возвращаемое значение: //  СтрокаДереваЗначений - если значение найдено //  Строка - если значение не найдено, возвращает строку "!Значение не найдено!" // Функция НайтиЗначениеВДеревеЗначений(СтрокиДерева, Значение, ОбластьПоиска) Экспорт   ЗначениеНеНайдено = "!Значение не найдено!";   ИщемПоВсемКолонкам = ТипЗнч(ОбластьПоиска) = Тип("КоллекцияКолонокДереваЗначений");   Для Каждого Строка из СтрокиДерева Цикл     Если ИщемПоВсемКолонкам Тогда       Для Каждого Колонка Из ОбластьПоиска Цикл         Если Строка[Колонка.Имя] = Значение Тогда           Возврат Строка;         КонецЕсли;       КонецЦикла;     Иначе       Если Строка[ОбластьПоиска] = Значение Тогда         Возврат Строка;       КонецЕсли;     КонецЕсли;   КонецЦикла;   Для каждого Строка из СтрокиДерева Цикл     НайденнаяСтрока = НайтиОтмеченноеЗначениеВДеревеЗначений(Строка.Строки, Значение, ОбластьПоиска);     Если НайденнаяСтрока <> ЗначениеНеНайдено Тогда       Возврат НайденнаяСтрока;     КонецЕсли;   КонецЦикла;   Возврат ЗначениеНеНайдено; КонецФункции 

📩 Мои контакты:  🔹 Телеграм-канал 🔹 Сайт-визитка

repost

9

input message

напишите коммент

еще контент автора

еще контент автора

войдите, чтобы увидеть

и подписаться на интересных профи

в приложении больше возможностей

пока в веб-версии есть не всё — мы вовсю работаем над ней

сетка — cоциальная сеть для нетворкинга от hh.ru

пересекайтесь с теми, кто повлияет на ваш профессиональный путь