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