25.06.2011, 01:27 | #1 |
Участник
|
Номер ваучера при програмном создании журнала
AX2009:
Нужно создать програмно создать строку журнала ledgerJournalTrans. Использую CreditCardPaymentJournal->createJournal() как пример, но смущает, что для номер ваучера не вызывается used(). Ваучер в данном примере создается в вызове PHP код:
Корректно ли использовать приведенный выше пример для создания строк журнала или могут быть потом проблемы с дупликатами строк журналов (т.е ошибка "Номер операции уже использован на дату ..")? |
|
25.06.2011, 11:17 | #2 |
Участник
|
Посмотрите класс TutorialJournalCreateExample.
|
|
25.06.2011, 12:52 | #3 |
Участник
|
В этом классе тоже не используется used(). Вопрос - почему?
|
|
26.06.2011, 07:03 | #4 |
MCTS
|
вопрос- у вас же строка создается в каком то журнале? а если в имени журнала настроить присвоение номера операции при разноске-не поможет?
|
|
26.06.2011, 10:08 | #5 |
северный Будда
|
только так и надо делать. Ваучер - это идентификатор совершённой финансовой операции. Соответственно, в неразнесённых журналах ваучер не нужен.
__________________
С уважением, Вячеслав |
|
26.06.2011, 12:21 | #6 |
Участник
|
В идеале оно, может, и так, но система уже больше года работает с настройкой, когда выделяется номер "В связи с сальдо" и чекбокс "Выделение номеров при разноске" отключен, поэтому мне нужно убедиться, что моя модификация не нарушит работы системы.
Нужен used() при этих условиях? |
|
27.06.2011, 12:18 | #7 |
Мрачный тип
|
Цитата:
Риск получить в таком случае откорреспондированную кашу или набор проводок без корреспонденции не пугает ?
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
27.06.2011, 15:08 | #8 |
Участник
|
Настройка серийных серий - работа консультанта. Моя работа - написать корректный код.
Кто-нибудь знает ответ на поставленный вопрос? |
|
27.06.2011, 15:38 | #9 |
Moderator
|
В общем - при работе с номерными сериями, есть два режима - простой и сложный
Простой режим работает тогда, когда выделение номера в номерной серии и его использование (то есть - засовывание в поле какой-то записи какой-то таблицы) происходят в рамках одной транзакции. В момент выделения номера, новый номер пишется в таблицу NumberSequenceList, и помечается там статусом Нерешенный (Undecided). Если транзакция успешно завершается, в момент завершения все выделенные номера помечаются как используемые. Если транзакция о откатывается, то в момент отката все нерешенные номера, выделенные в рамках откатываемой транзакции, помечаются как свободные. Штатный аллокатор номеров в номерной серии, перед тем как создать новый номер из счетчика, сначала пытается реюзать свободные номера из NumberSequenceList. Сложный способ используется тогда, когда выделение и использование номера разделены по времени. В этом случае, при создании класса NumberSeq(),в конструктор передается второй параметр decideLater==true. В этом случае, где-то в своем коде, если ты (или пользователь) решил не использовать уже выделенный номер, ты должен вызвать NumberSeq::Release(), если решил использовать - numberSeq.used(). Если ты ни один из методов не вызвал, то номер будет вечно висеть в статусе Undecided, приводя к распуханию таблицы. При работе с журналом/заказом/закупкой и тп в интерактивном режиме, возможен сценарий, при котором пользователь создал запись (при этом система снегерирует новый номер в номерной серии и запишет его в поле новой записи), а потом вышел из формы без сохранения, или просто удалил запись до сохранения ее в БД. Для того чтобы отслеживать использование/неиспользование номеров, для таких форм был написан класс NumberSeqFormHandler, который обрабатывает в "сложном" режиме, выделение, пометку как использованных и освобождение номеров в номерной серии. Поскольку при программном создании строк журнала, вариант "Создали запись, захватили номер ваучера, а потом передумали и не сохранились" невозможен, то никакие used() или Release() не используются, поскольку номера будут корректно помечены как использованные или неиспользованные при успешном или неуспешном завершении транзакции "простым" механизмом. Последний раз редактировалось fed; 27.06.2011 в 15:54. |
|
|
За это сообщение автора поблагодарили: Logger (3), Ivanhoe (5), IKA (1), alex55 (1), S.Kuskov (5), someOne (3), Eloy (1). |
Теги |
number sequence, номерная серия, полезное |
|
|