|   |   | 
| 
 | Небольшой вопрос по реализации списания партий. ↓ (Лефмихалыч 15.03.2013 12:05) | ☑ | ||
|---|---|---|---|---|
| 0
    
        SeiOkami 15.03.13✎ 10:52 | 
        Здравствуйте все!
  Это простенькая самописка. У меня вопросик по реализации списания партий. Мне интересно, как это сделать лучше и оптимальней. Так сказать "по правильному" =) Имеется учетная политика (ФИФО или ЛИФО). Имеются документы Приходники. Это и есть документы партий. Имеются документы Расходники, которые эти партии и списывают. В расходниках можно указать в ТЧ документ партии (приходник) и тогда списание должно быть сначала по этой партии, а затем уже (если не хватает) по другим партиям с учетом учетной политики, установленной на текущий период. Как это правильно организовать? Загвоздка именно в списании сначала по партиям с документов в ТЧ, а потом других. P.S.: Не надо сразу тупыми комментами закидывать. Как попало я бы уже это сделал. Мне интересно метод, который был бы "истинно верным" =) | |||
| 1
    
        Лефмихалыч 15.03.13✎ 10:56 | 
        А с допрасходами вопросов не возникло что ли?     | |||
| 2
    
        SeiOkami 15.03.13✎ 10:56 | 
        (1), Что?     | |||
| 3
    
        Лефмихалыч 15.03.13✎ 10:58 | 
        (2) вероятно я обознался     | |||
| 4
    
        Defender aka LINN 15.03.13✎ 10:58 | 
        (1) Он еще не дочитал :)     | |||
| 5
    
        SeiOkami 15.03.13✎ 11:12 | 
        Есть какие нибудь предложения?
  Понятно, мне чистый код не нужен) Просто знать сам "алгоритм" =) | |||
| 6
    
        Лефмихалыч 15.03.13✎ 11:14 | 
        (5) правильно - одним запросом     | |||
| 7
    
        SeiOkami 15.03.13✎ 11:22 | 
        (6) тоже так подумал, но не вникну, как в этом запросе учитывать уже списанную номенклатуру из партий в ТЧ (     | |||
| 8
    
        Лефмихалыч 15.03.13✎ 11:25 | 
        (7) а не надо это учитывать. Это оычный почти запрос для получения партий, просто партии должны быть отсортированы сначала по приоритету, а уже потом по учетной политике. Процедура списания такая же, как по простому фифо/либо в том порядке, в котором партии отсортировались в запросе     | |||
| 9
    
        SeiOkami 15.03.13✎ 11:29 | 
        (8), а что выйдет, если мы сначала списали номенклатуру из партии, которая в ТЧ, а затем, в попытке "добора" не достающего количества спишем из этой же партии повторно?     | |||
| 10
    
        Лефмихалыч 15.03.13✎ 11:32 | 
        (9) такого быть не должно и не может. В выборке партий у тебя одна партия должна встречаться один и только один раз.     | |||
| 11
    
        SeiOkami 15.03.13✎ 11:38 | 
        Т.е. что-то вроде этого?
  ВЫБРАТЬ РасходнаяНакладнаяТовары.Номенклатура, СУММА(РасходнаяНакладнаяТовары.Количество) КАК Количество, РасходнаяНакладнаяТовары.ДокументПартии ПОМЕСТИТЬ ТоварыКСписанию ИЗ Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары ГДЕ РасходнаяНакладнаяТовары.Ссылка = &Ссылка И НЕ РасходнаяНакладнаяТовары.Номенклатура.Услуга СГРУППИРОВАТЬ ПО РасходнаяНакладнаяТовары.Номенклатура, РасходнаяНакладнаяТовары.ДокументПартии ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТоварыКСписанию.Номенклатура КАК Номенклатура, ТоварыКСписанию.Количество КАК КоличествоСписать, ОстаткиНоменклатурыОстатки.ДокументПартии, ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоОстатокПартии, ВЫБОР КОГДА ТоварыКСписанию.ДокументПартии = ОстаткиНоменклатурыОстатки.ДокументПартии ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК ПартияИзТЧ ИЗ ТоварыКСписанию КАК ТоварыКСписанию ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки( &ДатаДокумента, Номенклатура В (ВЫБРАТЬ ТоварыКСписанию.Номенклатура ИЗ ТоварыКСписанию КАК ТоварыКСписанию)) КАК ОстаткиНоменклатурыОстатки ПО ТоварыКСписанию.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура УПОРЯДОЧИТЬ ПО ПартияИзТЧ УБЫВ, ОстаткиНоменклатурыОстатки.ДокументПартии.Дата ИТОГИ ПО Номенклатура | |||
| 12
    
        Лефмихалыч 15.03.13✎ 11:39 | 
        (11) что-то вроде, только работающее     | |||
| 13
    
        SeiOkami 15.03.13✎ 11:41 | 
        Понятно, буду пробовать. Спасибо =)     | |||
| 14
    
        Лефмихалыч 15.03.13✎ 11:51 | 
        Кстати, смысл этого задания в его самостоятельном решении     | |||
| 15
    
        SeiOkami 15.03.13✎ 11:56 | 
        (14), конечно, я не спорю. Я и не хотел, чтобы мне написали решение. Просто просил совета. А то я бы тут запрос сейчас нагромоздил... =)     | |||
| 16
    
        Defender aka LINN 15.03.13✎ 11:57 | 
        (15) Ты бы посмотрел, у кого ты его спросил :)))     | |||
| 17
    
        SeiOkami 15.03.13✎ 11:59 | 
        Упс, тогда всё ясно)     | |||
| 18
    
        Baracus 15.03.13✎ 12:00 | 
        (17), как думаешь, перезвонят?:)     | |||
| 19
    
        SeiOkami 15.03.13✎ 12:02 | 
        (18), ну дело не в этом. Мне то самому интересно как эту задачку наикрасивейши решить. А остальное уже на втором плане)     | |||
| 20
    
        TarasKa 15.03.13✎ 12:03 | 
        (18) Почему бы и нет, если решит хорошо =)
  P.S. Какое-то Тандер-пати получилось))) | |||
| 21
    
        Baracus 15.03.13✎ 12:03 | 
        (19) Волчья мудрость :)     | |||
| 22
    
        Poysoner 15.03.13✎ 12:04 | 
        (20) Карпаратиффка)     | |||
| 23
    
        Лефмихалыч 15.03.13✎ 12:04 | 
        (20) ага, не хватает только представителей сопровождения     | |||
| 24
    
        Джинн 15.03.13✎ 12:29 | 
        (0) Добавить в набор списываемых партий реквизит Приоритет. Для указанной партии приоритет 0. Для остальных 1. Сортировка Приоритет-ДатаПартии. Списываем последовательно.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |