При разработке обработок или отчетов для конфигурации "1С:Управление нашей фирмой" часто возникает задача получить список складов. Однако, в отличие от других типовых конфигураций, в УНФ нет отдельного справочника с названием "Склады". Разберемся, где на самом деле хранится эта информация и какими способами ее можно найти самостоятельно.
В конфигурации 1С:УНФ для хранения информации о складах, подразделениях и магазинах используется единый объект — справочник СтруктурныеЕдиницы. Это центральный элемент, описывающий организационную структуру предприятия.
Чтобы отличить склад от подразделения или магазина, у каждого элемента этого справочника есть специальный реквизит "Тип структурной единицы". Для складского учета используются следующие типы:
Таким образом, для получения списка именно складов необходимо сделать выборку из справочника СтруктурныеЕдиницы с отбором по соответствующему типу.
Если вы столкнулись с подобной задачей и не знаете, где искать данные, есть несколько универсальных методов, которые помогут сориентироваться в любой незнакомой конфигурации. Рассмотрим их на нашем примере.
Самый логичный способ — найти объект, который точно использует искомую сущность. Мы знаем, что остатки товаров хранятся на складах. В УНФ за это отвечает регистр накопления ЗапасыНаСкладах.
ЗапасыНаСкладах.СправочникСсылка.СтруктурныеЕдиницы.Этот метод безошибочно указывает на нужный нам справочник.
Второй эффективный метод — использовать глобальный поиск или фильтр по имени в дереве конфигурации.
Склад. В его составе мы увидим тот же самый тип: СправочникСсылка.СтруктурныеЕдиницы.Определяемые типы часто используются для создания универсальных реквизитов, и их анализ помогает быстро понять, какие объекты выполняют ту или иную роль в системе.
Теперь, когда мы знаем, где хранятся данные, давайте напишем простой запрос для получения всех элементов, которые являются складами или розничными складами.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СтруктурныеЕдиницы.Ссылка,
| СтруктурныеЕдиницы.Наименование
|ИЗ
| Справочник.СтруктурныеЕдиницы КАК СтруктурныеЕдиницы
|ГДЕ
| СтруктурныеЕдиницы.ТипСтруктурнойЕдиницы В (
| ЗНАЧЕНИЕ(Перечисление.ТипыСтруктурныхЕдиниц.Склад),
| ЗНАЧЕНИЕ(Перечисление.ТипыСтруктурныхЕдиниц.РозничныйСклад))";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить("Найден склад: " + Выборка.Наименование);
КонецЦикла;
В этом запросе мы обращаемся к справочнику СтруктурныеЕдиницы и с помощью условия ГДЕ фильтруем записи, оставляя только те, у которых реквизит ТипСтруктурнойЕдиницы равен значению перечисления Склад или РозничныйСклад. Этот код можно использовать в ваших обработках и отчетах для формирования списка доступных складов.