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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.11.2013, 10:12   #1  
Phoenix78 is offline
Phoenix78
Участник
 
33 / 15 (1) ++
Регистрация: 11.07.2008
Пакетная обработка (повторное создание)
Всем добрый день.
Есть Аксапта 3. Выполняем обработку накладной с помощью пакетного задания. Подскажите, есть ли стандартный способ запретить повторное создание пакета? Если нет стандартного, то каким образом можно узнать, что такой пакет уже существует? Смотрел на табличку Batch - ничего подходящего не увидел..
Старый 05.11.2013, 14:04   #2  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Вообще, правильно смотрите. Просто придется ручками допиливать, чтобы запись с каким-то конкретным классом была в единственном экземпляре. Если у вас кастомный класс обрабатывает накладную, попробуйте использовать шаблон Singleton.
__________________
// no comments
Старый 05.11.2013, 14:11   #3  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,731 / 406 (17) +++++++
Регистрация: 23.03.2006
Для чего хотите запретить создание пакета? если дело касается только разноски накладной и думаете, что она может повторно разнестись, то это не так
Старый 05.11.2013, 15:36   #4  
Phoenix78 is offline
Phoenix78
Участник
 
33 / 15 (1) ++
Регистрация: 11.07.2008
Да она с ошибками вываливается, если повторно пытается обрабатываться.. И приходится разбираться - это ошибки конфигурации или потому что второй раз пытаются обрабатывать..

Ну или производная задача - пользователи хотят видеть, по какому заказу они обработали накладную (создали пакет). Может есть решение такой задачи?
Старый 05.11.2013, 16:03   #5  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Без программирования наверное никуда.

В табличке Batch есть поле типа Parameters - куда записываются параметры запуска операции переданные через pack(), т.е. чтобы добраться до параметров запуска и проверить нужный вам заказ, потребуется проделать примерно следующее :

1. Выбрать все записи из Batch с типом ожидание(дополнительно можно отфильтровать записи по полю ClassNumber).
2. Для каждой такой записи извлечь из Batch.Parameters поле ParmId, найти запись в таблице SalesParmTable и проверить не ваш ли заказ там находится.

А так в случае, если у вас как правило разносится один заказ, то можно сделать вот, что(чтобы быстро проверять есть ли уже заказ в пакете или нет) :

1. Добавить пару полей RefTableId, RefRecId в табличку Batch.
2. Перекрыть метод initBatch(метод runBaseBatch, специально сделанный для инициализации доп. параметров пакета) в классе SalesFormLetter_Invoice и записать ссылку на заказ.
3. Добавить проверку куда-нибудь в разноску накладной, которая бы проверяла существование пакета.
__________________
Sergey Nefedov
Старый 05.11.2013, 16:19   #6  
Phoenix78 is offline
Phoenix78
Участник
 
33 / 15 (1) ++
Регистрация: 11.07.2008
Спасибо всем за ответы!

Сергей, Вам особенно благодарен за подробный ответ. Попробую реализовать.
Только уточнить хотел - в Parameters лежит контейнер же? В нем ищем ParmId.. Все верно?
Старый 05.11.2013, 16:25   #7  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Да, в parameters лежит контейнер, в нем на какой-то позиции должно находиться значение ParmId(самую позицию можно посмотреть в методе pack, который вызывается при вставке в пакет данных по обработке накладной).
__________________
Sergey Nefedov
За это сообщение автора поблагодарили: Phoenix78 (1).
Старый 06.11.2013, 06:29   #8  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Цитата:
Сообщение от Phoenix78 Посмотреть сообщение
Сергей, Вам особенно благодарен за подробный ответ
Ставьте плюсик
__________________
// no comments
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
aEremenko: Пакетная обработка в AX 2009 Blog bot DAX Blogs 4 28.09.2010 15:36
как работает пакетная обработка mmmax DAX: Функционал 29 10.12.2008 10:02
Не работает пакетная обработка dreamer DAX: Программирование 4 19.12.2007 10:43
Пакетная обработка ax_f DAX: Функционал 6 25.10.2004 12:58
Пакетная обработка. Период. задания накапливаются. Как? VadimVN DAX: Функционал 2 20.04.2004 10:23
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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