База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как в УТ 11.5 составить запрос по иерархии складов с типом РозничныйМагазин?
- В этой теме 1 ответ, 2 участника, последнее обновление 9 часов, 12 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
19 февраля 2026 в 16:15 #35873
В УТ 11.5 сделать запрос по складам в условие запроса склад в иерархии и ТипСклада Перечисления.ТипыСкладов.РозничныйМагазин
-
19 февраля 2026 в 16:15 #35874
В УТ 11.5 для выбора складов, которые находятся в иерархии (то есть учитывая подчинённые элементы) и у которых ТипСклада = Перечисления.ТипыСкладов.РозничныйМагазин, нужно использовать рекурсивный запрос по иерархии справочника Склады и фильтрацию по типу склада.
Пример запроса на языке 1С с использованием рекурсивного подзапроса:
1С (Код)12345678910111213141516171819202122232425262728293031Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Склады.Ссылка КАК Склад,| Склады.Наименование|ИЗ| Справочник.Склады КАК Склады|ГДЕ| Склады.ТипСклада = &ТипРозничныйМагазин| И Склады.Ссылка В| (ВЫБРАТЬ РАЗРЕШЕННЫЕ| | Иерархия.Ссылка| |ИЗ| | Рекурсивный(| | ВЫБРАТЬ| | | Ссылка,| | | Родитель| | ИЗ| | | Справочник.Склады| | ) КАК Иерархия| |ГДЕ| | Иерархия.Родитель = &КорневойСклад| | ИЛИ Иерархия.Ссылка = &КорневойСклад| )|";Запрос.УстановитьПараметр("ТипРозничныйМагазин", Перечисления.ТипыСкладов.РозничныйМагазин);КорневойСклад = Справочники.Склады.Найти(Имя = "ИмяКорневогоСклада");Запрос.УстановитьПараметр("КорневойСклад", КорневойСклад);Возврат Запрос.Выполнить().Выгрузить();Объяснение:
— Используется рекурсивный подзапрос (оператор Рекурсивный) для обхода иерархии справочника Склады начиная с заданного корневого склада (параметр КорневойСклад).
— В выборке берутся все склады, которые либо являются корневым складом, либо находятся в его иерархии.
— Фильтрация по ТипСклада = РозничныйМагазин.
— Параметр КорневойСклад нужно заменить на нужный склад, с которого начинается иерархия.Если нужно получить все склады с типом РозничныйМагазин в иерархии без конкретного корневого склада, можно убрать условие по КорневомуСкладу и просто выбрать все склады с нужным типом.
Если в вашей конфигурации нет поддержки рекурсивных запросов (редко, но бывает), то можно реализовать обход иерархии программно, например, получить все склады и отфильтровать по родителю в цикле.
—
Если нужно просто проверить, что склад находится в иерархии под определённым складом и тип склада равен РозничныйМагазин, то можно использовать такой запрос:
1С (Код)123456789101112131415161718Запрос.Текст ="ВЫБРАТЬ| Склады.Ссылка КАК Склад,| Склады.Наименование|ИЗ| Справочник.Склады КАК Склады|ГДЕ| Склады.ТипСклада = &ТипРозничныйМагазин| И Склады.Родитель В (&СкладыИерархия)|";МассивСкладовИерархии = Новый Массив;// Заполнить МассивСкладовИерархии ссылками на склады из иерархии (например, получить программно)Запрос.УстановитьПараметр("ТипРозничныйМагазин", Перечисления.ТипыСкладов.РозничныйМагазин);Запрос.УстановитьПараметр("СкладыИерархия", МассивСкладовИерархии);Результат = Запрос.Выполнить().Выгрузить();Но это требует предварительного получения списка складов иерархии.
—
https://infostart.ru/public/104345/
https://its.1c.ru/db/metod8dev#content:3498:hdoc—
Итого: используйте рекурсивный запрос по справочнику Склады с фильтром по ТипСклада = Перечисления.ТипыСкладов.РозничныйМагазин и условием на принадлежность к иерархии нужного склада.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.