Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 След.
VBA. Как вставить в столбец умной таблицы гиперссылку с именем из этого столбца и со ссылкой из другого столбца той же строки, автоматизация
 
Всем добра.
Народ, сильно сложно накидать макрос, который по втыкает гиперссылки в ячейки умной таблицы столбца с именем Name из той же строки, но столбца FileRef? В примере показано, что есть, и что надо получить. Если такое же можно получить как-то вручную, но с массовой обработкой строк с помощью функции ГИПЕРРССЫЛКА или еще как то - велкам.
Изменено: PooHkrd - 17.06.2022 11:43:45
Вот горшок пустой, он предмет простой...
Power query. Производственный календарь на базе данных с сайта Консультант плюс, парсер нимножка
 
Всем добра.
Кому надо, забирайте генератор производственного календаря по данным с сайта Консультант плюс.
Года настраиваются в параметрах запросов. Стартовый год не должен быть больше конечного.
Год нужно задавать целыми числами. Минимально доступный год на сайте - 2010.
Если в заданный период попадут года, по которым нет данных, то ошибок не будет, но для них не будет сгенерировано дат. В дальнейшем планирую добавить, чтобы даты все же  генерились, но выходные ставились только для суббот и воскресений.
Пока пользуйтесь. К посту еще добавлю чутка Behind the scenes.
З.Ы. Ахтунг! Камрады подсказали, что у консультанта есть подвох в адресации страницы за 2020 год. Изменил код, чтобы это учитывалось. Приложил актуальный код.
Изменено: PooHkrd - 20.05.2022 18:10:48 (Найден подвох в адресе сайта за 2020 год, в файлы внесены изменения, которые это учитывают.)
Вот горшок пустой, он предмет простой...
Power BI. Коннектор к API с секретным ключом и сигнатурой закодированной HMAC SHA256, Power BI. Connector for API with authentication by secret key and signature encoded by HMAC SHA256
 
Всем добра.
Потребовалось по работе лазить в API к одному из интернет-магазинов, и с радостью обнаружил что в #shared ничего вообще нет на тему кодирования хэша для формирования сигнатуры запроса к ресурсу. А вот у ресурса сигнатура имеется, и надо что-то делать. После некоторых изысканий выяснил что кое-что в PQ на эту тему все таки есть, но не в стандарте, а в наборе функций для создания собственных коннекторов. Засучив рукава, поставил VS с нужными надстройками и собрал вот такое чудо. Если кому надо, пользуйтесь, как подключить такой коннектор в инете и на сайте МС инструкций навалом. Краткую инструкцию по тому что куда скармливать самому коннектору чуть позже приложу, ну и по мере развития и исправлений выявленных глюков буду обновлять.
Коннектор протестирован на боевом API все отлично выгружается. При установке шлюза в стандартном режиме коннектор отлично работает и после публикации отчета в облаке.
Все инструкции по подключению коннекторов к Power BI находятся по ссылкам ниже. Справка по функции вшита в нее и вызывается стандартным способом, т.е. вызовом функции без скобок и аргументов.
https://github.com/PooHkrd/GetHMACwithCreds
https://github.com/PooHkrd/GetHashSHA256
В потоках данных пользовательские коннекторы не работают.
Изменено: PooHkrd - 16.11.2021 12:17:22
Вот горшок пустой, он предмет простой...
Power query. Как правильно сформировать POST-запрос к сайту, на примере https://pub.fsa.gov.ru/rss/certificate
 
Всем добра. Коллеги, может кто откликнется, плаваю я в этой теме.
Дано: сайт https://pub.fsa.gov.ru/rss/certificate
Задача: выгрузить все сертификаты за последние три дня по дате регистрации сертификата.
Решение: формирую запрос в интерфейсе ручками, лезу в средства разработчика и вижу там такую простыню
Скрытый текст

Если все правильно понял, то нужно запулить по адресу https://pub.fsa.gov.ru/api/v1/rss/common/certificates/get запрос с типом POST, с некими заголовками и телом в виде json, который указан в самом низу в фигурных скобках.
Правильно ли я понял? Как понять как из этой шляпы сформировать заголовки запроса для Web.Contents?
Вот горшок пустой, он предмет простой...
Power Query. Функция List.Sort не сортирует список прочитанный с таблицы листа, но сортирует список сгенерированный в коде.
 
Добрый день, коллеги.
Собственно в сабже заключена вся боль. Может кто-то что-то заметит на что мой глаз замылился?
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
// не работает
    TrySortList = Table.AddColumn(Source, "list", each List.Sort( {[ШК]}&Text.Split([Мод],","))), 
// работает
    TrySortJustList = List.Sort({"СН003403"}&Text.Split("СН003402,СН003401", ",")) 
in
    TrySortJustList
Вот горшок пустой, он предмет простой...
Обсуждение Приёмов на основной ветке форума., с перекрёстными ссылками, блэкджеком и всем остальным.
 
Добрый день.
На правах вечернего бреда.
Николай, может подобное уже рассматривалось ранее, а почему бы после публикации в приемах не создавать на основной ветке форума тему с его обсуждением, перекрёстными ссылками и надписью "а вам слабо?!"  :D ? А то такое ощущение что завсегдатаи форума и вы живете практически не пересекаясь. Видел сайты где такое практикуется в автоматическом режиме.
Вот горшок пустой, он предмет простой...
Power BI. Визуальный элемент "Таблица" с подитогами причем не для всего подряд, а чтобы можно было выбирать для какого уровня группировки их выводить., Такое вообще возможно?
 
Доброго дня.
Наконец-то дошли руки до PBI и ужаснулся до чего ж бедные настройки у табличных визуалок по сравнению со сводными таблицами Экселя. Хотя казалось бы. Мне требуется табличное представление, но чтобы в него можно было добавить промежуточные итоги для самого первого уровня группировки. Есть такое в природе?
З.Ы. и можно ли для каждой меры задать цвет фона хотя бы? Надо как-то визуально разделить меры на группы.
Если что, то аналогичный вопрос задал на FB в группе powerbiforever
Изменено: PooHkrd - 23.06.2020 15:48:00
Вот горшок пустой, он предмет простой...
Power Pivot. Как свернуть поле стоящее в измерениях строк после иерархии из другого справочника не убирая это поле из измерений?, Прям бяда
 
Добрый день, коллеги.
В принципе к теме прибавить нечего, для визуализации в примере показал к какому виду сводной нужно придти при каких условиях. Такое в принципе без костылей возможно? Основная идея в том, чтобы все поля сводной, кроме иерархии, оставались на своих местах при сворачивании, просто пропадала бы детализация. Это нужно т.к. в полях значений подогнаны ширина/высота ячеек для разных мер и не хочется, чтобы при изменении детализации все форматирование слетало.
Изменено: PooHkrd - 05.06.2020 18:53:00
Вот горшок пустой, он предмет простой...
Вставка в сообщение HTML кода с форматированием текста, хочется немножко красоты
 
Добрый день, коллеги.
Может имеется возможность вставлять в текст сообщения уже отформатированный тегами HTML текст? Типа такого
Скрытый текст

В итоге должна получиться такая красота. Код генерируется вот этим сайтом. На TechNet'е работает в полный рост, а тут не нашел такой возможности.
Вот горшок пустой, он предмет простой...
VBA. Открыть файлы по списку с листа текущей книги, сохранить файлы и закрыть
 
Добрый день.
Коллеги, дико извиняюсь за свою лень :oops: , но сильно ли сложно сделать такую обработку?
При нажатии на кнопочку, очистить ячейки в столбце Статус, далее
По списку адресов с текущего листа в цикле: открыть файл, сохранить файл, закрыть файл. Если все прошло хорошо, то в столбце статус напротив обработанного пути поставить "ОК", если что-то не так (без разницы, любая ошибка, нет файла с таким именем, не открывается или еще чего), пропускаем файл, в статус пишем "Беда". Отображать процесс открытия закрытия файлов не нужно, если так быстрее. Когда файлы в списке кончатся вывести окошко с надписью "Готово".
Если это важно, то путь в ячейках может задаваться формулой, как в ячейке А2. Формат файлов всегда будет .xlsx
Вся эта бессмысленная с виду бодяга нужна для того чтобы Эксель при пересохранении файла наводил порядок в xml-структуре кривых выгрузок из 1С.
Вот горшок пустой, он предмет простой...
DAX. Отображение остатков по подразделению одного объекта для всех объектов при фильтрации измерений связанными справочниками, Что-то ступор какой-то
 
Доброго дня.
Коллеги, что-то у меня то ли лыжи не едут, то ли я заработался и откройте мне веки. Во вложении в принципе все понятно чего я хочу.
Идея такая что склад 2 объекта 4 является общим складом для всех объектов, с которого их можно пополнять, поэтому для визуализации пользователю нужно видеть эти остатки для всех объектов.
Задачу нужно решить именно в таком виде сводной по измерениям, по этой теме изменения не предлагать, иначе полетит к чертям туева хуча других расчетов.
Вот горшок пустой, он предмет простой...
DAX. Округление в мере с накоплением десятых долей и распределением их по временной шкале, пытаюсь округлить прогноз с минимальными потерями
 
Доброго всем времени суток.
Имею такую проблемку: есть мера прогнозирующая чего-то по временным рядам. Суть не в логике прогнозирования (она в примере сильно упрощенная), а в том что на выходе получаем для каждого периода (в данном случае месяца) дробное число, а получить нужно целое. Если округлять стандартными методами, то на достаточно малых значениях можно получить очень сильные отклонения от изначального прогноза на год. Таким образом нужно округлять с запоминанием остатка на предыдущем временном отрезке и прибавлением его к текущему и т.д.
В PQ вопрос решается без проблем. Как я решаю формулами показал в примере. А в РР чой-та то ли туплю, то ли действительно сложно.
Есть ли у кого идеи как такое сделать сразу в формуле меры на DAX?
Вот горшок пустой, он предмет простой...
XLOOKUP и XMATCH, ждем? или ну его на фиг?
 
Собственно вот обзор.
Объявляю конкурс как бы назвать функцию в русской локализации. Как она называется в справке MC лучше не смотреть, а то можно под стол уехать!
Скрытый текст
Изменено: PooHkrd - 29.08.2019 10:08:09
Вот горшок пустой, он предмет простой...
Power Pivot. Можно ли создать меру по таблице, которую не фильтрует Календарь, чтобы в сводной отображались значения только в общих итогах не разбиваясь по месяцам., интим... тьфу ты, Наборы не предлагать!
 
Доброго всем дня.
Коллеги собственно моделька прилагается, принимаются любые предложения по сабжу, если надо что-то добавить в таблицу, как-то связать с календарем, добавить что угодно куда угодно. За все заранее спасибо.
Вот горшок пустой, он предмет простой...
Power Query. Бинарный поиск., Как реализовать в коде максимально эффективно.
 
Всем доброго времени суток.
Имеется задачка поиска ближайшего значения в списке к искомому. Решить её можно так.
Код
let
    Список = {4.7, 1.1, 7.8, 2.3, 3.2, 4.5, 6.6},
    ЧтоИщемВСписке = 10.2,
    Поиск = let мод = List.Buffer(List.Transform( Список, (x)=> Number.Abs( x - ЧтоИщемВСписке ) ) ) in Список{ List.PositionOf( мод, List.Min( мод ) ) }
in
    Поиск

Как лучше всего решить это дело бинарным поиском на языке М? Хочу погонять на большом массиве оно быстрее будет или нет. Если у кого есть наработки буду рад увидеть.
Изменено: PooHkrd - 26.06.2019 18:34:59
Вот горшок пустой, он предмет простой...
Посчитать отношение суммы ряда к максимальной сумме из всех рядов без дополнительных столбцов, Только формулы Эксель 2016
 
Всем доброго дня.
Прошу подсказать можно ли получить результат из столбца Т в примере без вспомогательного столбца S одной формулой?
Изменено: PooHkrd - 20.06.2019 16:03:34 (исправил очепятку)
Вот горшок пустой, он предмет простой...
Post и Get запросы в Power Query.
 
Доброго дня, уважаемые.
Подскажите кто сможет, возможно ли на Power Query в Excel или в PBI:
1. на основе имеющейся таблицы с цифрами генерить текст запроса определенной XML структуры (это знаю как можно),
2. отправлять его к сервису поставщика услуг, после каждого запроса получать ответ (вот это для меня темный лес)
3. и так в цикле (это скорее всего через List.Generate).
Если да, то куда копать и какие дополнительные знания потребуются чтобы правильно формировать запрос (если это возможно)?
Что нужно спросить у поставщика данного сервиса чтобы осуществить такую возможность, там вполне адекватные граждане помогут.

Вообще говоря речь идет о коммерческом портале DHL. Мне нужно генерить к ним запросы на оценку стоимости отправлений, потом сравнить цену с другими ТК, потом все что устроит по цене закинуть через этот же портал для вызова курьера.

Знаю, что PQ - он не совсем для этого сделан, но тут грубо говоря, пока разрабам в своей конторе обоснуешь что эту интеграцию нужно сделать и все согласования пройдешь - с ума сойдешь, а мне работать надо. Приходится использовать тот инструмент, который есть под рукой.
Вот горшок пустой, он предмет простой...
Хоткей для записи таблицы в ячейку в виде массива., Склероз замучил!
 
Доброго дня, уважаемые.
Совсем склероз замучил, годика 2 назад знал хоткей для того чтобы при выделении скажем двух столбцов таблицы, как в примере, через сочетание клавиш автоматически записать эти столбцы в виде массива в одну ячейку, типа такого:
Код
={0;"лет":1;"год":2;"года":3;"года":4;"года":5;"лет"}

Чтобы вручную все эти точки с запятыми не набирать.
Кто знает - напомните алгоритм. Заранее благодарен.
Вот горшок пустой, он предмет простой...
Excel 2016 кушает слишком много памяти на виртуалке Hyper-V WinServer 2012 R2 и выбивает её в перезагрузку., Excel крашит виртуалку Hyper-V
 
Доброго всем дня.
Коллеги, может кто сталкивался и сможет подсказать. В общем в рамках компании есть несколько ферм с виртуальными машинами на Hyper-V и разными версиями Excel 2010 32bit/2013 32bit/2016 64bit. На 2016 усиленно работают с Power Query и Power Pivot. Вся эта красота жрет памяти в каких-то немерянных количествах, как только на сервере появляется хотя бы активных 3-4 юзера. В результате память на сервере кончается и он уходит в ребут. Самое обидное что старые версии работают крайне стабильно.
Внимание вопрос, можно ли в настройках самого Excel или где-то в реестре или в настройках .NET (админ сказал, что именно через него Эксель начинает много кушать) как-то ограничить выделение памяти, чтобы оно не перерастало до неприличных размеров и не вышибало ВМ-ку? Или тут только на сисадминских форумах смогут помочь?
Вот горшок пустой, он предмет простой...
Power Query поэлементное сумирование двух списков., Для собственного развития
 
Доброго дня, форумчанам.
Прошу помочь с таким вопросом:
Дано: 2 списка List1 и List2, они могут быть разного размера с элементами типа Number
Нужно: суммировать соответствующие элементы  чтобы получить на выходе List3
Сейчас решаю проблему не очень красиво, но хотя бы известным мне способом:
Код
let
    List1 = {1,2,3},
    Table1 = Table.FromList(List1, Splitter.SplitByNothing(), {"Column1"}, null, ExtraValues.Error),
    Indexed1 = Table.AddIndexColumn(Table1, "Индекс1", 1, 1),

    List2 = {-1,0,0,0},
    Table2 = Table.FromList(List2, Splitter.SplitByNothing(), {"Column2"}, null, ExtraValues.Error),
    Indexed2 = Table.AddIndexColumn(Table2, "Индекс2", 1, 1),

    Joined = Table.Join(Indexed1,{"Индекс1"},Indexed2,{"Индекс2"},JoinKind.FullOuter),
    List3 = Table.AddColumn(Joined, "Сложение", each List.Sum({[Column1], [Column2]}), type number)[Сложение] 
in
    List3 //={0,2,3,0}
Изменено: PooHkrd - 06.04.2018 12:39:14
Вот горшок пустой, он предмет простой...
Power Pivot. Обновление данных в таблицах модели данных с разорванными связями.
 
Доброго дня, уважаемым планетянам!
Дано: достался нашему обучающему отделу демо файл с готовой моделью данных, связями/мерами/графиками/сводными и .т.д. и т.п. Но данные в модельке не совсем по профилю работы нашей компании, там про продажу тракторов, а мы еду продаем. Попросили меня наполнить модельку данными актуальными для нашей организации, чтобы значит обучающимся сотрудникам это дело было ближе к телу.
Проблема: связи таблиц в модели данных с внешними источниками отсутствуют. Заливались эти данные судя по всему из умных таблиц внутри самого файла, но вот таблицы эти из него удалены. Попробовал создать таблицы с такими же именами что и в модели и подтянуть данные - не получилось, в модель лезет эта таблица с таким же названием и цифрой 1.
Кто что может предложить? Очень уж не хочется переделывать всю эту демо-муть с нуля.
Файл приложить не могу, к сожалению, сюда не лезет, а на облака меня фаерволл не пускает. на Я.Диске
Изменено: PooHkrd - 14.02.2018 13:08:24
Вот горшок пустой, он предмет простой...
Проблема с Power Query. "Виснет" редактор запросов., И не отображаются запросы в списке справа.
 
Доброго дня коллеги.
Имею конфиг сервака: Intel Xeon E5 2690 + RAM 32 Gb + Win Srvr 2012 R2 Standart. Сервак работает в режиме удаленного рабочего стола куда через mstsc  подключается порядка 30 юзверей и работают с Excel 2016 x64 версия 16.0.4266.1001 (обновления где-то от апреля 2017).
С недавних пор возник глюк: у некоторых пользователей зависает редактор запросов, при попытке создать новый запрос, при этом в статус баре excel'я не пропадает надпись Загрузка .Net Framework.
Также, если открыть файл, с ранее созданными запросами, и открыть в нем панельку со списком запросов, то в ней будет пусто.
Переустановили Excel не помогло - у кого-то проблема пропала, а у кого она не проявлялась, наоборот вылезла.
При этом сам Excel  функциклирует без проблем, формулы/сводные/графики - все фурычит. Power Pivot тоже работает. Отвалился только PQ.
Кто-нибудь сталкивался с такой напастью? Как починить? Хотя бы куда копать?
Изменено: PooHkrd - 24.01.2018 18:20:00
Вот горшок пустой, он предмет простой...
Power Query. Не работает объявление типа столбца в функции Table.AddColumn, Помогите разобраться.
 
В функции Table.AddColumn есть опциональная возможность определять тип данных формируемого столбца. Но только почему-то она у меня не работает. В смысле я пишу нужный мне тип через запятую после формулы, столбец получает картинку, что нужный мне тип установлен, но отображает в столбце данные в исходном формате. Я сначала подумал, что это глюк отображения, но это не так, и по факту они в исходном формате. (использую Excel 2016 x64 с обновлениями где-то от апреля)
Просто не люблю я использовать лишние шаги с явным преобразованием типов столбцов и хочу понять - то ли лыжи не едут, то ли я чего-то не догоняю.
Во вложении пример запроса с попыткой преобразования данных с типом "ДатаВремя" в тип "Дата"
Изменено: PooHkrd - 24.11.2017 14:52:57
Вот горшок пустой, он предмет простой...
Power Query. Индексация строк в пределах каждой группы., Знаю как сделать формулами Excel, но не могу дотумкать как решить проблему в запросе.
 
Доброго дня.
Уважаемые, столкнулся с такой проблемой:
Имеется список машинок и установленных на них колес, каждое колесо - отдельная строка в таблице фактов.
Что нужно: в рамках каждой машинки и каждого вида колеса на этой машинке нужно пронумеровать каждое колесо по порядку, чтобы получить в результате уникальный идентификатор для каждой строки сцепкой.
В примере желтым цветом обозначен столбец, который я знаю как сделать формулами в Эксель при помощи "растягивающихся" диапазонов, но пока не понимаю как мне получить его в Power Query.
Заранее спасибо.
Вот горшок пустой, он предмет простой...
Power Pivot. Глюк при выводе в сводную строк из модели данных., Power Pivot
 
Доброго всем дня.
Столкнулся с таким вот глюком: в модели данных имеется столбец с очень сложной формулой
Код
=RELATED('ПаркТС'[Марка])
по VIN коду ТС подтягиваю в таблицу фактов марку машины. В модели данных столбец выглядит как на картинке 1, т.е. в наименованиях имеются пробелы.
Когда вывожу модели ТС в строки сводной получаю наименования без пробелов  8-0
Чисто поржать сдалал еще один столбец Марка2 с той же самой формулой и вывел его также в строки сводной, и в нём все с пробелами  :D Это видно на картинке 2.
Разница между двумя столбцами только в том, что первый живет в модели уже с полгодика, а второй я сделал только сегодня.
Что бы это значило?

Файлик приложить, извините, не имею возможности. Слишком долго зачищать.
Изменено: PooHkrd - 27.10.2017 10:31:54
Вот горшок пустой, он предмет простой...
Power Pivot. Подстановка значений из сгруппированной не связанной таблицы в модели данных., DAX
 
Доброго дня, уважаемые.
Возникла такая проблема, в модели данных имеются 2 таблицы, в обеих есть ключевое поле, но оно в них обеих не уникальное. Из-за этого связь между таблицами настроить не могу.
Что хочу: в модели данных в таблицу Продажи из примера подставить значения поля Остатки на начало дня из сгруппированной по полю Ключ таблицы Остатки
Возможно ли такое чудо? Прошу помочь с направлением раскопок. Скажите хоть какие функции использовать, а дальше если буду сильно тупить - уточню.
Заранее спасибо.
Изменено: PooHkrd - 23.10.2017 14:34:09
Вот горшок пустой, он предмет простой...
Модель прогнозирования продаж в Power Query или DAX, надо чуток по-прогнозировать
 
Всем здравия.
Есть моделька прогнозирования на формулах Excel ТЕНДЕНЦИЯ и ПРЕДСКАЗ.ETS, хочу через PQ загнать список номенклатур с данными по расходу в модель данных, а дальше через PQ или DAX к списку прилеплять столбцы с прогнозом. Такое возможно в принципе? Куда копать?
Вот горшок пустой, он предмет простой...
PQ. Есть ли возможность размещать часто используемые таблицы в оперативку чтобы PQ не читал постоянно данные с жесткого диска?, Power Query
 
Всем привет.
В рамках сбора данных приходится к 7-10 разнородных таблиц фактов джойнить пару  столбцов из одного и того же большого справочника, PQ со своими  "ленивыми вычислениями" каждый раз лезет за данными из этого справочника на (мееееедленный) сетевой жесткий диск, а  хочется как-то ускорить процесс.
Вот здесь Андрей VG использовал функцию Table.Buffer для обращения к еще одному источнику в пределах одного запроса и размещения его в оперативной памяти. По справке МС не очень понятно:
1. таблица остается в памяти в рамках расчета только одного запроса?
2. если нет, то можно ли в одном запросе запихать какой-то справочник в память и обращаться к нему из других запросов?
3. если на предыдущие вопросы ответ да, то ускорит ли это вычисления?
Вот горшок пустой, он предмет простой...
DAX. Можно ли мерой посчитать количество непустых значений в строке сводной таблицы., PowerPivot
 
Всем здравствуйте.
Встал такой вопрос: можно ли создать меру, которая бы считала количество пустых ячеек в строке сводной таблицы, по аналогии с функцией СЧЁТ
В примере моделька и формулой сделан столбец, который хочу получить в виде меры.
Фактически нужно посчитать количество месяцев без продаж для каждой номенклатуры с учетом фильтров сводной таблицы.
Если это сильно заморочно, то хотя бы пните в какую сторону копать.
Изменено: PooHkrd - 09.08.2017 16:55:05
Вот горшок пустой, он предмет простой...
DAX. Join к таблице сведенных значений из неё самой., DAX
 
Доброго дня.
Уважаемые, было дело в этой вот теме Power Query аналог формулы СУММЕСЛИМНмне очень помогли с созданием столбца с суммами в PQ. Конкретно очень полезной оказалась формула:
Код
= Table.Join(Источник, {"Код", "Товар"}, Table.Group(Источник, {"Код", "Товар"}, {{"Сумма Продаж по товару 2", each List.Sum([Продажи])}}), {"Код", "Товар"})

Теперь сижу втыкаю в справку и никак не могу дотумкать как мне такой же фокус сделать в DAX. Помогите, голова закипает уже.

В примере я в модель данных поместил табличку, которая получается при помощи запроса PQ, в ней запросом сформирован столбец Сумма Продаж по товару. Прошу сделать в модельке рядом столбец с вычислением таких же значений на DAX.
Вот горшок пустой, он предмет простой...
Страницы: 1 2 След.
Наверх