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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.04.2009, 11:48   #1  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Nav 4

Нужно отследить сколько по конкретной закупке остается товара. После покупки могут производится перемещения со одного склада на другие ,а потом обратно. И в этом перемещении может быть товар с из другой закупки. Я отслеживаю с\с товаров при перемещении и отсеиваю не нужное кол-во. Проблема состоит в том, что в одном перемещении могут быть товары из разных закупок, но с одинаковыми с\с и тогда отследить из какой конкретной закупки ушел этот товар не получается.
Старый 07.04.2009, 11:57   #2  
Alterant is offline
Alterant
Участник
 
378 / 10 (1) +
Регистрация: 31.03.2004
Можно по операциям применения. Перемещения не суммируют операции (положительные), а переносят их как есть с одного склада на другой, поэтому информация не теряется, отследить можно.
У меня была такая задача, я решил ее добавлением поля в ILE, подстановкой туда номера документа для независимых положительных операций и протягивания этого поля для зависимых положительных операций (перемещений). Анализ в этом случае делается по полю "Остаток Кол-во". Проблемы будут только когда было списание с нескольких положительных операций, а потом решили сделать точный полный или частичный возврат - здесь нужны более серьезные доработки для точного указания применения (не только номера операции, но еще и конкретного прихода).
Старый 07.04.2009, 12:42   #3  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Цитата:
Сообщение от Alterant Посмотреть сообщение
Можно по операциям применения.
+1

а трассировки у вас случаем нет?
Старый 07.04.2009, 17:57   #4  
romtex_imported is offline
romtex_imported
Участник
 
66 / 10 (1) +
Регистрация: 06.12.2005
Если требуются остатки на конкретную дату, а не на сегодня, то строить отчет на поле "Остаток кол-во" нельзя
Построить такой отчет можно без доп. полей, но правда работать он будет достаточно долго.
По каждому товару нужно создать темповую товар книгу, куда изначально сложить интересующие операции покупки,
затем по отрицательным операциям(не перемещениям) по этому товару найти исходную операцию (функция ниже), если она совпадает с одной из интересующих операций покупки, то в темптаблице уменьшить кол-во. Ну и затем показать все что осталось в темповой таблице.
Дополнительных полей создавать не требуется, учет переделывать тоже не нужно.
Да, это не будет работать, если учет по средней.

Код:
GetIncomingOperation(EntryNo : Integer) IncomingEntry : Decimal
ItemLedgerEntry.GET(EntryNo);
IF ItemLedgerEntry."Entry Type" = ItemLedgerEntry."Entry Type" :: Transfer THEN
  BEGIN
   ItemAppEntry.RESET;
   ItemAppEntry.SETRANGE("Item Ledger Entry No.",EntryNo);
   IF ItemAppEntry.FIND('-') THEN IncomingEntry := GetIncomingOperation(ItemAppEntry."Transferred-from Entry No.");
  END
 ELSE IncomingEntry := EntryNo;
Старый 07.04.2009, 18:54   #5  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Цитата:
Сообщение от romtex Посмотреть сообщение
Если требуются остатки на конкретную дату, а не на сегодня, то строить отчет на поле "Остаток кол-во" нельзя
Построить такой отчет можно без доп. полей, но правда работать он будет достаточно долго.
По каждому товару нужно создать темповую товар книгу, куда изначально сложить интересующие операции покупки,
затем по отрицательным операциям(не перемещениям) по этому товару найти исходную операцию (функция ниже), если она совпадает с одной из интересующих операций покупки, то в темптаблице уменьшить кол-во. Ну и затем показать все что осталось в темповой таблице.
Дополнительных полей создавать не требуется, учет переделывать тоже не нужно.
Да, это не будет работать, если учет по средней.

Код:
GetIncomingOperation(EntryNo : Integer) IncomingEntry : Decimal
ItemLedgerEntry.GET(EntryNo);
IF ItemLedgerEntry."Entry Type" = ItemLedgerEntry."Entry Type" :: Transfer THEN
  BEGIN
   ItemAppEntry.RESET;
   ItemAppEntry.SETRANGE("Item Ledger Entry No.",EntryNo);
   IF ItemAppEntry.FIND('-') THEN IncomingEntry := GetIncomingOperation(ItemAppEntry."Transferred-from Entry No.");
  END
 ELSE IncomingEntry := EntryNo;
Спасиб. Я почти так же сделал!
 


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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:47.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.