Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Волшебство программирования на 1С:Предприятие 7.7 и 8.0. Выпуск 109


Компания "СофтПоинт" приглашает Вас посетить 17-ю ежегодную ИТ выставку
Softool 2006, которая будет проходить с 26 по 29 сентября в павильоне N69,
ВВЦ, г. Москва. Будем ждать Вас на нашем стенде В36, где Вы сможете увидеть
демонстрацию механизма репликации для 1С 7.7 и 8.0 и прослушать два доклада
в рамках конференции "ИТ в России".
Подробнее о нашем участии в выставке Softool 2006 Вы можете прочитать здесь:
http://www.softpoint.ru/info_id55.htm
У Вас есть возможность получить бесплатные пригласительные билеты на
выставку Softool 2006. Билеты можно получить в нашем офисе заранее или
непосредственно перед выставкой.
По всем вопросам обращайтесь к нашим менеджерам по тел. (495) 101-17-41.


Волшебство программирования на 1С:Предприятие 7.7 и 8.0
Выпуск 109 / 22.09.2006

v8: Партионный учёт в 1С
Автор статьи: Гений 1С | Редакторы: ERWINS, Neco

Введение


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

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

При расходовании партионного ресурса возможны следующие модели указания партий:
  • Непосредственное указание партии - непосредственно указывается используемая партия.
  • 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-ке скорость запросов к справочникам практически равна скорости запроса к регистрам, поэтому этот метод тем более можно применять.

    Официальный сайт рассылки - www.mista.ru
    Волшебный форум -
    www.forum.mista.ru
    Книга знаний - www.kb.mista.ru

    С уважением,
    Станислав Митичкин (Волшебник)
    stasmit@mail.ru



    В избранное