15.02.2021, 20:57 | #1 |
Участник
|
Поиск 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; }
__________________
// no comments |
|
15.02.2021, 21:59 | #2 |
Участник
|
Посмотрите как работает кнопка Исходный документ из бухгалтерских проводок. Какой именно ваучер будет выделяется определяется именно исходным документом. Найдёте исходный документ - найдёте номерную серию
|
|
16.02.2021, 01:41 | #3 |
Участник
|
По-моему, все-равно парсить придется. Есть уже готовый метод, который слегка допилить под свою задачу (добавить параметр, чтобы без сообщений только true/false возвращал)
NumberSeq::numCheckFormat() Ну и в цикле все (или только избранные) записи NumberSequenceTable прогнать до первой попавшейся, удовлетворяющей условиям
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: trud (1). |
16.02.2021, 07:10 | #4 |
Мрачный тип
|
Дичь и блажь какие-то
Что такого информационно важного и функционально значимого, кроме функции генерации идентификатора операций определенного типа, может быть завязано на номерную серию и генерируемые ей значения ?
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|