вторник, 11 октября 2011 г.

Партионный учет

Отсюда

Партионный учет предполагает то, что некоторый ресурс поступает в виде отдельных партий.
То есть этот ресурс представляет является неоднородным, а состоит из различных партий, с различными свойствами.
Следовательно, при использовании ресурса недостаточно указания ресурса, нужно еще указания партии этого ресурса.

Простейший пример - поступление товара.
Каждая партия одного и того же товара может отличаться поставщиком, сроками годности, закупочной ценой, расходами по доставке и т.п.

При расходовании партионного ресурса возможны следующие модели указания партий:

  • Непосредственное указание партии - непосредственно указывается используемая партия.
  • FIFO - определяются все оставшиеся партии, сортируются по дате поступления и используются в этом порядке.
  • LIFO - определяются все оставшиеся партии, сортируются по дате поступления и используются в этом порядке.
  • По среднему - партионный ресурс превращается в однородный путем усреднения некоторого свойства партии, например закупочной цены. Берется среднее значение этого свойства и при использовании ресурса указывается это свойство.

    Непосредственное указание партий не всегда подходит, т.к. часто по товару нельзя определить, из какой он партии. Иногда применяют пометку партии товара штрихкодом, но не всегда предприятие готово пойти на такие расходы времени и средств.


    В дальнейшем здесь будут написаны алгоритмы, использующиеся в 1С для различных методов использования партий.

    Сложности партионного учета


    Использование партий по сравнению с простым учетом остатков товара влечет за собой некоторые проблемы:
    1. Одно движение использование ресурсов заменяется несколькими движениями, в каждом из которых указывается партия ресурса.
    2. Если при учете остатка можно сделать изменение движения задним числом и остаток будет правильным, то при партионном учете такое изменение изменит картину распределения ресурса по партиям и нужно будет перераспределить все последующие после движения движения по партиям данного ресурса. В 1С это называется восстановлением последовательности партионного учета.

    Альтернативы партионного учета


    Однако для FIFO существует метод, который позволяет вести партионный учет без указания партий в движениях.
    Для этого после получения остатка ресурса на некоторую дату извлекаются все поступления этого ресурса в от текущей даты в прошлое, пока не наберется количество, соответсвующее остатку ресурса.
    Таким образом, мы получаем список партий, из которых состоит остаток товара.
    Подробнее здесь: Книга знаний: Альтернатива партионному учету


    Партионный учет может быть реализован несколькими спосабами
    для примера
    1. создается регистр остатков по партиям и отдельно по складам
    2. создается регистр в котором есть разрезы и по партиям и по складам

    Оптимизация партионного учета


    В новом релизе конфигурации "Управление производственным предприятием 1.2" фирмы 1С применяется кэширование движений по партиям:
    "В данной конфигурации реализована новая модель проведения документов по партионному учету (реализовано частично, только для документов "Поступление товаров и услуг" и "Реализация товаров и услуг"). Основное ее отличие от ранее существовавшей - это отказ от многократного получения остатков партий из регистра накопления на каждый проводимый документ. Теперь однажды полученный остаток сохраняется в таблице значений, и в последующем берется уже из таблицы значений.
    Кроме того был изменен подход в проведении по партиям документов, осуществляющим движения в приход ("Поступление товаров"). Если раньше движения по партионным регистрам формировались сразу же при проведении документа, то теперь они, как и у документа "Реализация товаров и услуг", формируются обработкой проведения по партиям. Процедура проведения по партиям как и раньше выполняется обработкой "Проведение по партиям", но только теперь основные ее действия вынесены на сервер, в модуль УправлениеЗапасамиПартионныйУчет (см. процедуру ПроведениеПоПартиямНаСервере()). В данной процедуре создается таблица значений ТаблицаОстатковПартийТоварыНаСкладах, со структурой, совпадающей с регистром накопления ПартииТоваровНаСкладах. Именно в этой таблице значений и будут хранится остатки по партиям. Для того, чтобы поиск требуемой партии в этой таблицы выполнялся быстро, у нее создается индекс по измерениям регистра накопления. Данная таблица передается параметром в процедуру проведения документа по партионному учету - ДвижениеПартийТоваров(). Данная процедура теперь формирует не только движения списания партий, но и также движения поступления партий." Описание конфигурации УПП 1.2

    Примеры партионного учета


    Рассмотрим основные нюансы партионного учета.
    Пусть регистр партий у нас ведутся в разрезе: Товар, Партия = Количество Сумма
    Пусть на остатках этого регистра имеются такие партии:
    Пиво Пнк-01 10 100
    Пиво Пнк-02 50 600
    Пиво Пнк-03 20 260
    Водка Пнк-04 30 600
    Водка Пнк-05 20 500
    Чем больше номер документа, тем позже он введен, тем больше его дата.
    Итак рассмотрим списание 40 позиций пива и 30 позиций водки для разных алгоритмов (FIFO, LIFO и по-среднему).

    Списание по FIFO

    Пиво Пнк-01 10 100 (вся партия уходит)
    Пиво Пнк-02 30 600/50*30=360
    Водка Пнк-04 30 600 (вся партия уходит)

    Списание по LIFO


    Пиво Пнк-02 20 600/50*20=240
    Пиво Пнк-03 20 260 (вся партия уходит)
    Водка Пнк-04 10 600/30*10=200
    Водка Пнк-05 20 500 (вся партия уходит)

    Списание по среднему


    При списании по-среднему может использоваться регистр такой же структуры, только поле Партия не заполняется, поэтому остатки по товарам будут свернуты:
    Пиво 80 960
    Водка 50 1100

    Соответственно при списании будет использована цена, равная сумме товара, деленного на его количество:
    Пиво 40 40*960/80=480
    Водка 30 30*1100/50=660

    Хитрости партионного учета

    Ведение справочника партий


    На самом деле регистр партий может иметь примерно такую структуру:
    Измерения(Склад, Партия)=>Ресурсы(Количество).
    В самом деле, если вести справочник партий, то не нужно хранить в регистре партий сумму, т.к. стоимость партии и цена партии будет храниться в справочнике партий. Алгоритмы упрощаются, так как все движения ведутся только в количественном выражении, стоимость добавляется только на этапе формирования отчетов (она берется из справочника партий).
    Подобные реализации я встречал в 7-ке (справочник партий был подчинен справочнику товаров). В 8-ке скорость запросов к справочникам практически равна скорости запроса к регистрам, поэтому этот метод тем более можно применять.
  • суббота, 1 октября 2011 г.

    Реквизиты

    У объектов метаданных в 8.х существует два вида реквизитов:
    - реквизиты объекта (определяются на закладке Данные свойств объекта);
    - реквизиты формы (определяются на закладке Реквизиты конкретной формы).

     При создании (к примеру) элемента управления на форме документа, в его свойствах полю Данные можно сопоставить как реквизит объекта, так и реквизит формы.
    ВАЖНОЕ ОТЛИЧИЕ. Если сопоставлен реквизит объекта, то на него будут распространятся общие правила изменения/сохранения значения при проведении/записи.
    К примеру установленный флаг сохранится после записи и при повторном открытии!