|
|
|
использование справочников
|
|||
|---|---|---|---|
|
#18+
Люди, поделитесь опытом, как сделать. Допустим, для выбора клиента используются справочники, и вот возникает ситуация, что клиента надо удалить из справочника, но в таком случае теперь вся отчетность, если вдруг ее надо получить заново по нему, похерится, т.к. клиента не будет. Что делать? Или еще ситуация. У клиетна меняется название и если нго поменять в справочнике, то тогда получается, что отчетность за период, где было старое название клиента, будет неправильной, т.к. там было другое название фирмы. Что делать здесь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2003, 09:19 |
|
||
|
использование справочников
|
|||
|---|---|---|---|
|
#18+
2SergeyNew Допустим, для выбора клиента используются справочники, и вот возникает ситуация, что клиента надо удалить из справочника Этого делать нельзя!!! Не хочешь видеть - поставь признак удаленности (отдельное поле). У клиетна меняется название и если нго поменять в справочнике Можно попробовать создавать новую запись со ссылкой на старую (отдельное поле) для отслеживания преемственности. Хотя не думаю, что это имеет какой то смысл. Другое название=>другие реквизиты=>независимая отчетность. Иначе зачем меняли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2003, 10:26 |
|
||
|
использование справочников
|
|||
|---|---|---|---|
|
#18+
Это старая история. Мы например решили эту проблему хранением временных рядов для каждой записи. Смысл в том, что запись при изменении(или команды на удаление со стороны пользователя, которая понимается тоже как виртуальное удаление) порождает новую запись со своим предыдущим состоянием. При этом из таблицы практически никогда ничего не удаляется и ключи (исскуственные!!!!) остаются неизменными. А реализованно все на триггерах. Чудно работает во многих конторах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2003, 10:30 |
|
||
|
использование справочников
|
|||
|---|---|---|---|
|
#18+
А вот насчет изменения реквизитов <Серёга> не совсем прав, реквизиты бывают значимые и информационные. А ещё руководству пофигу изменение пары букв в название, если контора осталось той же, требуется консолидированная отчетность ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2003, 10:34 |
|
||
|
использование справочников
|
|||
|---|---|---|---|
|
#18+
2Серега >Не хочешь видеть - поставь признак удаленности (отдельное поле). Была такая мысль, но вдруг еще как-то можно, вот и спросил. >Другое название=>другие реквизиты=>независимая отчетность. Иначе зачем меняли Н-р было "ЧП Иванов", а потом стало "ЧП Иванов и сын" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2003, 10:43 |
|
||
|
использование справочников
|
|||
|---|---|---|---|
|
#18+
2SergeyNew Н-р было "ЧП Иванов", а потом стало "ЧП Иванов и сын" Дык это уточнение неправильно введенного названия, или перерегистрированная фирма? Если первое, то проблемы вообще нет. Если второе. А что, можно сменить название и оставить старый ИНН например. Я не в курсе просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2003, 10:58 |
|
||
|
использование справочников
|
|||
|---|---|---|---|
|
#18+
2Серега >. А что, можно сменить название и оставить старый ИНН например. Я не в курсе просто Ну да, название изменили, а ИНН остался старый ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2003, 11:14 |
|
||
|
использование справочников
|
|||
|---|---|---|---|
|
#18+
2Могун >Смысл в том, что запись при изменении(или команды на удаление со стороны пользователя, которая понимается тоже как виртуальное удаление) порождает новую запись со своим предыдущим состоянием А можно немного поподробнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2003, 11:16 |
|
||
|
использование справочников
|
|||
|---|---|---|---|
|
#18+
я обычно аналогичные проблемы решаю датами.... заводим какой-то объект у него есть даты D_From и D_To. Я думаю смысл понятен. Даты в пределах которых объект коректен. Можно держатьссылку приемственности, если одно предприятие закрылось, а второе на его базе открылось. Переименовывать вполне можно, например если граматическая ошибка. Но нужно и соблюдать логику, если например сменилось юридическое лицо, то меняем и запись о нем... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2003, 11:17 |
|
||
|
использование справочников
|
|||
|---|---|---|---|
|
#18+
в смысле создаем новую запись, а в старой закрываем дату, таким образом мы можем хранить всю историю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2003, 11:17 |
|
||
|
использование справочников
|
|||
|---|---|---|---|
|
#18+
CREATE TABLE OB ( OB INTEGER NOT NULL, A_OB INTEGER DEFAULT 0 NOT NULL, TOB INTEGER NOT NULL, OWNER INTEGER DEFAULT 0 NOT NULL, NAME VARCHAR (60) character set WIN1251 collate WIN1251, FULL_NAME VARCHAR (128) character set WIN1251 collate WIN1251, DESCRIPTION VARCHAR (10000) character set WIN1251 collate WIN1251, DELETED INTEGER DEFAULT 0 NOT NULL, DATE_CREATE DATE DEFAULT "NOW" NOT NULL, DATE_CHANGE DATE DEFAULT "NOW" NOT NULL, USER_ID INTEGER DEFAULT 0 NOT NULL, KOD INTEGER NOT NULL); CREATE TRIGGER B_U_OB FOR OB ACTIVE BEFORE UPDATE POSITION 0 AS BEGIN NEW.DATE_CHANGE="NOW"; IF ((NEW.A_OB=0) AND (((NEW.OWNER<>OLD.OWNER) OR (NEW.OWNER IS NULL AND OLD.OWNER IS NOT NULL) OR (NEW.OWNER IS NOT NULL AND OLD.OWNER IS NULL)) OR ((NEW.TOB<>OLD.TOB) OR (NEW.TOB IS NULL AND OLD.TOB IS NOT NULL) OR (NEW.TOB IS NOT NULL AND OLD.TOB IS NULL)) OR ((NEW.NAME<>OLD.NAME) OR (NEW.NAME IS NULL AND OLD.NAME IS NOT NULL) OR (NEW.NAME IS NOT NULL AND OLD.NAME IS NULL)) OR ((NEW.FULL_NAME<>OLD.FULL_NAME) OR (NEW.FULL_NAME IS NULL AND OLD.FULL_NAME IS NOT NULL) OR (NEW.FULL_NAME IS NOT NULL AND OLD.FULL_NAME IS NULL)) OR ((NEW.DESCRIPTION<>OLD.DESCRIPTION) OR (NEW.DESCRIPTION IS NULL AND OLD.DESCRIPTION IS NOT NULL) OR (NEW.DESCRIPTION IS NOT NULL AND OLD.DESCRIPTION IS NULL)) OR ((NEW.DELETED<>OLD.DELETED) OR (NEW.DELETED IS NULL AND OLD.DELETED IS NOT NULL) OR (NEW.DELETED IS NOT NULL AND OLD.DELETED IS NULL)) OR ((NEW.DATE_CREATE<>OLD.DATE_CREATE) OR (NEW.DATE_CREATE IS NULL AND OLD.DATE_CREATE IS NOT NULL) OR (NEW.DATE_CREATE IS NOT NULL AND OLD.DATE_CREATE IS NULL)) )) THEN INSERT INTO OB( TOB, OWNER, USER_ID, NAME, FULL_NAME, DESCRIPTION, DELETED, A_OB) VALUES( OLD.TOB, OLD.OWNER, OLD.USER_ID, OLD.NAME, OLD.FULL_NAME, OLD.DESCRIPTION, OLD.DELETED, OLD.OB); END ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2003, 11:27 |
|
||
|
использование справочников
|
|||
|---|---|---|---|
|
#18+
Поле OB.A_OB для текущего состояния всегда = 0, если оно не равно - запись архивная, в таком случае OB.A_OB содержит ссылку на породившую. И если OB.DELETED<>0 - запись удалена ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2003, 11:41 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32319671&tid=1579675]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
262ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 599ms |

| 0 / 0 |
