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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.06.2011, 01:27   #1  
IKA is offline
IKA
Участник
 
359 / 65 (3) ++++
Регистрация: 15.03.2006
Номер ваучера при програмном создании журнала
AX2009:
Нужно создать програмно создать строку журнала ledgerJournalTrans.

Использую CreditCardPaymentJournal->createJournal() как пример, но смущает, что для номер ваучера не вызывается used().
Ваучер в данном примере создается в вызове
PHP код:
ledgerJournalEngine.initValue(ledgerJournalTrans
Норменая серия у нас для номера ваучера непрерывная. Журнал будет разноситься не сразу после програмного создания, а уже после, пользователем.

Корректно ли использовать приведенный выше пример для создания строк журнала или могут быть потом проблемы с дупликатами строк журналов (т.е ошибка "Номер операции уже использован на дату ..")?
Старый 25.06.2011, 11:17   #2  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
Посмотрите класс TutorialJournalCreateExample.
Старый 25.06.2011, 12:52   #3  
IKA is offline
IKA
Участник
 
359 / 65 (3) ++++
Регистрация: 15.03.2006
В этом классе тоже не используется used(). Вопрос - почему?
Старый 26.06.2011, 07:03   #4  
ashu is offline
ashu
MCTS
MCBMSS
 
255 / 78 (3) ++++
Регистрация: 24.06.2008
вопрос- у вас же строка создается в каком то журнале? а если в имени журнала настроить присвоение номера операции при разноске-не поможет?
Старый 26.06.2011, 10:08   #5  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,510 / 435 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Цитата:
Сообщение от ashu Посмотреть сообщение
а если в имени журнала настроить присвоение номера операции при разноске
только так и надо делать. Ваучер - это идентификатор совершённой финансовой операции. Соответственно, в неразнесённых журналах ваучер не нужен.
__________________
С уважением,
Вячеслав
Старый 26.06.2011, 12:21   #6  
IKA is offline
IKA
Участник
 
359 / 65 (3) ++++
Регистрация: 15.03.2006
В идеале оно, может, и так, но система уже больше года работает с настройкой, когда выделяется номер "В связи с сальдо" и чекбокс "Выделение номеров при разноске" отключен, поэтому мне нужно убедиться, что моя модификация не нарушит работы системы.

Нужен used() при этих условиях?
Старый 27.06.2011, 12:18   #7  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
886 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Цитата:
Сообщение от pitersky Посмотреть сообщение
Ваучер - это идентификатор совершённой финансовой операции.Соответственно, в неразнесённых журналах ваучер не нужен
Журнал из N операций. Каждая операция - сложная.
Риск получить в таком случае откорреспондированную кашу или набор проводок без корреспонденции не пугает ?
__________________
Мы летаем, кружимся, нагоняем ужасы ...
Старый 27.06.2011, 15:08   #8  
IKA is offline
IKA
Участник
 
359 / 65 (3) ++++
Регистрация: 15.03.2006
Настройка серийных серий - работа консультанта. Моя работа - написать корректный код.
Кто-нибудь знает ответ на поставленный вопрос?
Старый 27.06.2011, 15:38   #9  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,909 / 5730 (197) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
В общем - при работе с номерными сериями, есть два режима - простой и сложный
Простой режим работает тогда, когда выделение номера в номерной серии и его использование (то есть - засовывание в поле какой-то записи какой-то таблицы) происходят в рамках одной транзакции. В момент выделения номера, новый номер пишется в таблицу 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, номерная серия, полезное

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Счет фактура по строке общего журнала Starling DAX: Функционал 2 28.09.2011 18:31
ОС: Ошибка при создании строк журнала ввода в эксплуатацию через групповую операцию USTA DAX: Функционал 1 14.05.2009 15:55
Ошибка при создании журнала ega DAX: Администрирование 8 14.04.2008 09:06
Ошибка при создании журнала заверш. маршрута WMP DAX: Функционал 1 23.08.2006 09:22
3.0, Модуль: ОС, операция: Разноска строк журнала ОС (с предварит просм проводок) MagisterLudi DAX: Функционал 2 07.10.2003 18:55

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

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

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