Как получить все поступления номенклатуры, соответствующие текущему остатку в УТ 10.3?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При работе в 1С:Управление торговлей 10.3 часто возникает задача определить, из каких конкретно документов поступления сформирован текущий товарный остаток. Это необходимо для реализации метода оценки запасов ФИФО (FIFO), когда мы должны списать в первую очередь товары из тех документов, которые пришли раньше всего. Давайте разберем, как подступиться к этой задаче, учитывая архитектурные особенности системы.

Вариант 1: Использование штатного партионного учета

Прежде чем приступать к написанию собственного алгоритма, давайте проанализируем, почему штатные средства могут оказаться достаточными. Основным инструментом в УТ 10.3 для этих целей является регистр накопления Партии товаров на складах.

  1. Проверьте, включен ли в вашей Учетной политике партионный учет.
  2. Если учет ведется, то остатки в регистре Партии товаров на складах уже хранятся в разрезе документов поступления (измерение ДокументОприходования).
  3. В этом случае вам достаточно сделать запрос к остаткам этого регистра. Вы получите таблицу, где каждая строка будет соответствовать конкретной партии (документу) и количеству, которое на данный момент числится на складе.

Это самый надежный способ, так как система автоматически «закрывает» партии при проведении документов расхода. Если данные в этом регистре расходятся с данными регистра Товары на складах, это свидетельствует о проблемах в учете или некорректных корректировках, которые нужно устранить, а не обходить программно.

Вариант 2: Реализация алгоритма ФИФО «на лету»

Если по какой-либо причине партионный учет в системе отключен или не соответствует вашим требованиям, приходится реализовывать расчет «на лету». Суть метода заключается в имитации движения товаров по принципу ФИФО путем последовательного вычисления накопленного итога.

Разберем алгоритм по шагам:

  1. Получение данных: Сформируйте выборку всех документов, увеличивающих остаток (Поступление товаров и услуг, Оприходование товаров, Возврат товаров от покупателя).
  2. Сортировка: Отсортируйте полученную выборку по дате и времени документа. Это критически важно для принципа ФИФО.
  3. Накопление итога: Для каждой строки выборки вычислите накопленное количество.
  4. Фильтрация: Сравните накопленное количество с текущим общим остатком на складе. Если накопленное количество меньше или равно текущему остатку, данная партия считается полностью или частично входящей в состав текущего запаса.

Реализовать это с помощью запроса 1С можно через использование временных таблиц. Посмотрим на логику построения такого запроса:


ВЫБРАТЬ
    Приходы.ДокументОприходования,
    Приходы.Количество КАК КоличествоВПартии,
    СУММА(Приходы.Количество) КАК НакопленноеКоличество
ПОМЕСТИТЬ ВременнаяТаблицаПриходов
ИЗ
    ДокументыПрихода КАК Приходы
СГРУППИРОВАТЬ ПО
    Приходы.ДокументОприходования, Приходы.Количество
;
ВЫБРАТЬ
    Т1.ДокументОприходования
ИЗ
    ВременнаяТаблицаПриходов КАК Т1
ГДЕ
    Т1.НакопленноеКоличество <= &ТекущийОстаток

Важные замечания по реализации

При самостоятельной разработке учитывайте следующие факторы:

В заключение, старайтесь максимально использовать встроенный механизм партионного учета УТ 10.3. Если партионный учет не ведется, разработка алгоритма требует строгого соблюдения хронологической последовательности движений, в противном случае корректное определение ФИФО невозможно.

← На главную