powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Учёт ТМЦ
7 сообщений из 7, страница 1 из 1
Учёт ТМЦ
    #34930707
Micola_mgn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые форумчане. Требуется помощь, ибо спросить не у кого.
Нужно внести изменения в имеющийся уже многоскладской учёт ТМЦ (каждая единица учёта имеет свой уникальный инвентарный номер (соответственно строку в БД)).
В общем, схема БД такая: Склады(Sclad - поля ID, Name), ТМЦ(TMC - Поля ID, Name, Inv_Nomer, CurrentScladID), Накладаные перемещения(WayBill - ID, Number, Date, FromScladID, ToScladID), Состав накладной перемещения(WayBillContent - поля ID, WaybillID, TMCID).
Каждая единица привязана к своему складу. При создании накладной - ТМЦ отвязывается от одного склада и привязывается к другому (в накладной могут находиться товары только из одного склада). В таблице ТМЦ есть соответствующее поле CurrentScladID.
Также есть проверка на возможность изменения даты накладной, либо её удаления - проверяется, было ли уже движение по этому ТМЦ в пределах периода изменения. Если было - то ничего не удаляется. Проверка проводилась по дате накладной.

В общем всё это дело успешно работало, пока не нашлась бага. Т.к. формат поля Date таблицы WayBill - просто дата (без времени), то возникают ошибки при редактировании накладной. Пример - одним днём делаем передачу на склад и тут же делаем возврат. Т.е. в базе две накладных с одной датой. Пытаемся удалить одну из накладных - проверка отпинывает - поскольку за проверяемый период уже было движение.
Каким образом это можно исправить? Я вижу несколько вариантов, но они мне все не нравятся:
1. Хранить время создания накладной. Но время тоже может совпасть.
2. Делать проверочный период с запасом в один день. - плохо подходит, из-за специфики организации - за день может быть несколько перемещений.
3. Включить в проверку каким-нибудь образом ID накладной. Понятно, в общем, что это тоже не вариант
4. Проверять помимо даты - ещё и по-складам. - Больно мудрёная проверка получается.
...
Рейтинг: 0 / 0
Учёт ТМЦ
    #34932210
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Micola_mgnПри создании накладной - ТМЦ отвязывается от одного склада и привязывается к другому (в накладной могут находиться товары только из одного склада). В таблице ТМЦ есть соответствующее поле CurrentScladID.
Вот от этого надо избавляться .

Micola_mgnТакже есть проверка на возможность изменения даты накладной, либо её удаления - проверяется, было ли уже движение по этому ТМЦ в пределах периода изменения. Если было - то ничего не удаляется. Проверка проводилась по дате накладной.
Не ясен смысл проверки, тем более именно такой проверки.

Micola_mgnВ общем всё это дело успешно работало, пока не нашлась бага. Т.к. формат поля Date таблицы WayBill - просто дата (без времени), то возникают ошибки при редактировании накладной.
Вообще-то такая схема может работать только в очень специфической ситуации, когда номенклатура не делится и находится только на одном складе. Больше похоже на простой учет использования простых ОС, чем на склад.

Рецепт был дан в начале моего сообщения, Вам надо все переделывать по-человечески.
...
Рейтинг: 0 / 0
Учёт ТМЦ
    #34934106
Micola_mgn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А подробней? Каким образом тогда определять принадлежность ТМЦ к складу? И соответственно - каким образом определять произошло перемещение или нет. Сейчас есть возможность отследить историю движения - по накладным. Т.е. - от чего именно избавляться и чем это можно заменить.

По поводу смысла проверки: пример история перемещений ТМЦ по складам:
1. 01.01.2007 (А)->(Б)
2. 01.02.2007 (Б)->(В)
Соответственно пользователь захотел создать новое перемещение "задним числом" такого вида
3. 20.01.2007 (В)->(А)
Т.е. проверка нужна для обеспечения хронологической верности данных в БД

Сергей Васкецов Вообще-то такая схема может работать только в очень специфической ситуации, когда номенклатура не делится и находится только на одном складе. Больше похоже на простой учет использования простых ОС, чем на склад.
Номенклатура не делится - т.е. не возможно дробление 1 "большой коробки" на несколько маленьких. Действительно, это больше учёт ОС, т.к. отпуска "на сторону" нет.

Повторюсь, как это реализовать правильно?
...
Рейтинг: 0 / 0
Учёт ТМЦ
    #34934113
Micola_mgn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В догонку: номенклатура - сквозная, она не привязана к складам(подразделениям, в которых хранятся ТМЦ). Редактирование её "простыми" пользователями невозможно.
...
Рейтинг: 0 / 0
Учёт ТМЦ
    #34934215
Nosorog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть готовые шаблоны баз данных для учета ОС
вот пример на Access

http://office.microsoft.com/en-us/templates/TC010184591033.aspx?CategoryID=CT101426031033&av=ZAC000
...
Рейтинг: 0 / 0
Учёт ТМЦ
    #34935414
Фотография Strassebahn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SkladID hranitsia v poslednei nakladnoi s dannym TMS.
...
Рейтинг: 0 / 0
Учёт ТМЦ
    #34937703
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Micola_mgnА подробней? Каким образом тогда определять принадлежность ТМЦ к складу?
Это называется картотека склада. Она определяет отношение M:N между складами и номенклатурой.

Micola_mgnИ соответственно - каким образом определять произошло перемещение или нет.
Движение ТМЦ по картотеке заносится в третьи таблицы в момент изменения статуса документов склада.

Micola_mgnНоменклатура не делится - т.е. не возможно дробление 1 "большой коробки" на несколько маленьких
Это не оправдание. А то потом (уже?) будет мучительно больно переделывать. Вы путаете единицу измерения ТМЦ (одна коробка) с ТМЦ (что именно в этой коробке).
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Учёт ТМЦ
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]