17.03.2004, 15:04 | #1 |
Участник
|
Разбиение складских проводок при закупке
Есть необходимость выполнить разбиение складских проводок на форме регистрации. Стандартная кнопка отделяет от одной проводки указанное количество номенклатур. Дополнительно к этому мне нужно чтоб система генерировала новый номер партии для новой проводки по складу. Какой класс мне нужно изучить и какими методами стоит для этого воспользоваться?
|
|
17.03.2004, 15:08 | #2 |
Участник
|
Я так понимаю мне нужно найти механизм как привязать к записи таблицы InventTrans в классе InventTransSplit.run новую запись таблицы InventDim и новую запись связанную с ней в таблице InventBatch. Думаю что есть для этого стандартная функциональность, не хочется делать свою.
|
|
17.03.2004, 16:17 | #3 |
Аманд
|
В настройке номерной серии для нумерации партий (Группы нумерации) есть группа полей "распределение" состоящая из:
- вручную; - только для складских операций; - в момент физического проведения; - за количество. Варьируя этими параметрами, а также параметрами "Активации" вы можете добиться желаемого результата по формированию номера партии при регистрации. А именно: вам нужны "только для складских операций" и "в момент физического проведения". |
|
18.03.2004, 09:21 | #4 |
Участник
|
Это понятно и было настроено. Проблема в том, что номера партий генерятся только при закупке, а мне нужно чтоб номер партии генерировался на форме Регистрация при разбивке складской проводки.
|
|
18.03.2004, 11:23 | #5 |
----------------
|
Поясните
Я не очень понял.
Вы хотите автоматизировать последовательность действий пользователя 1. Открыть форму Регистрация 2. Поставить галочку автосоздание 3. На поле 'Номер партии' переход к основной таблице (в группе 'К регистрации') 4. Создание новой партии 5. Закрыть форму 'Партии' 6. Ввести нужное количество 7. Нажать 'Обработка' так? Тогда посмотрите класс InventUpd_Registered - выполняет регистрацию заданного количества на заданную аналитику. Посмотрите как он используется в форме 'Регистрация' |
|
18.03.2004, 13:49 | #6 |
Участник
|
Нет, мне нужно не это. Мне нужно следующее: при нажатии кнопки разбиение чтоб в новой проводке появлялся новый номер партии, а не копировался из проводки которую я разбиваю.
|
|
18.03.2004, 14:34 | #7 |
Участник
|
Думаю, что можно сделать так:
В классе InventSplittrans в методе update перед созданием новой строки _splitTrans.insert(NoYes::Yes); получить складскую аналитику из splitTrans и сгенерировать новый номер партии пример генерации смотри в класса InventUpd_Estimated метод updateAutoDimBatchId нужным образом его переработав. И новый код аналитики записать обратно в splitTrans. Но! Этот метод может вызываться и из других мест, так что нужно ловить именно регистрацию! Успехов |
|
18.03.2004, 14:39 | #8 |
Участник
|
Re: Разбиение складских проводок при закупке
Цитата:
Изначально опубликовано Mystery
Есть необходимость выполнить разбиение складских проводок на форме регистрации. Стандартная кнопка отделяет от одной проводки указанное количество номенклатур. Дополнительно к этому мне нужно чтоб система генерировала новый номер партии для новой проводки по складу. Какой класс мне нужно изучить и какими методами стоит для этого воспользоваться? вы случайно раньше не с торговлей работали? скорее всего то, что вы хотите сделать, в Аксапте делается при помощи лотов, а не партий. партия в аксапте - это признак физического реального мира. посмотрите на автоматическую геренацию серийных номеров. Но мне кажется, что у вас что-то с постановкой не так. Можно у вас попросить рассказать подробнее про вашу задачу? |
|
18.03.2004, 15:45 | #9 |
----------------
|
Руки прочь от InventTransSplit ! Он предназначен ТОЛЬКО для разбиение проводки!
Если вам очень надо разбить зарегистрированную проводку напишите свой класс\метод который уменьшает зарегистрированое на одной аналитике и увеличивает на другой. |
|
18.03.2004, 16:01 | #10 |
Участник
|
+++ Можно у вас попросить рассказать подробнее про вашу задачу?
Совершено верно, то что мы делаем в стандарте аксапты находится в номере палеты. Но мы не купили этот модуль и решили использовать номер партии. Еще раз опишу ситуацию. При приходе заказанной номенклатуре нужно сгенерировать проводки по складу на форме Регистрации. Скажем заказано 1000 тонн мяса. Оно приходит в 100 европаддоннах по 1 тонне каждый. Каждому подону мы приписываем номера партий. Оператор должен разбивать эти 1000 тонн на 100 проводок. В ручную разбивать используя кнопку Разбиение можно упарится, к тому же нужно генерировать номера партий, для этого оператор должен кликать на перейти к основной таблице создавать номер партии и возвращаться назад выбирать его в выпадающем списке поля номера партии. Мы сделали отдельную кнопку разбиения на партии и реализовали в ней весь механизм класса InventTransSplit. В нашем классе (M046_InventTransSplit) в методе main переписали вызов метода run следующим образом: PHP код:
Это все работает прекрасно. Но нам дополнительно нужно чтоб в новых проводках номера партии были новыми, а не копировались из разбиваемой проводки. |
|
18.03.2004, 16:53 | #11 |
----------------
|
Вот небольшой кусок, который создаст новую партию и аналитику
PHP код:
Где-то должно быть последние действие newInventTrans.inventDimId = tmpInventDim.InventDimId; newInventTrans.update(); кстати, в каком статусе разбиваемые проводки? |
|
18.03.2004, 19:28 | #12 |
Аманд
|
Цитата:
Вручную разбивать используя кнопку Разбиение можно упарится
Если в упомянутой группе нумерации вы определите параметр "За количество" (например =1 , т.е. одна тонна), то система разобъёт 1000 по 1 тонне, по кнопке "обработка" и сформирует на каждую тонну уникальный номер партии. Причём сама! И никаких : Цитата:
для этого оператор должен кликать на перейти к основной таблице создавать номер партии и возвращаться назад выбирать его в выпадающем списке поля номера партии
Опять же ИМХО: Axapta позволяет много чего сделать, что по своей сути не совсем верно по бизнесу. Поэтому "следует очень аккуратно подходить к настройке аналитики". (В кавычках цитата из Рук. пользователя) |
|
18.03.2004, 20:32 | #13 |
Участник
|
Цитата:
Изначально опубликовано Mystery
Совершено верно, то что мы делаем в стандарте аксапты находится в номере палеты. Но мы не купили этот модуль и решили использовать номер партии. Смотрите на автонумерацию серийных номеров. |
|
19.03.2004, 14:28 | #14 |
Участник
|
Спасибо всем кто помог, все прекрасно работает за одним маленьким исключением. Номера партий генерятся в какой-то странной нумерации (просто присваивается номер 201, 202... и так далее). Хотелось бы чтоб генерировался в стандартной функциональности для настроек, например дата + номер лота... Исследовал класс InventUpd_Estimated и метод updateAutoDimBatchId и взял кусок из него. Заменил вызов numberSeq.num() на inventNumGroup.buildNumber. Но у меня почемуто выдает при созданнии партии ее текущий номер, а не следующий. Может у меня в коде что-то не так? Привожу пример кода
PHP код:
|
|
18.09.2008, 16:34 | #15 |
Участник
|
В продолжение темы про разбиение проводок..
Возникла проблема. при обработке накладной нужно разбить проводки.
нажимаю Склад - Проводки - Функции - Разбиение. создаётся две проводки с нужным количеством. Обрабатываю накладную.. смотрю - одна проводка. в чём может быть причина. Подскажите пожалуйста... |
|
18.09.2008, 17:05 | #16 |
Moderator
|
Возможно - выставлена галка "Автоматическое добавление" в параметрах модуля управления запасами. При включении этого режима, система автоматически пытается схлопнуть подходящие складские проводки при любом обновлении данного inventTrans.
|
|