Показать сообщение отдельно
Старый 15.02.2021, 20:57   #1  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
642 / 347 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Поиск NumberSequenceTable по полю Voucher
Доброго времени суток.
В АХ2012 возникла нетривиальная задача. Для финансового отдела край как стало необходимо видеть в отчете, по какой номерной серии был сгенерирован ваучер.
Т.е. на таблице VendTrans имеется Voucher с префиксом и суффиксом, например VNC######R1, и нужно найти NumberSequenceTable.Txt. По данному шифру любой сотрудник может без труда определить, что за номерная серия использовалась. В ТЗ как обычно тыкают пальцем и говорят, вот мы же смогли определить, почему ты не можешь?
Конечно можно выполнить задачу, распарсив значения ваучера, однако это будет код зависимый от данных, т.е. любой другой сотрудник, который не "в теме", создаст номерную серию по другому и у нас уже отчет не выводит корректные данные. Я уже вижу в своей базе другой пример: VNCF1######. И парсить его придется по другим правилам.
Но есть выход, к которому я пришел, через пару промежуточных таблиц я нахожу поле с описанием номерной серии (см. пример ниже). Однако, для части данных LedgerJournalTrans отсутствует. И вот в этом-то и загвоздка. Может ли кто подсказать, как еще можно добраться до номерной серии "правильным" способом?
X++:
private Name voucherDescription()
{
    NumberSequenceTable numberSequenceTable;
    LedgerJournalTrans  ledgerJournalTrans;
    LedgerJournalTable  ledgerJournalTable;

    select firstOnly Txt from numberSequenceTable
    exists join ledgerJournalTable
        where ledgerJournalTable.NumberSequenceTable == numberSequenceTable.RecId
    exists join ledgerJournalTrans
        where ledgerJournalTrans.JournalNum         == ledgerJournalTable.JournalNum
           && ledgerJournalTrans.Voucher            == vendTrans.Voucher;

    return numberSequenceTable.Txt;
}
P.S. Если что, VendTrans.JournalNum пустой для всех записей в базе.
__________________
// no comments