AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.01.2011, 11:35   #1  
Skvorcal is offline
Skvorcal
Участник
 
36 / 10 (1) +
Регистрация: 16.08.2010
Изменение номера накладной.
Коллеги, всем привет.

Бухгалтерия слезно просит функцию в накладных поставщика, позволяющую изменять номер накладной без ее отката и перепроведения (поле InvoiceId).

В связи с большим потоком документов пользователи частенько ошибаются в этом поле. По сути поле является информационным (значение в этом поле не влияет ни на суммы проводок, ни на разноску), однако для исправления ошибки приходится проводить еще две накладные, что замедляет работу девочек-автоматов и повышает вероятность дополнительных ошибок.

В ходе обследования были выявлены следующие таблицы, в которых функция должна менять значение поля: Заголовок накладной (VendInvoiceJour), Строки накладной (VendInvoiceTrans), Проводки по поставщику (VendTrans), Строки фактуры (FactureTrans_RU).

Есть ли еще в системе таблицы, в которых сохраняется номер накладной? На какие грабли можно наступить при реализации подобной функции?
Старый 20.01.2011, 11:40   #2  
CDR is offline
CDR
MCTS
MCBMSS
 
236 / 175 (6) ++++++
Регистрация: 27.11.2003
Таблица связей (VendInvoicePurchLink). Еще номер накладной точно сохраняется в складских проводках (InventTrans).
Если ведется учет ОС, то в справочнике ОС тоже сохраняется номер накладной по покупке/продаже.

По хорошему, надо бы обновлять номер также в журнал накладных (LedgerJournalTrans), если накладная создана не по закупке.

В функции стоит также учесть параметр "Проверка использованного номера накладной" в настройках модуля "Расчеты с поставщиками".
__________________
Dynamics AX Experience

Последний раз редактировалось CDR; 20.01.2011 в 11:55.
За это сообщение автора поблагодарили: Skvorcal (1).
Старый 20.01.2011, 14:17   #3  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Еще возможно EmplAdvLine_RU, правда у нас там поле DocumentNum содержит № накладной.

Последний раз редактировалось raz; 20.01.2011 в 14:19.
За это сообщение автора поблагодарили: Skvorcal (1).
Старый 20.01.2011, 14:50   #4  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,691 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Если изменение номера нужно для того, чтобы он корректно отображался в неких печатных формах, то, может быть, имеет смысл подумать о дополнительном поле вроде "Номер для печати"? А собственно InvoiceId формировать автоматически по номерной серии.

На InvoiceId построена ссылочная целостность. По сути, это фрагмент PrimaryKey. Как следствие, любые его изменения - это всегда риск нарушения целостности базы данных. Где-то, чего-то не досмотрели. Поэтому, по возможности, его лучше не трогать...
За это сообщение автора поблагодарили: Skvorcal (1).
Старый 20.01.2011, 14:51   #5  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,732 / 406 (17) +++++++
Регистрация: 23.03.2006
может просто добавить поле "Накладная поставщика"? и сделать его доступным на редактирование и выводить туда, где нужно бухгалтерии

пс уже опередили
Старый 20.01.2011, 14:52   #6  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,941 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Не надо править этот номер !
Это составная часть ключа на таблице накладных.
Если ошибетесь где нибудь - то долго разгребать последствия
Кроме того если такое делать для накладных по клиентам, то могут быть проблемы при совпадении значений.
Лучше уж завести еще одно поле InvoiceId4Print в шапке накладной и печатать в накладных его если оно заполнено, иначе печатать InvoiceId.

Это просто и безопасно.
Старый 20.01.2011, 14:59   #7  
Nikolaich is offline
Nikolaich
Участник
 
238 / 10 (1) +
Регистрация: 15.12.2004
в таблице ledgerTrans тоже есть поле invoice, по моему опыту для поставщиков это проходит (такая смена) безболезненно, а вот для клиентов я бы не стал делать
Старый 20.01.2011, 15:31   #8  
Skvorcal is offline
Skvorcal
Участник
 
36 / 10 (1) +
Регистрация: 16.08.2010
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Если изменение номера нужно для того, чтобы он корректно отображался в неких печатных формах, то, может быть, имеет смысл подумать о дополнительном поле вроде "Номер для печати"? А собственно InvoiceId формировать автоматически по номерной серии.

На InvoiceId построена ссылочная целостность. По сути, это фрагмент PrimaryKey. Как следствие, любые его изменения - это всегда риск нарушения целостности базы данных. Где-то, чего-то не досмотрели. Поэтому, по возможности, его лучше не трогать...
Думали над отдельным полем.

Отдельное поле влечет за собой допиливание отчетов, построение новых индексов, а также протаскивание этого поля в некоторые формы с которыми работают пользователи (проводки, спосоставления и т.п.)...

Обновление значения в одной транзакции в нескольких таблицах по специальной кнопке показалось меньшим злом. Я понимаю, что invoiceId - часть первичного ключа (и пришла же кому-то в голову идея сделать его составным, блин...), но тем не менее ключевые связи в системе все-таки идут по ваучеру и дате.
Главная связка с invoiceId - Проводка по поставщику -> Накладная -> Строки накладной -> Строки фактуры. Остальные места вроде как просто сохраняют значение для удобства использования.

Цитата:
Сообщение от Nikolaich Посмотреть сообщение
в таблице ledgerTrans тоже есть поле invoice, по моему опыту для поставщиков это проходит (такая смена) безболезненно, а вот для клиентов я бы не стал делать
У нас в LedgerTrans нет поля Invoice.
Старый 20.01.2011, 15:45   #9  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,691 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Понимаете, если Вы забыли "протащить" новое поле в отчет или форму, то это сразу видно. Пользователи тут же напомнят

А вот если Вы забудете модифицировать поле в какой-либо таблице, то это может "всплыть" очень не скоро. Сразу-то этого не видно! Никто и не вспомнит! При этом исправление может оказаться невозможным.

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

Другими словами, новое поле - сложнее в исполнении, но проще в сопровождении. А транзакция относительно проста в исполнении, но крайне сложна в сопровождении.
Теги
как правильно

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Накладные без номера накладной petr DAX: Функционал 15 26.09.2013 14:03
Спецификации. Изменение номера операции после сброса статуса petr DAX: Функционал 3 15.01.2008 12:47
Новые счета в разноске в 3 SP Alex_R2 DAX: База знаний и проекты 13 22.06.2006 15:36
Изменение даты накладной при ее обработке Valery DAX: Функционал 4 30.03.2005 20:31
Изменение обработанной накладной Bobkov DAX: Функционал 11 09.08.2003 16:08
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 22:31.