При работе с конфигурацией «1С:Управление торговлей 11» (УТ 11) разработчики часто сталкиваются с вопросом: из каких таблиц базы данных наиболее корректно извлекать информацию о текущих остатках товаров и их стоимости? Архитектура УТ 11 существенно отличается от предыдущих версий (например, УТ 10.3), так как здесь применяется более сложная система распределения запасов и механизмов ценообразования. В этой статье мы подробно разберем, какие регистры накопления и сведений следует использовать в запросах, чтобы получить достоверные данные.
Для получения информации об остатках в УТ 11 существует несколько специализированных регистров накопления. Выбор конкретного регистра зависит от того, какой именно «вид» остатка нам требуется: физический, юридический или доступный к продаже.
Рассмотрим основные регистры накопления:
Номенклатура, Характеристика и Серия, то обращаться нужно именно к нему. Важно понимать, что этот регистр не «знает», какой организации принадлежит товар.Остатки этого регистра вы найдете поля ВНаличии и Зарезервировано. Чтобы получить реальный остаток, доступный для отгрузки, необходимо из значения «В наличии» вычесть «Зарезервировано».Проанализируем ситуацию: если ваша задача — построить отчет по дефициту товаров для отдела закупок, наиболее правильным будет использование регистра СвободныеОстатки, так как он учитывает клиентские резервы.
Цены в УТ 11 хранятся в периодическом регистре сведений ЦеныНоменклатуры. Для получения актуальной цены на определенную дату (или на текущий момент) в запросе необходимо использовать виртуальную таблицу СрезПоследних.
Выясним основные нюансы работы с этим регистром:
ВидЦены, иначе запрос вернет несколько строк на одну позицию номенклатуры.Номенклатура и Характеристика.Посмотрим на пример структуры запроса для получения остатков и цен одновременно:
ВЫБРАТЬ
СвободныеОстаткиОстатки.Номенклатура КАК Товар,
СвободныеОстаткиОстатки.Характеристика КАК Характеристика,
СвободныеОстаткиОстатки.ВНаличииОстаток - СвободныеОстаткиОстатки.ЗарезервированоОстаток КАК Доступно,
ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК АктуальнаяЦена
ИЗ
РегистрНакопления.СвободныеОстатки.Остатки(&МоментВремени, Склад = &НужныйСклад) КАК СвободныеОстаткиОстатки
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&МоментВремени, ВидЦены = &НужныйВидЦены) КАК ЦеныНоменклатурыСрезПоследних
ПО СвободныеОстаткиОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
И СвободныеОстаткиОстатки.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика
Обратите внимание: мы используем ЛЕВОЕ СОЕДИНЕНИЕ. Это критически важно, так как если на товар установлены остатки, но еще не задана цена, при использовании внутреннего соединения (СОЕДИНЕНИЕ) такой товар просто исчезнет из выборки.
Для обеспечения высокой скорости работы системы, особенно в базах с большим объемом данных, рекомендуем придерживаться следующих правил:
МоментВремени и фильтры по справочникам (Склад, Номенклатура) непосредственно в скобках виртуальной таблицы, а не в секции ГДЕ. Это позволит SQL-серверу отобрать нужные данные на раннем этапе выполнения запроса.Номенклатура, Склад, Организация в типовых регистрах уже индексированы, что обеспечивает быстрый поиск.Иногда требуется получить не просто прайсовую цену, а **себестоимость** остатков. Важно помнить, что регистр ЦеныНоменклатуры для этого не подходит. Информацию о себестоимости следует брать из регистра накопления СебестоимостьТоваров или ВыручкаИСебестоимостьПродаж. Однако учтите, что данные в этих регистрах становятся корректными только после выполнения регламентной операции «Закрытие месяца».
Если в вашей системе активно используются перемещения товаров, и часть груза часто находится «в пути», проанализируем регистр ТоварыКПередаче. Данные из этого регистра помогут дополнить картину остатков теми позициями, которые уже уехали со склада-отправителя, но еще не приняты на складе-получателе.
Таким образом, мы выяснили, что для решения типичной задачи получения остатков и цен в УТ 11 оптимальной связкой является использование виртуальных таблиц РегистрНакопления.СвободныеОстатки.Остатки и РегистрСведений.ЦеныНоменклатуры.СрезПоследних. Грамотное использование этих инструментов позволит вам создавать быстрые и точные отчеты.