новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума

Регистр накопления ошибка в проектировании

  • Добавить свою публикацию
  • для этого требуется регистрация

 

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

Давайте рассмотрим на простом примере использование регистров накопления. Пусть у нас есть два документа «Приход» и «Расход» которые пишут соответствующие движения в регистр движения товара. Мне нужно знать что, сколько и за сколько я купил. Куда определить ети данные в  Измерения, Ресурсы или Реквизиты?

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

Ресурс это поле в котором храниться числовое значение в разрезе измерений в нашем примере это  количество.

Реквизиты это дополнительная информация привязанная к ресурсу, можно решить что цена покупки должна записываться в реквизиты регистра. Но если мы захотим узнать сколько товара у нас осталось и по какой цене то воспользовавшись командой Остатки(<МоментВремени>, <Отбор>, <Измерения>, <Ресурсы>) увидим что информации по реквизитах она не выдаст. Значит цену прихода нужно помещать в ресурсы.

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

То что я написал легче всего проиллюстрировать таблицами:

Талица первая неправильная:

+/-

ТМЦ

количество

Цена

+

Товар 1

100

2

-

Товар 1

50

2

-

Товар 1

50

2

 

Остаток

0

-2

Таблица вторая правильная

+/-

ТМЦ

количество

Сума покупки (себестоимость)

+

Товар 1

100

200

-

Товар 1

50

100

-

Товар 1

50

100

 

Остаток

0

0

Как видите мы  изначально поставили неправильные условия, при проектировании регистров это нужно учитывать. Ошибка не надуманная, я с ней столкнулся при рефракторинге одной самописной базы, из-за нее пришлось довольно много переписывать  в той базе что в итоге и привело к написанию этой статьи, надеюсь что начинающим она будет полезна.

 

 
0
Еще от автора
≡ к списку статей