17.08.2004, 17:27 | #1 |
Участник
|
Баг, связанный с функциональностью договоров
Добрый день! Недавно пользователи неумышленно нашли в Аксапте небольшой прокол. Последовательность действий, которая приводит к этому, следующая:
- заполняется справочник договоров по каждому клиенту; - создается новый заказ на клиента, вводится информация о договоре (вкладка "Разное", группа полей "Договор"); - через некоторое время пользователь решает повесить созданный заказ на другого клиента, меняет код, но забывает поменять договор; - заказ благополучно сохраняется с некрректной информацией по договору; - накладная и проводки сопоставления с оплатой также благополучно создаются на несуществующий договор по данному клиенту; Полученным результатом можно полюбоваться в "оборотно-сальдовой ведомости"... Но как его корректно исправить? Через общий журнал не получается, т.к. нет такого договора у клиента. Как вариант - править напрямую таблицы CustTrans и CustInvoiceJour. На тестовой базе это ошибок не вызвало, но я все равно не уверен в правильности данного подхода. Насколько глубоко функционал договоров проник в аксапту? |
|
17.08.2004, 17:51 | #2 |
Гость
|
>>Как вариант - править напрямую таблицы CustTrans и CustInvoiceJour. На тестовой >>базе это ошибок не вызвало, но я все равно не уверен в правильности данного >>подхода. Насколько глубоко функционал договоров проник в аксапту?
По-моему это единственный вариант. Еще надо поправить LedgerJournalTrans, там тоже есть ссылка на договоры. В принципе, договоры используются лишь в паре-тройке отчетов по клиентам, бухгалтерские проводки они не трогают.... Так что все на уровне этих таблиц. P.S. Можно перед разноской заказа (закупки) сделать проверку на правильность ввода договоров, в случае чего выдавать ошибку пользователям. |
|
17.08.2004, 18:02 | #3 |
Участник
|
Не могу повторить Вашу ситуацию. При смене Клиента в Заказе (замене полей Код клиента и Счет на) и сохранении Заказа с новым клиентом поля договора автоматически очищаются. Заказ обрабатывается вообще без Договора. Получается ситуация, что оператор вообще не ввел Договор
Ax3.0 SP2. Что у Вас за доработки? Какие действия и где выполняют операторы?
__________________
ИМХО. С уважением, Владимир Ю. |
|
17.08.2004, 18:26 | #4 |
Участник
|
2 DD
Спасибо за помощь и моральную поддержку! Всякий раз, когда заходит речь о непосредственном вмешательстве во внутренности Аксапты, я не могу принять однозначное решение... В данном случае процедура прошла успешно. PS. Насчет проверки - это первое, что я сделал, как только обнаружил ошибку. Иначе можно превратиться в живой сторнирующий механизм для Аксапты. |
|
17.08.2004, 18:36 | #5 |
Участник
|
2 Владимир Ю.
У нас Axapta 3 SP3. На всякий случай проверил на базовом функционале - при изменении кода клиента договор не изменяется и не обнуляется, увы. |
|
17.08.2004, 18:48 | #6 |
Участник
|
2 Владимир Ю.
Кажется разобрался почему у нас разные результаты. Если корректировать код клиента на первой вкладке "Обзор" , то договор не обнуляется. Если же корректировать это поле на второй вкладке, то он обнуляется. |
|
17.08.2004, 18:49 | #7 |
Участник
|
Тогда не знаю, что и сказать. Что-то неординарное получается.
Меняете два поля: Код клиента и Счет на? В списке Заказов или на закладке Разное?
__________________
ИМХО. С уважением, Владимир Ю. |
|
17.08.2004, 20:28 | #8 |
Member
|
Точно, не меняется. 3.0 сп3 СНГ. Без хотфиксов.
При изменении поля Счет на договора обнуляются. При изменении поля Счет программно меняется поле Счет на, но договора уже не обнуляются. Спрсите у тех, кто ставил хотфиксы, может там поправили. Или сами сделайте.
__________________
С уважением, glibs® |
|
18.08.2004, 10:13 | #9 |
Участник
|
Самое интересное, что в датасорсе SalesTable на поле CustAccount висит метод modified следующего содержания:
X++: public void modified() {; super(); // Valu RContract --> if (RContractTable::findPartnerCode(RContractPartnerType::Cust, salesTable.RcontractCode, salesTable.RContractAccount, RContractStatus::Active, salesTable.InvoiceAccount).recId == 0) { salesTable.RContractAccount = ""; salesTable.RContractCode = ""; } // Valu RContract <-- salesTable.transferCustAccount(); } |
|