powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / использование справочников
13 сообщений из 13, страница 1 из 1
использование справочников
    #32319550
SergeyNew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Люди, поделитесь опытом, как сделать. Допустим, для выбора клиента используются справочники, и вот возникает ситуация, что клиента надо удалить из справочника, но в таком случае теперь вся отчетность, если вдруг ее надо получить заново по нему, похерится, т.к. клиента не будет. Что делать? Или еще ситуация. У клиетна меняется название и если нго поменять в справочнике, то тогда получается, что отчетность за период, где было старое название клиента, будет неправильной, т.к. там было другое название фирмы. Что делать здесь?
...
Рейтинг: 0 / 0
использование справочников
    #32319656
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2SergeyNew
Допустим, для выбора клиента используются справочники, и вот возникает ситуация, что клиента надо удалить из справочника
Этого делать нельзя!!! Не хочешь видеть - поставь признак удаленности (отдельное поле).

У клиетна меняется название и если нго поменять в справочнике
Можно попробовать создавать новую запись со ссылкой на старую (отдельное поле) для отслеживания преемственности. Хотя не думаю, что это имеет какой то смысл. Другое название=>другие реквизиты=>независимая отчетность. Иначе зачем меняли?
...
Рейтинг: 0 / 0
использование справочников
    #32319662
Могун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это старая история. Мы например решили эту проблему хранением временных рядов для каждой записи. Смысл в том, что запись при изменении(или команды на удаление со стороны пользователя, которая понимается тоже как виртуальное удаление) порождает новую запись со своим предыдущим состоянием. При этом из таблицы практически никогда ничего не удаляется и ключи (исскуственные!!!!) остаются неизменными. А реализованно все на триггерах. Чудно работает во многих конторах.
...
Рейтинг: 0 / 0
использование справочников
    #32319671
Могун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот насчет изменения реквизитов <Серёга> не совсем прав, реквизиты бывают значимые и информационные. А ещё руководству пофигу изменение пары букв в название, если контора осталось той же, требуется консолидированная отчетность
...
Рейтинг: 0 / 0
использование справочников
    #32319689
SergeyNew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Серега

>Не хочешь видеть - поставь признак удаленности (отдельное поле).

Была такая мысль, но вдруг еще как-то можно, вот и спросил.

>Другое название=>другие реквизиты=>независимая отчетность. Иначе зачем меняли

Н-р было "ЧП Иванов", а потом стало "ЧП Иванов и сын"
...
Рейтинг: 0 / 0
использование справочников
    #32319726
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2SergeyNew
Н-р было "ЧП Иванов", а потом стало "ЧП Иванов и сын"
Дык это уточнение неправильно введенного названия, или перерегистрированная фирма? Если первое, то проблемы вообще нет. Если второе. А что, можно сменить название и оставить старый ИНН например. Я не в курсе просто.
...
Рейтинг: 0 / 0
использование справочников
    #32319762
SergeyNew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Серега

>. А что, можно сменить название и оставить старый ИНН например. Я не в курсе просто

Ну да, название изменили, а ИНН остался старый
...
Рейтинг: 0 / 0
использование справочников
    #32319765
SergeyNew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Могун


>Смысл в том, что запись при изменении(или команды на удаление со стороны пользователя, которая понимается тоже как виртуальное удаление) порождает новую запись со своим предыдущим состоянием

А можно немного поподробнее?
...
Рейтинг: 0 / 0
использование справочников
    #32319769
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я обычно аналогичные проблемы решаю датами....
заводим какой-то объект у него есть даты D_From и D_To. Я думаю смысл понятен. Даты в пределах которых объект коректен. Можно держатьссылку приемственности, если одно предприятие закрылось, а второе на его базе открылось. Переименовывать вполне можно, например если граматическая ошибка. Но нужно и соблюдать логику, если например сменилось юридическое лицо, то меняем и запись о нем...
...
Рейтинг: 0 / 0
использование справочников
    #32319772
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в смысле создаем новую запись, а в старой закрываем дату, таким образом мы можем хранить всю историю
...
Рейтинг: 0 / 0
использование справочников
    #32319795
Могун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
использование справочников
    #32319832
Могун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поле OB.A_OB для текущего состояния всегда = 0, если оно не равно - запись архивная, в таком случае OB.A_OB содержит ссылку на породившую. И если OB.DELETED<>0 - запись удалена
...
Рейтинг: 0 / 0
использование справочников
    #32319874
SergeyNew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Могун

Спасибо!
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / использование справочников
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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