|
![]() |
#1 |
Участник
|
Если изменение номера нужно для того, чтобы он корректно отображался в неких печатных формах, то, может быть, имеет смысл подумать о дополнительном поле вроде "Номер для печати"? А собственно InvoiceId формировать автоматически по номерной серии.
На InvoiceId построена ссылочная целостность. По сути, это фрагмент PrimaryKey. Как следствие, любые его изменения - это всегда риск нарушения целостности базы данных. Где-то, чего-то не досмотрели. Поэтому, по возможности, его лучше не трогать... |
|
|
За это сообщение автора поблагодарили: Skvorcal (1). |
![]() |
#2 |
Участник
|
Цитата:
Сообщение от Владимир Максимов
![]() Если изменение номера нужно для того, чтобы он корректно отображался в неких печатных формах, то, может быть, имеет смысл подумать о дополнительном поле вроде "Номер для печати"? А собственно InvoiceId формировать автоматически по номерной серии.
На InvoiceId построена ссылочная целостность. По сути, это фрагмент PrimaryKey. Как следствие, любые его изменения - это всегда риск нарушения целостности базы данных. Где-то, чего-то не досмотрели. Поэтому, по возможности, его лучше не трогать... Отдельное поле влечет за собой допиливание отчетов, построение новых индексов, а также протаскивание этого поля в некоторые формы с которыми работают пользователи (проводки, спосоставления и т.п.)... Обновление значения в одной транзакции в нескольких таблицах по специальной кнопке показалось меньшим злом. Я понимаю, что invoiceId - часть первичного ключа (и пришла же кому-то в голову идея сделать его составным, блин...), но тем не менее ключевые связи в системе все-таки идут по ваучеру и дате. Главная связка с invoiceId - Проводка по поставщику -> Накладная -> Строки накладной -> Строки фактуры. Остальные места вроде как просто сохраняют значение для удобства использования. У нас в LedgerTrans нет поля Invoice. |
|
Теги |
как правильно |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|